Using 3D sprite as Dice face, problem with face angles

I am trying to create a behaviour through events similar to the sticker behaviour, but with 3D sprite sticking to a cube as dice faces.
Up to the last version I was trying to make trigonometric complex calculus to get forwart right and up normals, as in unity, but with the 5 269 they have added this function natively, so the positioning seems to be working.
However trying to make the 3D sprite orientation stick to the one of the face is not really working, particularly as the dice move on the Z axis.

So here are my events (sorry I am new here, and I can only post one picture, so I post the code):
(pseudo-code)

For each object Dice

Actions:
  Dice.Variable(FaceOrientation3D.Forward.DirectionX) = Dice.Object3D::ForwardX()
  Dice.Variable(FaceOrientation3D.Forward.DirectionY) = Dice.Object3D::ForwardY()
  Dice.Variable(FaceOrientation3D.Forward.DirectionZ) = Dice.Object3D::ForwardZ()

  Dice.Variable(FaceOrientation3D.Right.DirectionX)   = Dice.Object3D::RightX()
  Dice.Variable(FaceOrientation3D.Right.DirectionY)   = Dice.Object3D::RightY()
  Dice.Variable(FaceOrientation3D.Right.DirectionZ)   = Dice.Object3D::RightZ()

  Dice.Variable(FaceOrientation3D.Up.DirectionX)      = Dice.Object3D::UpX()
  Dice.Variable(FaceOrientation3D.Up.DirectionY)      = Dice.Object3D::UpY()
  Dice.Variable(FaceOrientation3D.Up.DirectionZ)      = Dice.Object3D::UpZ()

Actions:
  Dice.Variable(FaceOrientation3D.Forward.AngleX) = Dice.Object3D::RotationX()
  Dice.Variable(FaceOrientation3D.Forward.AngleY) = Dice.Object3D::RotationY()
  Dice.Variable(FaceOrientation3D.Forward.AngleZ) = Dice.Angle()

  Dice.Variable(FaceOrientation3D.Right.AngleX) = Dice.Variable(FaceOrientation3D.Forward.AngleX)
  Dice.Variable(FaceOrientation3D.Right.AngleY) = Dice.Variable(FaceOrientation3D.Forward.AngleY) + 90
  Dice.Variable(FaceOrientation3D.Right.AngleZ) = Dice.Variable(FaceOrientation3D.Forward.AngleZ)

  Dice.Variable(FaceOrientation3D.Up.AngleX) = Dice.Variable(FaceOrientation3D.Forward.AngleX) + 90
  Dice.Variable(FaceOrientation3D.Up.AngleY) = Dice.Variable(FaceOrientation3D.Forward.AngleY)
  Dice.Variable(FaceOrientation3D.Up.AngleZ) = Dice.Variable(FaceOrientation3D.Forward.AngleZ)

Actions:
  Dice.Variable(FaceOrientation3D.Forward.PositionCenterX) = Dice.CenterX() + Dice.Variable(FaceOrientation3D.Forward.DirectionX) * Dice.Object3D::Depth() * 0.501
  Dice.Variable(FaceOrientation3D.Forward.PositionCenterY) = Dice.CenterY() + Dice.Variable(FaceOrientation3D.Forward.DirectionY) * Dice.Object3D::Depth() * 0.501
  Dice.Variable(FaceOrientation3D.Forward.PositionCenterZ) = Dice.Object3D::CenterZ() + Dice.Variable(FaceOrientation3D.Forward.DirectionZ) * Dice.Object3D::Depth() * 0.501

  Dice.Variable(FaceOrientation3D.Right.PositionCenterX) = Dice.CenterX() + Dice.Variable(FaceOrientation3D.Right.DirectionX) * Dice.Width() * 0.501
  Dice.Variable(FaceOrientation3D.Right.PositionCenterY) = Dice.CenterY() + Dice.Variable(FaceOrientation3D.Right.DirectionY) * Dice.Width() * 0.501
  Dice.Variable(FaceOrientation3D.Right.PositionCenterZ) = Dice.Object3D::CenterZ() + Dice.Variable(FaceOrientation3D.Right.DirectionZ) * Dice.Width() * 0.501

  Dice.Variable(FaceOrientation3D.Up.PositionCenterX) = Dice.CenterX() + Dice.Variable(FaceOrientation3D.Up.DirectionX) * Dice.Height() * 0.501
  Dice.Variable(FaceOrientation3D.Up.PositionCenterY) = Dice.CenterY() + Dice.Variable(FaceOrientation3D.Up.DirectionY) * Dice.Height() * 0.501
  Dice.Variable(FaceOrientation3D.Up.PositionCenterZ) = Dice.Object3D::CenterZ() + Dice.Variable(FaceOrientation3D.Up.DirectionZ) * Dice.Height() * 0.501

Condition:
  Face_sprite_3D.FaceNumber = 1

