gpt4 book ai didi

iOS SceneKit - 为 Material 透明度添加菲涅耳效果

转载 作者:可可西里 更新时间:2023-11-01 06:01:34 25 4
gpt4 key购买 nike

我有一个描绘人体的几何节点。物体的 Material 是透明的

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)

我试图获得的效果是让对象在面向相机的区域完全透明,但随着多边形面向侧面而变得更加不透明……这会产生一种 Shiny 的蓝色边缘。像这样:

Rim Effect

知道如何创建这种效果吗?

谢谢

编辑:另一个有趣的地方:SceneKit 似乎确实支持菲涅耳效果。效果会影响反射率贴图 - 应该是这样,但是,一旦你对对象应用透明度,它也会影响反射率(完全透明也会使反射率消失) - 我认为这是 Apple 的概念错误 - Material 可以透明并仍然反射光!

最佳答案


我做了一些研究并找到了答案。要实现此效果,您可以使用以下代码。

func ghostEffect(scene: SCNScene) {

let sphere = SCNSphere(radius: 3)

let material = SCNMaterial()
material.diffuse.contents = UIColor.black
material.reflective.contents = UIColor(red: 0, green: 0.764, blue: 1, alpha: 1)
material.reflective.intensity = 3
material.transparent.contents = UIColor.black.withAlphaComponent(0.3)
material.transparencyMode = .default
material.fresnelExponent = 4

sphere.materials = [material]

let node = SCNNode(geometry: sphere)

scene.rootNode.addChildNode(node)

}

Explanation from: SCNMaterial.

透明 - An object that determines the opacity of each point in a material

反光 - An object that defines the reflected color for each point on a surface

fresnselExponent - A factor affecting the material’s reflectivity

这种方法可以应用于任何 3D 对象。

Result

附言希望它会有用。

关于iOS SceneKit - 为 Material 透明度添加菲涅耳效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43843110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com