2017-10-12 94 views
1

ARKit/SceneKit是否可以通过编程方式纹理化DAE/SCN模型?SceneKit或ARKit的动态纹理API

使用案例是:我将有1个模型,我想“皮肤”可能有数千个类似但又不同的纹理。我可以:

  • 纹理提前模型,并迫使无论是我的应用程序或我的后端容纳成千上万的庞大的纹理模型文件(都使用相同的较重的3D模型/网格文件和每个结合起来一个不同的更轻的2D纹理文件);或
  • 允许我的应用程序/后端随附1个重/体积较大的3D网格/模型文件和数千个较轻的2D纹理文件,然后使用一些SceneKit/ARKit API将正确的纹理应用于模型内存中,动态的

这是动态纹理功能吗?如果是这样,怎么样?如果没有,那么为什么(好奇!)?

回答

2

是的,在运行时更改3D对象的纹理图像是几乎所有高级3D引擎(包括SceneKit)的基本功能。

简而言之,找到您想要更改的材质,并将其diffuse.contents设置为您要使用的纹理图像。

为了更透彻的理解,请阅读SceneKit documentation中的材料,或返回介绍SceneKit基础的20132014的WWDC视频。

1

是的,当然,您可以通过编程方式更改模型的纹理。只需将纹理图像分配给分配给几何体的SCNMaterial的.diffuse.contents属性即可。即yourModel.firstMaterial.diffuse.contents = someImage

此外,“类似但不同”的纹理听起来像着色器的工作。使用scenekit shaderModifiers,您可以通过使用GPU的处理能力来动态修改纹理图像,并具有无限的可能性。