Open canny[bot] opened 8 months ago
This issue has been linked to a Canny post: Applied "Prim Property" PBR Materials Do Not Update When Altered in Prim Inventory :tada:
Importing for documentation and possibly better labeling in the UI about what is going on. There is further discussion in the the canny issue.
See canny discussion -- something like a "Save and Apply" button would be good, but don't make the UI pretend the material is being instanced.
Place a Material within a Prim inventory.
Apply it to object faces with LSL ApplyRenderMaterial Function.
Edit Material in Prim Inventory. Press "Save". Observe it is not updated.
This further complicates things when attempting to use Local Textures.
PBR materials exist in two different copies:
1 : Stored inside an inventory. ( Personal or Prim )
2 : When applied to an Object, in the object face "Inventory" << reason for these quotes below.
This makes sense in the context of an LSL script, or any other editable asset within SL, but those objects appear within the inventory of the Prim when Applied.
PBR materials function identically, but there is no UI notification to alert the user of this.
When you apply a PBR material to an entity ( logically of course ) it makes a copy of itself, thus letting someone else with full perms adjust it, while the original remains unaltered.
Local textures are able to be applied to both In-User-Inventory PBR materials, In-Object-Inventory (the visible one) , as well as In-Face-"Inventory" PBR materials ( that are actively applied to faces) However, you can edit the ones in your personal inventory, as well as the ones in the object inventory, and the ones actively displayed upon the object WILL NOT UPDATE ( as they are in face "Inventory" ) even after "Save" is clicked. The only time that pressing "Save" on the material that you have chosen to edit, actively updates the visible material is when the Material that is currently being edited resides in the object face "Inventory". Personal inventory, and Object Inventory updates are not-re-broadcast until the newly saved material is either dragged and dropped from Inventory >> Face "Inventory" or an LSL script event transfers it from Object Inventory >> Face "Inventory". This makes logical sense, when you understand the mechanics of what is taking place, but it does not make user sense; due to the configuration of the UI, and our previous mental patterns regarding how textures are applied don't align with this. As such a lot of our expectations regarding how things should work do not match reality.
While I am unsure precisely what to do about this predicament. My best suggestion is as follows :
I believe Materials residing in the inventory of the object should auto-update all related Face "Inventories" when they are modified and the user clicks the "Save" button on the Material Asset residing within a prim inventory. This material is discrete and does not have additional copies, unless it is removed so force updating it makes sense. This has parity with what happens when you delete the Material Asset from the Prim inventory, and it reverts to a pine box.
I also believe User-Inventory materials should not be allowed to contain Local Texture links, as this starts to become exceedingly confusing from the end-user perspective. Either place a large notification on the "Local" Tab of PBR materials with "This item resides in your inventory, and changes will not be updated until re-applied to objects, please place a copy in prim inventory to use this." or remove the functionality altogether and replace with a similar message.
https://secondlife.canny.io/admin/board/bug-reports/p/applied-prim-property-pbr-materials-do-not-update-when-altered-in-prim-inventory