ID 548398 - Ptex Object Versions can be added to UV Objects, which converts the whole Object to Ptex and prevents Paint nodes from being created on the original Version

Follow

Problem summary

Ptex Object versions can be added to UV Objects if the new version is not UV mapped. This effectively turns a UV Object into a Ptex Object, meaning that some functionalities, such as the UV Canvas tab, become unavailable for all Versions of the Object.

After this happens, Paint nodes can only be created if the Ptex Object Version is currently selected.

This can only occur when loading a new Object Version using a geometry file that is missing UVs. Loading .ptx geo files correctly results in an error. Loading an UVd geometry file correctly does not offer the option of forcing Ptex.

 

Customer reported version
Mari 6.0v3

 

Customer reported platform
CentOS 7

 

Steps to reproduce

  1. Create a new project using a geometry file with UVs, such as Teapot.obj
     
  2. In the Objects palette, right-click the Object and select Add Version
     
  3. Add a geometry file with no UVs, such as Teapot_no_UV.obj, as a new Object Version
     
  4. In the Ptex Creation dialog, click Ok 
    Note that the UV and UV/Ortho Canvas tabs are still enabled
     
  5. Save, close and reopen the project
    Note that the UV and UV/Ortho Canvas tabs are now greyed out
     
To reproduce problematic behaviour resulting from combination of UV/Ptex Geo Versions:
  1. Switch Object Version to the original, UVd geometry
     
  2. Try to create Paint nodes
 

Expected behaviour

Attempting to load a Ptex Version on non-Ptex Object should result in an error, similar to the one shown for .ptx meshes:

 

Actual behaviour

It is possible to load a Ptex Version on a non-Ptex Object if the geometry file being added has no UV mapping. This converts the whole Object into a Ptex Object, and there is no way to convert it back to a UV Object.

This disables all UV related functionalities, such as the UV Canvas tab, or exporting textures as image files in UV format. 

It also prevents Paint nodes from being created in the original Version, for which the MariLog.txt reports:

Debug : [ MriShaderNetwork.cpp:2276] : [ !! ] Failed to create an image set on GeoEntity 'Teapot'

It can also be confirmed that this issue has occurred by exporting the new Object Version out of Mari and viewing its UVs in a UV Editor in a 3D package, such as Modo. Every face will be in UDIM 1001 as a separate UV Shell, and all Shells will be laid out in an L shape. This is the way Mari processes geometry that is used as Ptex. To export geometry out of Mari, use the following command in the Python Console palette: 

mari.geo.current().save("path/to/object.obj")

 

Workaround

Once this issue occurs, the best way to resolve it seems to be add a new, separate UV Object using the same geometry as before, and then copy over your texture data to this new Object. The simplest way to do this would be to just copy-paste the whole Node Graph. If for any reason that doesn't work, other methods such as Session Scripts or Node Transfer can also be used.

 

Reproduced by support 

This bug has been reproduced in:

Mari 7.0v2 - Windows 10, Rocky 9

Mari 7.0v1 - Windows 10

Mari 6.0v3 - Windows 10, CentOS 7

Mari 6.0v2 - Windows 10

Mari 4.2v1 - Windows 10, CentOS 7

 

Earliest version tested
Mari 4.2v1 - This issue appears to be in all tested versions of the product

    We're sorry to hear that

    Please tell us why