2017-10-12 104 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的處理能力來動態修改紋理圖像,並具有無限的可能性。