gpt4 book ai didi

ios - SceneKit:如何为同一个 OBJ 文件从 Google Poly 重新创建光照?

转载 作者:可可西里 更新时间:2023-11-01 05:25:08 25 4
gpt4 key购买 nike

目标是为这个 OBJ 文件重新创建光照:https://poly.google.com/view/cKryD9VnDEZ

将 OBJ 文件加载到 SceneKit 的代码(可以从上面的链接下载文件):

let modelPath = "model.obj"
let url = NSURL(string: modelPath)

let scene = SCNScene(named: modelPath)!
sceneView.autoenablesDefaultLighting = true
sceneView.allowsCameraControl = true
sceneView.scene = scene
sceneView.backgroundColor = UIColor.white

到目前为止尝试过的选项:

1) 默认环境光比 Google Poly 光强得多。移除环境照明会使一切变得过于平坦。

2) 使用四盏定向灯:一盏在前面,一盏在后面,一盏在模特下方,一盏在模特上方。所有灯都倾斜以指向模型。这是最好的,但仍然留下了一些在 Google Polymer 上看不到的阴影和更粗糙的区域。

3) 向选项 #2 添加了另外两个灯,这次在左侧和右侧添加了灯。这个比选项 #2 更糟糕,因为额外的灯与四个现有灯相结合并粉刷了模型。

根据以下建议更新:

代码现在实现了环境光和定向光。

由于某些原因,将定向光添加到相机节点与场景根节点没有任何区别。

灯光代码如下。

有两个问题:

1)在截图1中,胸部的右侧太亮并且没有显示边缘。胸部最左边的脸太黑了。光线最好的脸在中间。如何让所有面孔的光照都变成这样(或者更好地匹配 Google Poly 光照)?

2) 在屏幕截图 2 中,定向光似乎没有效果。使用建议的一种环境光和一种定向光的架构,如何确保模型背面与正面一样轻?

屏幕截图 1: enter image description here

屏幕截图 2: enter image description here

代码:

    // Create ambient light
let ambientLightNode = SCNNode()
ambientLightNode.light = SCNLight()
ambientLightNode.light!.type = .ambient
ambientLightNode.light!.color = UIColor(white: 0.50, alpha: 1.0)

// Add ambient light to scene
scene.rootNode.addChildNode(ambientLightNode)

// Create directional light
let directionalLight = SCNNode()
directionalLight.light = SCNLight()
directionalLight.light!.type = .directional
directionalLight.light!.color = UIColor(white: 0.40, alpha: 1.0)
directionalLight.eulerAngles = SCNVector3(x: Float.pi, y: 0, z: 0)

// Add directional light
scene.rootNode.addChildNode(directionalLight)

最佳答案

默认情况下,通过模型 I/O 加载的 OBJ 文件使用基于物理的光照。该模型具有卡通风格的外观,并使用了大量带有一些镜面高光的环境照明。

您应该首先将所有 Material 转换为 lambert照明模型。

然后添加一个ambient点亮你的场景。这个场景中有很多环境光,物体的每个部分都被照亮了。 color 75% 的白色就可以了。

最后附上一个directional照亮相机以突出显示面向用户的多边形。 color 50% 的白色听起来是正确的。

关于ios - SceneKit:如何为同一个 OBJ 文件从 Google Poly 重新创建光照?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48362672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com