# Meshes with transforms look broken

**URL:** <https://forum.aousd.org/t/meshes-with-transforms-look-broken/2680>\
**Category:** USD\
**Created:** [September 8, 2025, 2:30am UTC](https://forum.aousd.org/t/meshes-with-transforms-look-broken/2680 "2025-09-08T02:30:56Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Clicky](https://avatars.discourse-cdn.com/v4/letter/c/3be4f8/32.png) [@Clicky](https://forum.aousd.org/u/Clicky)\
**Post date:** [September 8, 2025, 2:30am UTC](https://forum.aousd.org/t/meshes-with-transforms-look-broken/2680/1 "2025-09-08T02:30:56Z")

</div>

Hello there AOUSD forums.

I’m writing a USD Exporter for Rhino3d and running into an odd issue when using references. Below is a screenshot of what it looks like with the mac preview (usdview also looks like this). As far as I can tell, if I remove the transforms the geometry is fine, but the second I add them back, it gets very strange. The transforms are all simple X/Y translations and involve no scaling whatsoever.

What might be causing this issue? My best guess is my meshes are bad but I’m not sure how best to diagnose this.

 ![image](https://us1.discourse-cdn.com/flex016/uploads/aousd/original/1X/c30a95d1c3f5520a5cad763719a5e825fece9438.jpeg)

[filetest.usda](https://forum.aousd.org/uploads/short-url/9wKOycNO23LDYFDXvr5g3zLeSvA.usda) (18.3 KB)

[Block-01.usda](https://forum.aousd.org/uploads/short-url/edLdPpn8d3COSmL2Ol5zSWszdzY.usda) (65.8 KB)

---

<div class="post-metadata">

**Author:** ![deadpin](https://avatars.discourse-cdn.com/v4/letter/d/43a26b/32.png) [@deadpin](https://forum.aousd.org/u/deadpin)\
**Post date:** [September 8, 2025, 6:07am UTC](https://forum.aousd.org/t/meshes-with-transforms-look-broken/2680/2 "2025-09-08T06:07:56Z")

</div>

Looks like you wrote out the transform matrices with column-major convention rather than row-major. Here’s what your file looks like if I manually fixup your first 6 instances:

 ![matrix](https://us1.discourse-cdn.com/flex016/uploads/aousd/original/1X/f821bf1fe5dfc58bd4bd8301ca0a5f3801547563.png)

---

<div class="post-metadata">

**Author:** ![Clicky](https://avatars.discourse-cdn.com/v4/letter/c/3be4f8/32.png) [@Clicky](https://forum.aousd.org/u/Clicky)\
**Post date:** [September 8, 2025, 7:05am UTC](https://forum.aousd.org/t/meshes-with-transforms-look-broken/2680/3 "2025-09-08T07:05:06Z")

</div>

@deadpin thank-you so much for reading, and solving my issue 🥳🥳🥳. Doing this prevents any broken geometry.

The rotation is 90 degrees wrong when I make this change, but I think that might be to do with upAxis. I’ll investigate that further!

---

<div class="post-metadata">

**Author:** ![spiff](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.aousd.org/spiff/32/22_2.png) [@spiff](https://forum.aousd.org/u/spiff)\
**Post date:** [September 8, 2025, 5:47pm UTC](https://forum.aousd.org/t/meshes-with-transforms-look-broken/2680/4 "2025-09-08T17:47:31Z")

</div>

If you use the UsdGeomXformable API’s on the Mesh to set the transformation (or the UsdGeomXformCommonAPI), you can set the translate (and other) components individually, and not need to worry about constructing a complete, properly oriented 4x4.

---

<div class="post-metadata">

**Author:** ![Clicky](https://avatars.discourse-cdn.com/v4/letter/c/3be4f8/32.png) [@Clicky](https://forum.aousd.org/u/Clicky)\
**Post date:** [September 8, 2025, 8:34pm UTC](https://forum.aousd.org/t/meshes-with-transforms-look-broken/2680/5 "2025-09-08T20:34:21Z")

</div>

That makes sense @spiff, unfortunately I only receive a transform matrix from Rhino. I guess I could deconstruct it?

---

<div class="post-metadata">

**Author:** ![spiff](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.aousd.org/spiff/32/22_2.png) [@spiff](https://forum.aousd.org/u/spiff)\
**Post date:** [September 8, 2025, 11:09pm UTC](https://forum.aousd.org/t/meshes-with-transforms-look-broken/2680/6 "2025-09-08T23:09:51Z")

</div>

Ah… given the inherent trickiness is distinguishing reflections from rotations in matrix decomposition, may not be worth trying to do if you’re only given a matrix!
