SceneKit:以编程方式使用 Scene Inspector 中的“Procedural Sky”选项?

Posted

技术标签:

【中文标题】SceneKit:以编程方式使用 Scene Inspector 中的“Procedural Sky”选项?【英文标题】:SceneKit: Programmatically use "Procedural Sky" option from Scene Inspector? 【发布时间】:2018-09-17 01:52:12 【问题描述】:

在 Xcode SceneKit 场景检查器中,Environment 部分下有一个 Procedural Sky 选项。

根据一些教程,启用此选项将赋予 3D 模型更多的真实感。

1) 如果您是通过代码而非 Scene Inspector 创建场景,如何启用Procedural Sky 选项?没有Environment 属性。

2) Procedural Sky 选项是否仅在您使用 PBR 材质时才有效?

【问题讨论】:

你得到答案了吗? @Paresh.P 在下面查看我的答案 【参考方案1】:

是的,您可以:您要查找的课程是MDLSkyCubeTexture

将其放入场景背景内容的最基本方法:

class MyGameScene: SCNScene 
    override init() 
        super.init()
        self.background.contents = MDLSkyCubeTexture(name: "sky",
                                          channelEncoding: .float16,
                                        textureDimensions: vector_int2(128, 128),
                                                turbidity: 0,
                                             sunElevation: 1.5,
                                upperAtmosphereScattering: 0.5,
                                             groundAlbedo: 0.5)
        // To let the sky influence the lighting:
        self.lightingEnvironment.contents = self.background.contents
    

您必须自己阅读参数,因为我只是偶然发现了这一点。

我发现了这些感兴趣的链接:

https://github.com/FlexMonkey/SkyCubeTextureDemo http://flexmonkey.blogspot.com/2015/07/a-first-look-at-model-ios-sky-cube.html

这些来源已有 5 年的历史,所以我确信一些东西同时发生了变化。

关于您问题的第二部分:您可以将其导入您的材料中,但我还不太了解。

【讨论】:

在 Xcode 11、iOS 13 上运行良好!使用上面的值创建与默认程序天空颜色不同的颜色,但提供的链接和 Xcode 文档显示了如何创建黄昏、中午等。【参考方案2】:

对于 iOS 12 使用:

configuration.environmentTexturing = .automatic

【讨论】:

使用 ARKit 时可以设置,但不能用于基本的 SceneKit 场景。

以上是关于SceneKit:以编程方式使用 Scene Inspector 中的“Procedural Sky”选项?的主要内容,如果未能解决你的问题,请参考以下文章

SceneKit 以编程方式更改材质的颜色

如何导出 DAE 文件以在 Scene Kit 中使用而不会看到“无标题动画”?

如何在我的 Scenekit.scene 之上创建 HUD

在 SceneKit 中,从 scene.rootNode 中删除 SCNNode 节点会导致崩溃

Scene Kit 的枢轴矩阵的语义是啥?

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