填充 SKShapeNode CGPath SCNMaterial
Fill SKShapeNode CGPath SCNMaterial
我有一种方法可以在 3D 球体上渲染 2D 形状。我将 SpriteKit 用于 2D 形状,将 SceneKit 用于 3D 内容。
我希望能够填充我的 SKShapeNode 的颜色,然后将 material 应用到 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 space 上呈现时,出现了红色,但它 "bleeding" 在定义的路径之外。我不知道为什么会这样,我只是假设路径会限制其内部的颜色。描边颜色和线条按预期呈现。
可能 "SpriteKit rendering inside SceneKit rendering" 代码路径有问题。如果您使用 CAShapeLayer
而不是 SKShapeNode
会怎样?
我有一种方法可以在 3D 球体上渲染 2D 形状。我将 SpriteKit 用于 2D 形状,将 SceneKit 用于 3D 内容。
我希望能够填充我的 SKShapeNode 的颜色,然后将 material 应用到 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 space 上呈现时,出现了红色,但它 "bleeding" 在定义的路径之外。我不知道为什么会这样,我只是假设路径会限制其内部的颜色。描边颜色和线条按预期呈现。
可能 "SpriteKit rendering inside SceneKit rendering" 代码路径有问题。如果您使用 CAShapeLayer
而不是 SKShapeNode
会怎样?