旋转 SCNTorus
Rotating SCNTorus
我有一个项目在 iOS 上使用 ARKit 展示行星。我正在使用 SCNSphere 创建 Saturn,它成功了。现在我正在尝试使用 SCNTorus 创建一个环,但结果显示如下:
Saturn Result
我需要将圆环旋转 90 度,让它看起来真的像 space 中的土星。可以旋转这个 SCNTorus 吗?下面是我的代码
// Declaring Saturn Ring Using Torus
let saturnusRingTorus = SCNTorus(ringRadius: 0.1, pipeRadius: 0.2)
saturnusRingTorus.ringSegmentCount = 2
// Declaring Materials & Textures
let saturnusRingMaterial = SCNMaterial()
saturnusRingMaterial.diffuse.contents = UIImage(named: "textures.scnassets/saturnring.png")
saturnusRingTorus.materials = [saturnusRingMaterial]
// Show Ring Through Node
let nodeSaturnusRing = SCNNode()
nodeSaturnusRing.position = SCNVector3(x: -0.3, y: 0.1, z: -0.7)
nodeSaturnusRing.geometry = saturnusRingTorus
sceneSaturnus.scene.rootNode.addChildNode(nodeSaturnusRing)
sceneSaturnus.autoenablesDefaultLighting = true
如果你需要围绕 Z 轴逆时针 (CCW) 旋转 SCNTorus node,请使用此代码:
欧拉旋转 (x, y, z)
// eulerAngles's type is SCNVector3
nodeSaturnusRing.eulerAngles.z = .pi / 2
四元数旋转(x, y, z, w)
// x,y,z are vectors here, and w is a rotation angle
nodeSaturnusRing.rotation = SCNVector4(0, 0, 1, Float.pi / 2)
考虑到 ARKit、SceneKit 和 RealityKit 中的旋转是以弧度表示的。当您想顺时针旋转模型时使用负值,如果逆时针旋转模型则使用正值。
如果您想知道什么是四元数与欧拉角,请阅读 。
我有一个项目在 iOS 上使用 ARKit 展示行星。我正在使用 SCNSphere 创建 Saturn,它成功了。现在我正在尝试使用 SCNTorus 创建一个环,但结果显示如下: Saturn Result
我需要将圆环旋转 90 度,让它看起来真的像 space 中的土星。可以旋转这个 SCNTorus 吗?下面是我的代码
// Declaring Saturn Ring Using Torus
let saturnusRingTorus = SCNTorus(ringRadius: 0.1, pipeRadius: 0.2)
saturnusRingTorus.ringSegmentCount = 2
// Declaring Materials & Textures
let saturnusRingMaterial = SCNMaterial()
saturnusRingMaterial.diffuse.contents = UIImage(named: "textures.scnassets/saturnring.png")
saturnusRingTorus.materials = [saturnusRingMaterial]
// Show Ring Through Node
let nodeSaturnusRing = SCNNode()
nodeSaturnusRing.position = SCNVector3(x: -0.3, y: 0.1, z: -0.7)
nodeSaturnusRing.geometry = saturnusRingTorus
sceneSaturnus.scene.rootNode.addChildNode(nodeSaturnusRing)
sceneSaturnus.autoenablesDefaultLighting = true
如果你需要围绕 Z 轴逆时针 (CCW) 旋转 SCNTorus node,请使用此代码:
欧拉旋转 (x, y, z)
// eulerAngles's type is SCNVector3
nodeSaturnusRing.eulerAngles.z = .pi / 2
四元数旋转(x, y, z, w)
// x,y,z are vectors here, and w is a rotation angle
nodeSaturnusRing.rotation = SCNVector4(0, 0, 1, Float.pi / 2)
考虑到 ARKit、SceneKit 和 RealityKit 中的旋转是以弧度表示的。当您想顺时针旋转模型时使用负值,如果逆时针旋转模型则使用正值。
如果您想知道什么是四元数与欧拉角,请阅读