SceneKit view renders as phong instead of physically based materials(SceneKit视图渲染为Phong而不是基于物理的材质)
本文介绍了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而不是基于物理的材质的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:SceneKit视图渲染为Phong而不是基于物理的材质
基础教程推荐
猜你喜欢
- Android:对话框关闭而不调用关闭 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01