我是SceneKit中的超级傻瓜,我在SceneKit中的外观(金属质感)有问题,我使用此代码进行显示。
let glassesFrame = contentNode!.childNode(withName: "Metallic_Part",
recursively: true)
glassesFrame?.geometry?.firstMaterial?.lightingModel = .physicallyBased
glassesFrame?.geometry?.firstMaterial?.metalness.contents = 0.8
glassesFrame?.geometry?.firstMaterial?.roughness.contents = 0.2
但是问题是(金属度,粗糙度)的值会影响颜色的变暗(金属的值[greater,颜色的darker)。
这里是一个示例,用于进一步说明:
金属度:0.2粗糙度:0.8:here is the result
金属度:0.8粗糙度:0.2:here is the result
并且当我将“ 1”设置为金属度的值时,颜色变为黑色,here is the result
这是我使用的模型:Sketchfab中的模型:https://skfb.ly/6QVTQ
我如何使金属看起来自然(镜面般。)>这是完整的代码:
class BlendShapeCharacter: NSObject, VirtualContentController { var contentNode: SCNNode? private var originalJawY: Float = 0 private lazy var jawNode = contentNode! private lazy var jawHeight: Float = { let (min, max) = jawNode.boundingBox return max.y - min.y }() func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? { guard anchor is ARFaceAnchor else { return nil } contentNode = SCNReferenceNode(named: "Glasses") let glassesFrame = contentNode!.childNode(withName: "Metallic_Part", recursively: true) glassesFrame?.geometry?.firstMaterial?.lightingModel = .physicallyBased glassesFrame?.geometry?.firstMaterial?.metalness.contents = 0.8 glassesFrame?.geometry?.firstMaterial?.roughness.contents = 0.2 let lens1 = contentNode!.childNode(withName: "Glass_Part", recursively: true) let material = SCNMaterial() material.lightingModel = .phong material.diffuse.contents = UIColor(white: 0.2, alpha: 1) material.diffuse.intensity = 0.9 material.specular.contents = UIColor(white: 1, alpha: 1) material.specular.intensity = 1.0 material.reflective.contents = UIImage(named:"Models.scnassets/texture.png") material.reflective.intensity = 2.0 material.transparencyMode = .dualLayer material.fresnelExponent = 2.2 material.isDoubleSided = true material.blendMode = .alpha material.shininess = 100 material.transparency.native = 0.4 material.cullMode = .back lens1?.geometry?.firstMaterial = material originalJawY = jawNode.position.y return contentNode }
提前谢谢您
我是sceneKit的超级傻瓜,我在SceneKit中的外观(金属质感)有问题,我使用此代码进行显示。让GlassesFrame = contentNode!.childNode(withName:“ ...
environmentTexturing
的值是否设置为environmentTexturing
或AREnvironmentTexturingManual
?