我试图在使用两根手指缩放时将3d对象的值加载到sceneView
中。我可以正确地获取rotation
,position
和orientation
,但scale
始终保持在1
。
如何获得此值?
var update = Timer()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
sceneView.scene = SCNScene(named: "PKB2");
sceneView.debugOptions.insert(SCNDebugOptions.showWireframe)
sceneView.autoenablesDefaultLighting = true
sceneView.allowsCameraControl = true
update = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(self.updateFunc), userInfo: nil, repeats: true)
}
func updateFunc() {
var eulerAngles_x = Double((sceneView.pointOfView?.eulerAngles.x)!) * (180.0 / Double.pi)
if( eulerAngles_x < 0 ) {eulerAngles_x += 360.0}
var eulerAngles_y = Double((sceneView.pointOfView?.eulerAngles.y)!) * (180.0 / Double.pi)
if( eulerAngles_y < 0 ) {eulerAngles_y += 360.0}
var eulerAngles_z = Double((sceneView.pointOfView?.eulerAngles.z)!) * (180.0 / Double.pi)
if( eulerAngles_z < 0 ) {eulerAngles_z += 360.0}
x_lbl.text = String(format:"%.2f", eulerAngles_x)
y_lbl.text = String(format:"%.2f", eulerAngles_y)
z_lbl.text = String(format:"%.2f", eulerAngles_z)
w_lbl.text = String(format:"%.2f", (sceneView.pointOfView?.scale.z)!)
print(sceneView.pointOfView?.scale) // not changing while scaling the object
}
答案 0 :(得分:0)
使用sceneView.allowsCameraControl = true
时,您正在操作相机,而不是对象。您的3D物体没有移动,相机正在四处移动。
因此检查相机的比例是错误的,因为比例不变,它只是放大。
请尝试检查sceneView.pointOfView?.camera.xFov
和sceneView.pointOfView?.camera.yFov
。
同样值得注意的是allowsCameraControl
状态的文档:
请注意,此属性的主要用途是帮助调试 你的申请。您可能想要实现自己的相机控制器 适合您的应用。