假设X-Axis
是up-down
; Y-Axis
是left-right
; Z-Axis
是depth
。 (这似乎很奇怪,但这是我在ARKit中的经验。它只是交换“ normal” X-Axis
和Y-Axis
。
我在SCNNode
处有一个名为node1
的{{1}}。它是矩形的,具有纵向布局。
当我调用方法(0, 0, 0)
时,下面的代码允许节点跟随电话。
lookNode1()
但是,我有一个问题,相对于手机的Z轴而不是确切的Z轴不正确。我的问题是,想象一下//Method to make node follow the camera when I call it.
@objc func lookNode1() {
if(self.node1 != nil) {
//Look at the camera
self.node1.look(at: self.sceneView.pointOfView!.position)
//I have to flip it 90 degrees because the node is created in a fancy way that I have to update for.
let startingOrientation = GLKQuaternion(self.node1.orientation)
let node1LookingDirection = self.node1.parentUp
let node1LookingDirectionInTargetNodesReference = self.node1.convertVector(node1LookingDirection, from: self.sceneView.pointOfView?.parent!)
let rotationAxis = GLKVector3(node1LookingDirectionInTargetNodesReference)
let quaternion = GLKQuaternion(angle: Float(Double.pi/2), axis: rotationAxis)
self.node1.orientation = SCNQuaternion((startingOrientation * quaternion).normalized())
}
}
extension SCNNode {
/// The local unit Y axis (0, 1, 0) in parent space.
var parentUp: SCNVector3 {
let transform = self.transform
return SCNVector3(transform.m21, transform.m22, transform.m23)
}
}
周围的一个球体,如何在矩形顶部始终朝向北极的位置放置它?
我的node
从不动,它只是旋转以跟随相机。但是,我需要相对于相机的Z轴始终处于纵向模式。不管相机是横向还是横向。
工作量:
我当时正在考虑在A上施加一些引力,使其始终在顶部,即指向围绕节点的Sphere顶部。但是,1)不确定如何应用,2)不确定是否可以使用。
我知道我们有node1
,我可以做func applyTorque(_ torque: SCNVector4, asImpulse impulse: Bool)
,但是,我不确定someRotation是什么。我如何将其与来自北极self.node1.physicsBody.applyTorque(SCNVector4(0, 0, 1, someRotation), asImpluse: true))
的重力场一起应用(因为X上下)?即上面的图片。