我将菲涅耳效应应用于SCNSphere,以实现地球的美丽光芒
然而,因为我正在做地球的模型,我希望球体的照明部分具有菲涅耳效应和暗边没有
如果球体的黑暗边缘透明,也许有可能实现这种效果?或者我可以使用Scenekit _surface.fresnel的着色器修饰符属性?
为此,您需要使用emission
实例属性来定义表面上每个点发出的颜色。
您可以使用emissive map texture来模拟用自己的光照射的表面部分。 SceneKit不会将材质视为光源 - 而是,发射属性决定材质的颜色,与光照无关。 (要创建看似发光的对象,您可能希望将几何图形与发射贴图相结合,并将其他SCNLight对象添加到场景中。)
var emission: SCNMaterialProperty { get }
您可以在任何可用的SceneKit着色器emission
,Constant
,Lambert
,Blinn
或Phong
中找到Physically Based
属性。
let earth = SCNNode(geometry: SCNSphere(radius: 5))
earth.geometry?.firstMaterial?.emission.contents = UIImage(named: "emissionMap.png")
当然,如果你需要创建一个正方形emissionMap.png
纹理(a.k.a.UV Map),你应该在Autodesk Maya或Autodesk 3dsMax或Maxon Cinema4D等中制作它。这样的地图可以是512x512,1024x1024,2048x2048等。