我有一种在3D球体上渲染2D形状的方法。我为2D形状使用SpriteKit,为3D内容使用SceneKit。
我希望能够填充SKShapeNode的颜色,然后将材质应用到SCNNode
let path = generatePinPath(nodeWidth: 120)
let scene = SKScene(size: CGSize(width: 120, height: 75))
let pinShape = SKShapeNode(path: path)
pinShape.name = "A Label"
pinShape.fillColor = SKColor.red
pinShape.strokeColor = SKColor.white
pinShape.lineWidth = 3
scene.addChild(pinShape)
let materialProperty = SCNMaterial()
materialProperty.diffuse.contents = scene
planeGeometry.firstMaterial = materialProperty
planeGeometry.firstMaterial?.isDoubleSided = false
let node = SCNNode(geometry: planeGeometry)
nodes.append(node)我的generatePinPath方法如下所示:
func generatePinPath(nodeWidth: Int) -> CGMutablePath {
let path = CGMutablePath()
path.move(to: CGPoint(x: 20, y: 0)
path.addLine(to: CGPoint(x: CGFloat(nodeWidth - 20), y: 0))
path.addCurve(to: CGPoint(x: CGFloat(nodeWidth - 20), y: 53), control1: CGPoint(x: CGFloat(nodeWidth), y: 0), control2: CGPoint(x: CGFloat(nodeWidth), y: 53))
path.addLine(to: CGPoint(x: CGFloat(nodeWidth / 2) + 20, y: 53))
path.closeSubpath()
return path
}当形状在3D空间上渲染时,红色是存在的,但它在定义的路径之外“出血”。我不知道为什么会发生这种情况,我只是假设路径会限制其内部的颜色。笔触颜色和线条的渲染效果与预期一致。
发布于 2019-08-01 20:28:11
可能是“SceneKit渲染中的SpriteKit渲染”代码路径有问题。如果使用CAShapeLayer而不是SKShapeNode,会发生什么情况
https://stackoverflow.com/questions/57294411
复制相似问题