我有一个可以拍摄人体的几何节点。物体的材料是透明
let node = newScene.rootNode.childNode(withName: "man_mesh", recursively: true)
let nodeMaterial = node?.geometry?.firstMaterial
nodeMaterial?.emission.contents = UIColor(red: 0.0, green: 0.0, blue: 1.0, alpha: 1.0)
nodeMaterial?.transparencyMode = .rgbZero
nodeMaterial?.transparent.contents = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
我想要获得的效果是物体在面向相机的区域中完全透明,但随着多边形面向侧面变得更加不透明......这会产生一种闪亮的蓝色边缘。这样的事情:
知道如何创造这种效果吗?
谢谢
编辑:另一个有趣的观点:看来 SceneKit 确实支持菲涅尔效应。效果会影响反射贴图 - 但是,一旦对对象应用透明度,它也会影响反射率(完全透明度也会使反射率消失) - 我认为这是 Apple 的概念性错误 - 材料可以透明,仍然反射光!
1 回答
我做了一些研究并找到了答案。要实现此效果,您可以使用以下代码。
透明 - 确定材质中每个点的不透明度的对象
反思 - 定义曲面上每个点的反射颜色的对象
fresnselExponent - 影响材料反射率的因素
该方法可以应用于任何 3D 对象。
P.S。希望它会有用。