Perfectly overlapping UV islands (result from applied mirror modifier) of exported FBX mesh get broken into individual polygon UV islands when imported into Maya 2018 #57308

Closed
opened 2018-10-19 15:52:53 +02:00 by Manu Järvinen · 10 comments

System Information
Windows 10, NVIDIA Quadro P4000

Blender Version
Broken: official 2.79b (f4dc9f9d68b)
Broken: blender-2.79.0-git.de3f9303eb9-windows64 (de3f9303eb9 - 2018-10-18 18:21) (the latest I could find in builder.blender.org this day)

Short description of error

  1. Mesh in Blender ready to be exported as FBX (unwrapped UVs for one arrow, then Mirror modifier applied):
    image.png

  2. As a result of the applied Mirror modifier, both arrows have the perfectly ovelapping UVs on top of each other (very commonly used technique in game development to save texture space):
    image.png

  3. That FBX imported into Maya (thick white lines show the other arrow's UVs broken into several islands of single polygons, in other words, its UV polygons are not attached to each other anymore):
    image.png

  4. To visualize the issue, here are all the UV islands separated individually with margins in Maya 2018:
    image.png

Note 1 (Breaks): even that didn't get rid of the issue if I made a new cube, joined the mesh of the 2 arrows to the cube object and then deleted the cube mesh and after that exported the new arrows object as FBX. Same issue continued to happen.

Note 2 (Works, no issue): if I fully separate or even incredibly slightly offset the UV islands in Blender after applying the Mirror modifier and then export that object as FBX, they will appear perfectly as just 2 separate identical UV islands when the FBX is imported to Maya 2018, as is expected to happen in any case - this works as a workaround for now

Note 3 (breaks): in Blender, if I separate one of the UV islands by 1 unit in X-axis and after that move it back -1 unit in X-axis so that they once again align and overlap with each other perfectly, the same issue happens when exported as FBX and imported into Maya 2018.

Exact steps for others to reproduce the error

  1. Open the .blend
  2. Apply the Mirror modifier of the arrows object
  3. Export as FBX
  4. Import the FBX in Maya 2018

arrow1.blend

**System Information** Windows 10, NVIDIA Quadro P4000 **Blender Version** Broken: official 2.79b (f4dc9f9d68b) Broken: blender-2.79.0-git.de3f9303eb9-windows64 (de3f9303eb9 - 2018-10-18 18:21) (the latest I could find in builder.blender.org this day) **Short description of error** 1. Mesh in Blender ready to be exported as FBX (unwrapped UVs for one arrow, then Mirror modifier applied): ![image.png](https://archive.blender.org/developer/F5139375/image.png) 2. As a result of the applied Mirror modifier, both arrows have the perfectly ovelapping UVs on top of each other (very commonly used technique in game development to save texture space): ![image.png](https://archive.blender.org/developer/F5139485/image.png) 3. That FBX imported into Maya (thick white lines show the other arrow's UVs broken into several islands of single polygons, in other words, its UV polygons are not attached to each other anymore): ![image.png](https://archive.blender.org/developer/F5139464/image.png) 4. To visualize the issue, here are all the UV islands separated individually with margins in Maya 2018: ![image.png](https://archive.blender.org/developer/F5139577/image.png) **Note 1 (Breaks)**: even that didn't get rid of the issue if I made a new cube, joined the mesh of the 2 arrows to the cube object and then deleted the cube mesh and after that exported the new arrows object as FBX. Same issue continued to happen. **Note 2 (Works, no issue)**: if I fully separate or even **incredibly slightly** offset the UV islands in Blender after applying the Mirror modifier and then export that object as FBX, they will appear perfectly as just 2 separate identical UV islands when the FBX is imported to Maya 2018, as is expected to happen in any case - this works as a workaround for now **Note 3 (breaks)**: in Blender, if I separate one of the UV islands by 1 unit in X-axis and after that move it back -1 unit in X-axis so that they once again align and overlap with each other perfectly, the same issue happens when exported as FBX and imported into Maya 2018. **Exact steps for others to reproduce the error** 1. Open the .blend 2. Apply the Mirror modifier of the arrows object 3. Export as FBX 4. Import the FBX in Maya 2018 [arrow1.blend](https://archive.blender.org/developer/F5139700/arrow1.blend)
Author

Added subscriber: @ManuJarvinen

Added subscriber: @ManuJarvinen

Added subscriber: @brecht

Added subscriber: @brecht
Bastien Montagne was assigned by Brecht Van Lommel 2018-10-19 16:27:31 +02:00

I guess when converting the UVs to indexed format it should take into should group by identical (u, v, vertex_index) instead of only (u, v).

I guess when converting the UVs to indexed format it should take into should group by identical (u, v, vertex_index) instead of only (u, v).

@brecht I do not see why it should be that way, indexed format in FBX is precisely here to avoid having to write more that once the same data (set of UV coordinates in that case)… IMHO it’s MAYA which is broken here, not handling properly indexed coordinates (probably assuming indexed coordinates imply 'same' UV or something like that)… Kind of fear the only solution will be to add yet another option to the exporter: Do Not Use Indexed Data…

Not the first time I hit some illogical, incomprehensible limitation of that indexed data support in other FBX importers btw, remember having to limit its usage already in the past. I so much love FBX, the most incompatible format ever (un)defined, even autodesk's own products can’t use it properly. :'(((((((((((((

@brecht I do not see why it should be that way, indexed format in FBX is precisely here to avoid having to write more that once the same data (set of UV coordinates in that case)… IMHO it’s MAYA which is broken here, not handling properly indexed coordinates (probably assuming indexed coordinates imply 'same' UV or something like that)… Kind of fear the only solution will be to add yet another option to the exporter: Do Not Use Indexed Data… Not the first time I hit some illogical, incomprehensible limitation of that indexed data support in other FBX importers btw, remember having to limit its usage already in the past. I so much love FBX, the most incompatible format ever (un)defined, even autodesk's own products can’t use it properly. :'(((((((((((((

Not to mention that FBX has no way to convey the concept of UV islands…

Not to mention that FBX has no way to convey the concept of UV islands…

The purpose of indexed UVs is not only to avoid the memory duplication, it also defines islands connections.

I don't think there needs to be an option, there is no harm in having the same UV coordinate duplicated when it belongs to a different mesh vertex. It's just a little less memory efficient.

The purpose of indexed UVs is not only to avoid the memory duplication, it also defines islands connections. I don't think there needs to be an option, there is no harm in having the same UV coordinate duplicated when it belongs to a different mesh vertex. It's just a little less memory efficient.

This issue was referenced by a2e1c4f1d1

This issue was referenced by a2e1c4f1d1a236bbce714cb3ca52b3493c13aea7

Changed status from 'Open' to: 'Resolved'

Changed status from 'Open' to: 'Resolved'

@brecht applied your suggestion (hopefully it does fix the issue, have no way to test it).

But I still believe that this is once again abusing and twisting the format, those mappings are used for all kind of data types in FBX, so enforcing some custom weird half-broken behavior on a specific type to encode another info is really, really bad practice… Not surprising from that PoS of a format, though, it loves doing that kind of things. :(

@brecht applied your suggestion (hopefully it does fix the issue, have no way to test it). But I still believe that this is once again abusing and twisting the format, those mappings are used for all kind of data types in FBX, so enforcing some custom weird half-broken behavior on a specific type to encode another info is really, really bad practice… Not surprising from that PoS of a format, though, it loves doing that kind of things. :(

This kind of UV indexing is not specific to FBX and quite standard in various 3D apps and renderers. But it's rarely specified well or explained why it matters (e.g. connectivity for smooth UVs for subdivision surfaces).

This kind of UV indexing is not specific to FBX and quite standard in various 3D apps and renderers. But it's rarely specified well or explained why it matters (e.g. connectivity for smooth UVs for subdivision surfaces).
Sign in to join this conversation.
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender-addons#57308
No description provided.