SwiftUI路径:Scenekit中的轴颠倒错误
问题: 当我解析一个指向Scenekit的快捷界面路径时,它是颠倒的,轴在边界框之外 我试过: 将SwiftUI.AnchorReference设置为中心。没什么区别 目标: 如何使轴成为边界框的中心底部 重要提示:我需要有一个正确的SwiftUI路径->SCN轴平移,并且不要手动偏移轴,因为这会影响场景中的所有对象轴SwiftUI路径:Scenekit中的轴颠倒错误,swiftui,scenekit,Swiftui,Scenekit,问题: 当我解析一个指向Scenekit的快捷界面路径时,它是颠倒的,轴在边界框之外 我试过: 将SwiftUI.AnchorReference设置为中心。没什么区别 目标: 如何使轴成为边界框的中心底部 重要提示:我需要有一个正确的SwiftUI路径->SCN轴平移,并且不要手动偏移轴,因为这会影响场景中的所有对象轴 UIKit和SwiftUI使用翻转几何体,其中y值随画布从顶部到底部的移动而增加。 Scenekit不使用翻转几何体。所以你必须“翻转”y值 在图层上,您甚至可以设置此值。。
UIKit和SwiftUI使用翻转几何体,其中y值随画布从顶部到底部的移动而增加。 Scenekit不使用翻转几何体。所以你必须“翻转”y值
在图层上,您甚至可以设置此值。。。但我认为scenekit没有这样的价值…谢谢Chris,我发现了如何在scenekit中翻转轴,但我想在swiftUI锚和scenekit轴之间建立正确的相关性。shapeNode.pivot=SCNMatrix4MakeTranslation(0,0,0)
import SwiftUI
struct PatternScene: View {
let idx: Int
let pattern = Path { path in
path.move(to: CGPoint(x: 50, y: 50))
path.addLine(to: CGPoint(x: 250, y: 50))
path.addLine(to: CGPoint(x: 250, y: 250))
path.addLine(to: CGPoint(x: 50, y: 250))
path.addLine(to: CGPoint(x: 100, y: 100))
}
var body: some View {
self.pattern
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
.anchorPreference(key: MyTextPreferenceKey.self, value: .bounds, transform: { [MyTextPreferenceData(viewIdx: self.idx, bounds: $0)] })
}
}
struct PatternScene_Previews: PreviewProvider {
static var previews: some View {
PatternScene(idx: 0)
}
}
//Connect PatternScene with Scenekit
let scnpath = PatternScene(idx: 0).pattern.cgPath
let shape = SCNShape(path: UIBezierPath(cgPath: scnpath), extrusionDepth: 1)
let material = SCNMaterial()
//material.diffuse.contents = UIColor.red
material.isDoubleSided = true
// shape.firstMaterial = material
let shapeNode = SCNNode(geometry: shape)
scene.rootNode.addChildNode(shapeNode)
shapeNode.position = SCNVector3(x: 0, y: 0, z: 0)
shapeNode.scale = SCNVector3(x: 1, y: 1, z: 1)
shapeNode.pivot = SCNMatrix4MakeTranslation(0, 0, 0)