在 Blender 中创建的 3D 模型上使用材质
Posted
技术标签:
【中文标题】在 Blender 中创建的 3D 模型上使用材质【英文标题】:Using materials on 3D models created in Blender 【发布时间】:2016-11-23 08:58:13 【问题描述】:我想制作一个无法使用 SceneKit 内置几何模型构建的形状,因此我想为此使用一些其他 3D 建模程序。如果这些模型(例如在 Blender 中创建)可以充当可以直接在 SceneKit 中创建的模型,我很感兴趣。我希望能够在代码中应用材料并更改对象的颜色,并且想提前知道导入模型是否可以实现。
我知道我可以将模型导出为 .dae(Collada 文件),这样我肯定可以使用模型,但不能更改其材料。
如果可以以其他方式更改它,如果您能简要说明应如何从 Blender 导出对象(以哪种格式),我将不胜感激。
【问题讨论】:
【参考方案1】:实际上是的,您可以更改 Collada (dae) 格式的材料。
材料包含在SCNMaterial
类中。
您可以使用以下方法访问材料:
首先,您可能有最简单的材料访问方法:
SCNNode.geometry.firstMaterial
此方法为您提供对象正在使用的第一种材料。
接下来您可以访问全部材料:
SCNNode.geometry.materials
此方法为您提供一个NSArray
,其中包含对象正在使用的所有材料。
那么你终于拥有了好名字了:
[SCNNode.geometry.materialWithName: NSString]
此方法为您提供一个 NSArray
,其中包含对象正在使用的所有材料。
在苹果文档中:
SCNNode.geometry
是什么?找出here
材料access 和manipulation。
附注:
要实际控制SCNMaterial
的颜色/图像,您需要使用SCNMaterialProperty
一个SCNMaterial
由几个SCNMaterialProperty
s 组成。
更多信息请阅读文档
【讨论】:
感谢您的帮助。在 Blender 中导出模型时,只创建没有纹理且没有 UV 展开的形状是否足够,或者我应该这样做以便能够将它们作为 Xcode 中的材料应用?我尝试设置我的对象的第一个材质的漫反射贴图并得到错误说“漫反射是一个仅获取的属性”。所以我假设我在导出之前做错了什么。 设置漫反射使用diffuse.contents
。此“漫反射”可以设置为颜色、图像等。有关更多信息,请访问苹果文档SCNMaterialProperty
here。以上是关于在 Blender 中创建的 3D 模型上使用材质的主要内容,如果未能解决你的问题,请参考以下文章