本文介绍了SceneKit视图渲染为Phong而不是基于物理的材质的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的场景中有几个对象,所有这些对象都将其材质的"照明模型"设置为基于物理。
当我运行这个应用程序时,我得到的视图看起来一点也不像场景编辑器-相反,它看起来更像Phong材质。
是否需要更改根节点,以便从一开始就以物理方式进行渲染?我不熟悉Objective-c,所以我不确定是否需要将根节点的光照模型设置为基于物理的,如果需要,我将如何访问根节点(而且,根节点是否甚至可以具有光照模型属性,因为它本身是不可呈现的)。我的模型是在ZBrush、重新拓扑和UIView控制器中映射的UV中创建的,并在Blender中转换为.dae文件。有没有可能是这些程序之一将材质着色器设置为Phong?SceneKit编辑器不会覆盖它并将其设置为基于物理的吗?
据我所知,Xcode、iOS和SceneKit的所有版本都足够新,可以支持PBR。
感谢您的帮助:)
推荐答案
将基于物理的着色器应用于场景工具包中的模型非常容易(或更改其纹理或颜色)。如果您的模型由几个部分组成,请使用以下方法在层次结构级别中找到您需要的部分:
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;
结果biplane.usdz
模型
这篇关于SceneKit视图渲染为Phong而不是基于物理的材质的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!