我正在将菲涅耳效果应用于SCNSphere,以实现地球的美丽光芒
但是,因为我正在做地球的模型,所以我希望球体的照明部分具有菲涅耳效应,而暗面没有
如果球体的黑暗面会透明,也许有可能达到这种效果?还是我可以使用Scenekit _surface.fresnel的着色器修改器属性?
答案 0 :(得分:0)
为此,您需要使用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
纹理(又称为 UV Map ),则应在Autodesk Maya或Autodesk 3dsMax或Maxon Cinema4D等中创建它。这样的地图可以是512x512、1024x1024、2048x2048等。