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?
You can use the transform.Rotate method to rotate an object around a fixed axis. The method has various constructors but a simple way to achieve what you want would be using the following depending on the axis you actually want to rotate the object around.
Hi, I would like to rotate toward another object on one axis only. In my case, the Z Axis. This works fine for anything that is less than 90 degrees from the horizontal from it. But other than that, it faces backwards. What could be the problem? The issues stems from you use of Euler angles, which can cause these sorts of problems.
Well, it was rather hard to rotate GameObject ONLY in one axis, nothing worked correctly, adding values to another axis, even RotateAround or Rotate, but... dx, dy, dz - how much you want to change value in degrees.
Rotation around the z-axis would just be roll, which wouldn't be changed by transform.forward. Hmm. I'm not sure exactly what you're doing, but you can set transform.forward, transform.right, and transform.up as needed. Are you really trying to only rotate around the z-axis?
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))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With