gpt4 book ai didi

ios - 如何创建具有不同纹理的 SCNNode 的新实例

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:01 25 4
gpt4 key购买 nike

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

我具体做的是在我的 3d 编辑器中绘制一张王牌,并将其导出到 COLLADA。现在我有 52 张王牌面孔 png - 显然我需要替换新王牌实例的面孔。

最佳答案

看来该数组中 Material 的顺序(非常)重要。如果我将具有更新纹理的新 Material 插入与我删除的相同的数组索引中,本质上是进行替换,那么纹理将显示在正确的面上并且不会颠倒 - 即它们以与以下相同的方式显示与源 SCNNode。我还没有运行更长的时间来查看它是否始终如一地工作。

关于ios - 如何创建具有不同纹理的 SCNNode 的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25238665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com