【发布时间】:2014-10-04 00:13:19
【问题描述】:
我将 COLLADA 文件中的网格加载到 SceneKit 中。假设我有一个立方体,其材质具有一定的纹理。然后在代码中,我想制作这个 SCNNode 的新副本——到目前为止我已经使用了clone——然后我需要设置一个新的纹理。这就是问题所在,因为如果我获得其中一个克隆立方体的命名材质并更新其纹理 (thematerialofmycube.diffuse.contents = @"somefile.png"),将为立方体的所有实例设置相同的纹理。 clone 显然不会深度复制几何、材质和纹理等内容。所以我尝试的是制作几何体本身的副本,并尝试制作新材质,为新材质设置新纹理,并将该材质添加到新几何体的材质数组中,同时移除旧材质.似乎没有直接的方法可以这样做(材料被命名,但存在于一个数组中,因此理论上几种材料可以具有相同的名称 - 这会导致从数组中添加/删除一些庞大的对象),以及何时我这样做了,新的纹理出现了,但它们倒置了,而且材料的顺序似乎不正确,因为我用“背面”纹理代替了正面纹理,反之亦然。我希望我不必在我的 3d 编辑器中绘制所有这些东西,一定有一种很好的方法可以在代码中创建具有任意指定纹理的新实例。
我具体做的是在我的 3d 编辑器中画了一张王牌,并将其导出到 COLLADA。现在我有 52 个 png 的王牌面孔 - 我显然需要替换新的王牌实例的面孔。
【问题讨论】: