为SceneKit或ARKit提供动态纹理API

3
使用ARKit/SceneKit是否可以在程序中动态地为DAE/SCN模型贴上纹理呢?
使用场景是:我将有一个模型,我想用可能数千个类似但不同的纹理来“皮肤”它。 我可以选择:
- 提前为模型贴上纹理,并强制我的应用程序或后端托管数千个笨重的纹理模型文件(它们都使用相同的较重3D模型/网格文件,并将其与不同的轻量级2D纹理文件组合); 或者 - 允许我的应用程序/后端搭配一个笨重的3D网格/模型文件和数千个轻量级的2D纹理文件,然后使用一些SceneKit/ARKit API在内存中动态地将正确的纹理应用于模型。 这种动态贴图功能是否可行?如果可以,如何实现?如果不能,那么为什么(好奇!)?
2个回答

2
是的,在运行时更改3D对象的纹理图像是几乎所有高级3D引擎(包括SceneKit)的基本功能。
简而言之,找到要更改的材质,并将其diffuse设置为您想要使用的纹理图像.contents
要更全面地了解材料,请阅读SceneKit文档,或者回顾介绍SceneKit基础知识的20132014年的WWDC视频。

1
当然,您可以通过编程更改模型的纹理。只需将纹理图像分配给分配给几何体的SCNMaterial的.diffuse.contents属性即可。例如:yourModel.firstMaterial.diffuse.contents = someImage 此外,“类似但不同”的纹理听起来像是着色器的工作。使用SceneKit shaderModifiers,您可以利用GPU的处理能力,在飞行中修改纹理图像,具有无限的可能性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接