diff --git a/res/modules/animation.lua b/res/modules/animation.lua index 92c136eeb..258b87d70 100644 --- a/res/modules/animation.lua +++ b/res/modules/animation.lua @@ -187,10 +187,14 @@ local function codegen_track(raw_track, lineset, memoised, keysets, use_tsf) end local axis_names = {"X", "Y", "Z"} - for axis, var in ipairs(rotation) do + local axis_indices = {X=1, Y=2, Z=3} + local rotation_order = raw_track.rotation_order + for i=1,3 do + local axis = axis_indices[rotation_order[i]] + local var = rotation[axis] if var then code = code .. "\n mat4.rotate(dst, " .. axis_names[axis] .. - ",l" .. var .. ", dst)" + ", l" .. var .. ", dst)" end end diff --git a/res/modules/internal/formats/vca.lua b/res/modules/internal/formats/vca.lua index a44a89826..1cc48f0e3 100644 --- a/res/modules/internal/formats/vca.lua +++ b/res/modules/internal/formats/vca.lua @@ -25,6 +25,7 @@ local function parse_configure(raw_track, node) elseif node.duration then raw_track.duration = node.duration end + raw_track.rotation_order = string.upper(node["rotation-order"]) or "XYZ" end local function parse_curve(line, node)