3

我的场景中有几个对象,所有这些对象都将其材质的“照明模型”设置为基于物理的。

当我运行该应用程序时,我得到的视图看起来不像场景编辑器 - 它看起来更像 Phong 材质。

我是否需要更改根节点才能使其从一开始就以物理方式呈现?我是objective-c的新手,所以我不确定是否需要将根节点的光照模型设置为基于物理的,如果需要,我将如何访问根节点(此外,根节点可以甚至具有光照模型属性,因为它本身不可渲染)。

我的模型在ZBrush中创建,在 UIViewController 中重新拓扑和 UV 映射,并在 Blender 中转换为 .dae 文件。这些程序之一是否有可能将材质着色器设置为 phong?SceneKit 编辑器不会覆盖它并将其设置为基于物理的吗?

据我所知,所有版本的 Xcode、iOS 和 SceneKit 都足够支持 PBR。

感谢您的任何帮助 :)

4

1 回答 1

1

It's quite easy to apply a physically based shader to your model in SceneKit (or change its texture or color). If your model consists of several parts, find the part you need in the hierarchical level using the following approach:

enter image description here

enter image description here

SCNScene *scene = [SCNScene sceneNamed: @"art.scnassets/biplane.usdz"];

SCNNode *modelNode = [scene.rootNode childNodeWithName: @"biplane"      
                                           recursively: YES];

SCNNode *body = modelNode.childNodes[0].childNodes[0]
                         .childNodes[0].childNodes[0];

body.geometry.materials[0].lightingModelName = SCNLightingModelPhysicallyBased;
body.geometry.materials[0].diffuse.contents = [UIColor redColor];
body.geometry.materials[0].metalness.contents = @1.0;
body.geometry.materials[0].roughness.contents = @0.0; 

Resulted biplane.usdz model

enter image description here

于 2022-01-26T21:55:21.797 回答