Actions:
  Face_sprite_3D.Object3D::SetCenterZ( Dice.FaceOrientation3D.Forward.PositionCenterZ )
  Face_sprite_3D.SetCenter(
      Dice.FaceOrientation3D.Forward.PositionCenterX,
      Dice.FaceOrientation3D.Forward.PositionCenterY
  )

  Face_sprite_3D.Object3D::SetRotationX( Dice.FaceOrientation3D.Forward.AngleX )
  Face_sprite_3D.Object3D::SetRotationY( Dice.FaceOrientation3D.Forward.AngleY )
  Face_sprite_3D.SetAngle( Dice.FaceOrientation3D.Forward.AngleZ )

  Face_sprite_3D.Resizable::SetSize( Dice.Width(), Dice.Height() )

Condition:
  Face_sprite_3D.FaceNumber = 2

Actions:
  Face_sprite_3D.Object3D::SetCenterZ( Dice.FaceOrientation3D.Right.PositionCenterZ )
  Face_sprite_3D.SetCenter(
      Dice.FaceOrientation3D.Right.PositionCenterX,
      Dice.FaceOrientation3D.Right.PositionCenterY
  )

  Face_sprite_3D.Object3D::SetRotationX( Dice.FaceOrientation3D.Right.AngleX )
  Face_sprite_3D.Object3D::SetRotationY( Dice.FaceOrientation3D.Right.AngleY )
  Face_sprite_3D.SetAngle( Dice.FaceOrientation3D.Right.AngleZ )

  Face_sprite_3D.Resizable::SetSize( Dice.Height(), Dice.Object3D::Depth() )


Condition:
  Face_sprite_3D.Variable(FaceNumber) = 3

Actions:
  Face_sprite_3D.Object3D::SetCenterZ( Dice.Variable(FaceOrientation3D.Up.PositionCenterZ) )
  Face_sprite_3D.SetCenter( Dice.Variable(FaceOrientation3D.Up.PositionCenterX),
                            Dice.Variable(FaceOrientation3D.Up.PositionCenterY) )

  Face_sprite_3D.Object3D::SetRotationX( Dice.Variable(FaceOrientation3D.Up.AngleX) )
  Face_sprite_3D.Object3D::SetRotationY( Dice.Variable(FaceOrientation3D.Up.AngleY) )
  Face_sprite_3D.SetAngle( Dice.Variable(FaceOrientation3D.Up.AngleZ) )

  Face_sprite_3D.Resizable::SetSize( Dice.Object3D::Depth(), Dice.Width() )

(exact Event code:)

