用于 SceneKit 或 ARKit 的动态纹理 API



是否可以使用 ARKit/SceneKit 以编程方式即时对 DAE/SCN 模型进行纹理处理?

用例是:我将有 1 个模型,我想用可能数千种相似但不同的纹理"皮肤"。我可以:

    提前对模型
  • 进行纹理处理,并强制我的应用程序或后端托管数千个庞大的纹理模型文件(所有文件都使用相同的较重的3D模型/网格文件,每个文件都将其与不同的较轻的2D纹理文件组合在一起);或
  • 允许我的应用/后端附带 1 个笨重/笨重的 3D 网格/模型文件和数千个较轻的 2D 纹理文件,然后使用一些 SceneKit/ARKit API 将正确的纹理即时应用于内存中的模型

这种动态纹理能力是否可行?如果是这样,如何?如果没有,那为什么(好奇!

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

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

要更全面地了解,请阅读 SceneKit 文档中的资料,或返回 2013 年和 2014 年的 WWDC 视频,这些视频介绍了 SceneKit 的基础知识。

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

此外,"相似但又不同"的纹理听起来像是着色师的工作。使用 scenekit 着色器修改器,您可以使用 GPU 的处理能力即时~即时修改纹理图像,具有无限的可能性。

最新更新