我将菲涅尔效应应用到SCNSphere上,以获得地球的美丽光芒
但是,因为我在做地球的模型,所以我希望球体的发光部分具有菲涅耳效应,而黑暗面没有
swift - 如何仅在SceneKit的球体的一部分上应用菲涅耳效果?-LMLPHP
如果球体的暗面是透明的,也许可以达到这种效果?或者我可以使用Scenekit_surface.fresnel的着色器修改器属性?

最佳答案

为此,您需要使用一个emission实例属性来定义曲面上每个点发出的颜色。
可以使用emissive map texture来模拟曲面中使用自身灯光发光的部分。SceneKit不将材质视为光源,而是由“发射”属性决定材质的颜色,而与光源无关。(若要创建看起来发光的对象,您可能希望将几何体与发射贴图以及添加到场景中的其他SCNLight对象结合起来。)

var emission: SCNMaterialProperty { get }

您可以在任何可用场景的着色器emissionConstantLambertBlinnPhong中找到Physically Based属性。
let earth = SCNNode(geometry: SCNSphere(radius: 5))
earth.geometry?.firstMaterial?.emission.contents = UIImage(named: "emissionMap.png")

swift - 如何仅在SceneKit的球体的一部分上应用菲涅耳效果?-LMLPHP
当然,如果需要创建一个正方形emissionMap.png纹理(也称为“UV贴图”),则应在Autodesk Maya、Autodesk 3dsMax或Maxon Cinema4D等中创建该贴图。这些贴图可以是512x512、1024x1024、2048x2048等。
swift - 如何仅在SceneKit的球体的一部分上应用菲涅耳效果?-LMLPHP

关于swift - 如何仅在SceneKit的球体的一部分上应用菲涅耳效果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55677388/

10-12 04:32