Page MenuHomeFeedback Tracker

Engine Rotation Issues - Loss of Axis Rotation in Local Space
Assigned, NormalPublic

Description

When a point is rotated more than 90 degrees on two axes in local space, one of the axes is lost. This issue is difficult to understand without examples, so here are some.

With SetOrientation()

// offset is vector in angles
armorPiece.SetOrientation(offset + "0 90 90");

This should logically rotate the object with an offset of +90 degrees on both the Y and Z axes.
Tests with different offsets:
offset = "0 0 0"


offset = "90 0 0"

offset = "0 90 0"

offset = "0 0 90"

As you can see, the X axis is completely lost.

InventorySlotsOffsets Issue
This issue is easiest to replicate using InventorySlotsOffsets.
Here, I add the InventorySlotsOffsets for the Belt_Right slot to the holster:
"0 90 90"


"90 90 90"

"0 180 90"

"0 90 180"

Details

Severity
Major
Resolution
Open
Reproducibility
Always
Operating System
Windows 11 x64
Operating System Version
10.0.26100
Category
Engine
Steps To Reproduce

Easiest one is with InventorySlotsOffsets just rotate more than 90 in two axes, then add another another rotation in all axes to see the difference.
Or with SetOrientation(offset + "0 90 90")

Additional Information

I'm no mathematician, so I can't say why this happens, but it's not an issue with the method, I tried different approaches, and the result was always the same.
If other modders have examples of this behaviour please share them.

Event Timeline

Genriet1 created this task.Mar 15 2025, 3:30 PM
Genriet1 updated the task description. (Show Details)Mar 15 2025, 11:22 PM
Geez changed the task status from New to Assigned.Mar 17 2025, 12:13 PM