如何在SceneKit中仅对球体的一部分应用菲涅耳效果?

问题描述 投票:1回答:1

我将菲涅耳效应应用于SCNSphere,以实现地球的美丽光芒

然而,因为我正在做地球的模型,我希望球体的照明部分具有菲涅耳效应和暗边没有

enter image description here

如果球体的黑暗边缘透明,也许有可能实现这种效果?或者我可以使用Scenekit _surface.fresnel的着色器修饰符属性?

swift shader scenekit
1个回答
0
投票

为此,您需要使用emission实例属性来定义表面上每个点发出的颜色。

您可以使用emissive map texture来模拟用自己的光照射的表面部分。 SceneKit不会将材质视为光源 - 而是,发射属性决定材质的颜色,与光照无关。 (要创建看似发光的对象,您可能希望将几何图形与发射贴图相结合,并将其他SCNLight对象添加到场景中。)

var emission: SCNMaterialProperty { get }

您可以在任何可用的SceneKit着色器emissionConstantLambertBlinnPhong中找到Physically Based属性。

let earth = SCNNode(geometry: SCNSphere(radius: 5))
earth.geometry?.firstMaterial?.emission.contents = UIImage(named: "emissionMap.png")

enter image description here

当然,如果你需要创建一个正方形emissionMap.png纹理(a.k.a.UV Map),你应该在Autodesk Maya或Autodesk 3dsMax或Maxon Cinema4D等中制作它。这样的地图可以是512x512,1024x1024,2048x2048等。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.