scenekit - 在另一个模型上使用金属着色器后基于物理的光照丢失?
问题描述
我的场景中有 2 个模型(使用 SceneKit)——戒指和钻石。戒指采用黄金 pbr 材料(SCNLightingModelPhysicallyBased) - 其次是钻石,采用金属着色器(SCNProgram)的“自定义”材料。在开发了钻石着色器后,我的金戒指就停止了工作,变成了纯黑色。这是为什么 ?当我简单地将我的戒指设置为黄色并放下 pbr 照明模型时,它可以工作,而不是 pbr - pbr 是纯黑色。我不能将 SCNProgram 与 PBR 一起使用?
解决方案
你是在布景lightingEnvironment
吗?您将需要场景中的光源来照亮对象。您可以使用点光源或利用基于图像的照明 (IBL),这就是它的lightingEnvironment
用途。
您也可以尝试该autoenablesDefaultLighting
属性。有了它,SceneKit 将尝试根据其内容在场景中调整和添加光源,但其行为可能会发生变化。
推荐阅读
- spring-boot - 我可以在@OneToMany 上使用@JoinColumn 吗?
- reactjs - 如何使用 i18next 设置 RTL 翻译方向?
- java - 如何在 Junit 中分配枚举值?
- kotlin - 我在 kotlin 中放了令牌的地方
- python - 为什么在某些函数中可以访问全局变量而在其他函数中不能访问?
- mysql - 来自许多变量的 MySQL CONCAT_WS - 如何将查询限制为仅现有数据?
- sql-server - KC-SERVICES0089:无法运行计划任务 ClearExpiredClientInitialAccessTokens
- java - 应用程序被杀死时没有收到通知
- mysql - 在没有公共列的情况下连接 MYSQL 中的表
- python - python:带有简单ODE的pyABC-实例str和int之间不支持回溯错误<=