I'm trying to rotate a cube around its z-axis but I can't find how.
Is there a way in RealityKit to do this?
I'm trying to rotate a cube around its z-axis but I can't find how.
Is there a way in RealityKit to do this?
In RealityKit there are, at least, three ways to rotate an object around single axis.
In each example we rotate an object counterclockwise (CCW).
let boxScene = try! Experience.loadBox()
boxScene.steelBox?.orientation = simd_quatf(angle: .pi/4, /* 45 Degrees */
axis: [0,0,1]) /* About Z axis */
boxScene.steelBox?.transform = Transform(pitch: 0,
yaw: 0,
roll: .pi/4) /* Around Z axis */
pitch, yaw and roll are rotations about X, Y and Z axis expressed in radians.
let a: Float = cos(.pi/4)
let b: Float = sin(.pi/4)
let matrix = float4x4([ a, b, 0, 0 ], /* column 0 */
[-b, a, 0, 0 ], /* column 1 */
[ 0, 0, 1, 0 ], /* column 2 */
[ 0, 0, 0, 1 ]) /* column 3 */
boxAnchor.steelBox?.setTransformMatrix(matrix, relativeTo: nil)
Visual representation of rotation matrix looks like this:
let a: Float = cos(.pi/4)
let b: Float = sin(.pi/4)
// 0 1 2 3
┌ ┐
| a -b 0 0 |
| b a 0 0 |
| 0 0 1 0 |
| 0 0 0 1 |
└ ┘
If you wanna know more about Rotation Matrices, read this post.
For people who are also searching for this you need to use transform and rotation. This needs a simd_quatf where you give the angle and the axis.
In my case i had to use this:
"object".transform.rotation = simd_quatf(angle: GLKMathDegreesToRadians(90), axis: SIMD3(x: 0, y: 0, z: 1))