在 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 由几个SCNMaterialPropertys 组成。

更多信息请阅读文档

【讨论】:

感谢您的帮助。在 Blender 中导出模型时,只创建没有纹理且没有 UV 展开的形状是否足够,或者我应该这样做以便能够将它们作为 Xcode 中的材料应用?我尝试设置我的对象的第一个材质的漫反射贴图并得到错误说“漫反射是一个仅获取的属性”。所以我假设我在导出之前做错了什么。 设置漫反射使用diffuse.contents。此“漫反射”可以设置为颜色、图像等。有关更多信息,请访问苹果文档SCNMaterialPropertyhere。

以上是关于在 Blender 中创建的 3D 模型上使用材质的主要内容,如果未能解决你的问题,请参考以下文章

Blender材质贴图入门图文教程

blender 带贴图与颜色材质的模型,导入到Unity中

Blender Viewport Shading(在 3D 视图中显示/着色对象的方法:材质预览)问题

ThreeJS 不显示 dae 3D 模型

使用 GLTF 支持混合材质/纹理

Scenekit:如何获取节点的所有材质?