Ios SceneKit或ARKit的动态纹理API
ARKit/SceneKit是否可以通过编程方式动态地对DAE/SCN模型进行纹理处理 用例是:我将有一个模型,我想“皮肤”与潜在的数千个相似但不同的纹理。我可以:Ios SceneKit或ARKit的动态纹理API,ios,swift,textures,scenekit,arkit,Ios,Swift,Textures,Scenekit,Arkit,ARKit/SceneKit是否可以通过编程方式动态地对DAE/SCN模型进行纹理处理 用例是:我将有一个模型,我想“皮肤”与潜在的数千个相似但不同的纹理。我可以: 提前对模型进行纹理处理,并强制我的应用程序或我的后端托管数千个庞大的纹理模型文件(它们都使用相同的较重3D模型/网格文件,并且每个文件都与不同的较轻2D纹理文件相结合);或 允许我的应用程序/后端附带1个沉重/笨重的3D网格/模型文件和数千个较轻的2D纹理文件,然后使用一些SceneKit/ARKit API动态地将正确的纹理应用
- 提前对模型进行纹理处理,并强制我的应用程序或我的后端托管数千个庞大的纹理模型文件(它们都使用相同的较重3D模型/网格文件,并且每个文件都与不同的较轻2D纹理文件相结合);或
- 允许我的应用程序/后端附带1个沉重/笨重的3D网格/模型文件和数千个较轻的2D纹理文件,然后使用一些SceneKit/ARKit API动态地将正确的纹理应用于内存中的模型
这种动态纹理能力可能吗?如果是,怎么做?如果没有,那么为什么(奇怪!)?是的,当然可以通过编程更改模型的纹理。只需将纹理图像指定给指定给几何体的SCN材质的.diffuse.contents属性。例如,yourModel.firstMaterial.diffuse.contents=someImage
此外,“相似但不同”的纹理听起来像是着色器的工作。使用scenekit ShaderModifier,您可以使用GPU的处理能力动态修改纹理图像,可能性无穷。是的,在运行时更改3D对象的纹理图像是几乎所有高级3D引擎的基本功能,包括scenekit 简而言之,找到要更改的材质,并将其
漫反射设置为要使用的纹理图像
要获得更透彻的理解,请阅读中的资料,或返回和中介绍SceneKit基础知识的WWDC视频