{"000kind":"GDEVELOP_EventsAndInstructions_CLIPBOARD_KIND-jsBdHbLy912y8Rc","content":{"eventsList":[{"type":"BuiltinCommonInstructions::ForEach","object":"Dice","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Forward.DirectionX","=","Dice.Object3D::ForwardX()"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Forward.DirectionY","=","Dice.Object3D::ForwardY()"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Forward.DirectionZ","=","Dice.Object3D::ForwardZ()"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Right.DirectionX","=","Dice.Object3D::RightX()"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Right.DirectionY","=","Dice.Object3D::RightY()"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Right.DirectionZ","=","Dice.Object3D::RightZ()\n"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Up.DirectionX","=","Dice.Object3D::UpX()"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Up.DirectionY","=","Dice.Object3D::UpY()"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Up.DirectionZ","=","Dice.Object3D::UpZ()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Forward.AngleX","=","Dice.Object3D::RotationX()"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Forward.AngleY","=","Dice.Object3D::RotationY()"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Forward.AngleZ","=","Dice.Angle()"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Right.AngleX","=","Dice.FaceOrientation3D.Forward.AngleX"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Right.AngleY","=","Dice.FaceOrientation3D.Forward.AngleY+90"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Right.AngleZ","=","Dice.FaceOrientation3D.Forward.AngleZ"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Up.AngleX","=","Dice.FaceOrientation3D.Forward.AngleX+90"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Up.AngleY","=","Dice.FaceOrientation3D.Forward.AngleY"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Up.AngleZ","=","Dice.FaceOrientation3D.Forward.AngleZ"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Forward.PositionCenterX","=","Dice.CenterX() + Dice.FaceOrientation3D.Forward.DirectionX * Dice.Object3D::Depth() * 0.501"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Forward.PositionCenterY","=","Dice.CenterY() + Dice.FaceOrientation3D.Forward.DirectionY * Dice.Object3D::Depth() * 0.501"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Forward.PositionCenterZ","=","Dice.Object3D::CenterZ() + Dice.FaceOrientation3D.Forward.DirectionZ * Dice.Object3D::Depth() * 0.501"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Right.PositionCenterX","=","Dice.CenterX() + Dice.FaceOrientation3D.Right.DirectionX * Dice.Width() * 0.501"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Right.PositionCenterY","=","Dice.CenterY() + Dice.FaceOrientation3D.Right.DirectionY * Dice.Width() * 0.501"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Right.PositionCenterZ","=","Dice.Object3D::CenterZ() + Dice.FaceOrientation3D.Right.DirectionZ * Dice.Width() * 0.501"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Up.PositionCenterX","=","Dice.CenterX() + Dice.FaceOrientation3D.Up.DirectionX * Dice.Height() * 0.501"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Up.PositionCenterY","=","Dice.CenterY() + Dice.FaceOrientation3D.Up.DirectionY * Dice.Height() * 0.501"]},{"type":{"value":"SetNumberObjectVariable"},"parameters":["Dice","FaceOrientation3D.Up.PositionCenterZ","=","Dice.Object3D::CenterZ() + Dice.FaceOrientation3D.Up.DirectionZ * Dice.Height() * 0.501"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["Face_sprite_3D","FaceNumber","=","1"]}],"actions":[{"type":{"value":"Scene3D::Base3DBehavior::SetCenterZ"},"parameters":["Face_sprite_3D","Object3D","=","Dice.FaceOrientation3D.Forward.PositionCenterZ"]},{"type":{"value":"SetCenter"},"parameters":["Face_sprite_3D","=","Dice.FaceOrientation3D.Forward.PositionCenterX","=","Dice.FaceOrientation3D.Forward.PositionCenterY"]},{"type":{"value":"Scene3D::Base3DBehavior::SetRotationX"},"parameters":["Face_sprite_3D","Object3D","=","Dice.FaceOrientation3D.Forward.AngleX"]},{"type":{"value":"Scene3D::Base3DBehavior::SetRotationY"},"parameters":["Face_sprite_3D","Object3D","=","Dice.FaceOrientation3D.Forward.AngleY"]},{"type":{"value":"SetAngle"},"parameters":["Face_sprite_3D","=","Dice.FaceOrientation3D.Forward.AngleZ"]},{"type":{"value":"ResizableCapability::ResizableBehavior::SetSize"},"parameters":["Face_sprite_3D","Resizable","Dice.Width()","Dice.Height()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["Face_sprite_3D","FaceNumber","=","2"]}],"actions":[{"type":{"value":"Scene3D::Base3DBehavior::SetCenterZ"},"parameters":["Face_sprite_3D","Object3D","=","Dice.FaceOrientation3D.Right.PositionCenterZ"]},{"type":{"value":"SetCenter"},"parameters":["Face_sprite_3D","=","Dice.FaceOrientation3D.Right.PositionCenterX","=","Dice.FaceOrientation3D.Right.PositionCenterY"]},{"type":{"value":"Scene3D::Base3DBehavior::SetRotationX"},"parameters":["Face_sprite_3D","Object3D","=","Dice.FaceOrientation3D.Right.AngleX"]},{"type":{"value":"Scene3D::Base3DBehavior::SetRotationY"},"parameters":["Face_sprite_3D","Object3D","=","Dice.FaceOrientation3D.Right.AngleY"]},{"type":{"value":"SetAngle"},"parameters":["Face_sprite_3D","=","Dice.FaceOrientation3D.Right.AngleZ"]},{"type":{"value":"ResizableCapability::ResizableBehavior::SetSize"},"parameters":["Face_sprite_3D","Resizable","Dice.Height()","Dice.Object3D::Depth()"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["Face_sprite_3D","FaceNumber","=","3"]}],"actions":[{"type":{"value":"Scene3D::Base3DBehavior::SetCenterZ"},"parameters":["Face_sprite_3D","Object3D","=","Dice.FaceOrientation3D.Up.PositionCenterZ"]},{"type":{"value":"SetCenter"},"parameters":["Face_sprite_3D","=","Dice.FaceOrientation3D.Up.PositionCenterX","=","Dice.FaceOrientation3D.Up.PositionCenterY"]},{"type":{"value":"Scene3D::Base3DBehavior::SetRotationX"},"parameters":["Face_sprite_3D","Object3D","=","Dice.FaceOrientation3D.Up.AngleX"]},{"type":{"value":"Scene3D::Base3DBehavior::SetRotationY"},"parameters":["Face_sprite_3D","Object3D","=","Dice.FaceOrientation3D.Up.AngleY"]},{"type":{"value":"SetAngle"},"parameters":["Face_sprite_3D","=","Dice.FaceOrientation3D.Up.AngleZ"]},{"type":{"value":"ResizableCapability::ResizableBehavior::SetSize"},"parameters":["Face_sprite_3D","Resizable","Dice.Object3D::Depth()","Dice.Width()"]}]}],"eventsCount":4,"actionsList":[],"actionsCount":0,"conditionsList":[],"conditionsCount":0}}

And on the game results it is possible to see that one of the faces have a weird rotation on itself instead of following the cube:


This seems to happens only when cube move along Z axis or rotate on all axis, I am not sure which one.

So if anyone could help, I would be glad.

Thank you very much in advance people.

This sounds so much harder than using the built-in cube. You can set all six faces to different images… is there a specific reason you’re not doing that?

3D rotation is broken or to be precise NOT precise

Use