ynput / ayon-maya

Maya addon for AYON
Apache License 2.0
3 stars 6 forks source link

Maya Look Publishing: Do not reconvert textures if files are unchanged (e.g. `.tx` files) #7

Open BigRoy opened 2 months ago

BigRoy commented 2 months ago

Is there an existing issue for this?

Please describe the feature you have in mind and explain what the current shortcomings are?

The Look publishing in Maya currently allows performing automatic .tx file conversions for publishing - however this can be slow for many and large textures whereas often - with a look update - it may just be the case that you only happen to be updating a few textures (or even none if just changing the materials!)

It would be great to allow not reconverting the files if it matches the last conversion.

maketx supports this natively with the -u (update) flag which basically only replaces the destination file if certain attributes are changed. That logic for maketx is here. We are actually already using that flag but still re-encode the textures each time, because we write into a new empty staging directory.

How would you imagine the implementation of the feature?

Are there any labels you wish to add?

Describe alternatives you've considered:

Note that in Avalon there was - for some time - a source hash feature for which some logic still persists, but currently the AYON database has no easy means to just query the database for "find me a match with this hash". If we can easily find a hash among ANY published textures this may even optimize among publishing the same texture from multiple assets, etc.

Additional context:

Even though this is currently an issue focusing on Maya the issue (and potentially solutions) would preferably transfer well to other integrations or logic, like e.g. texture publishing from substance painter or look texture publishing from Houdini USD.

BigRoy commented 2 months ago

Instead we could persist the intermediate generation to a persistent intermediate directory where these files will be maintained - so that future maketx calls can be more efficient. (easiest?)

Note that doing this - e.g. just creating the .tx files next to the source textures or elsewhere on the server does have the downside that we're writing the .tx files most likely over the network directly which may affect write time for the maketx call if it suffers from the write speeds compared to a local staging dir write before the transfer.