State:New|TargetRelease:No Target|icon_bug|database:public|icon_mari|Resolution:Fixed|BugID:548398|
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
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