I had to do this not too long ago.  Ugh.

I've already reported the problem with formal request for feature to get such 
data.

You can approach it from a few different angles.  In my case I needed to write 
an exporter to dump the scene to a file, plus the override information as 
deltas relative to the default pass to minimize the amount of data in the file.

I started in the default pass and built a map recording the material - 
object/cluster relationship to act as a lookup table.  I then iterated through 
the override properties in the other passes to find what was overridden.  Each 
time I encountered an overridden parameter, I did the reverse lookup into my 
map to find the original material assigned to the object/cluster and did the 
'diff' to determine if the overridden parameter's value changed.  If so, it was 
dumped to file.

The main bottleneck was waiting for Softimage to update the scene when 
switching passes.  Unfortunately that was necessary as the SDK only provides 
override information in the current pass.


Matt



From: softimage-boun...@listproc.autodesk.com 
[mailto:softimage-boun...@listproc.autodesk.com] On Behalf Of Vladimir 
Jankijevic
Sent: Wednesday, June 05, 2013 5:32 AM
To: softimage@listproc.autodesk.com
Subject: SDK: Find out if material is locked by Override

Hello List,

I thought this would be easy but I didn't find anything in the docs so I 
thought i may ask here if someone has a clever solution for my problem.

If we create an Override which overrides a parameter on a material, Softimage 
automatically generates a copy of that material in question and assigns it to 
the object which previously had the original material applied. Now in the 
explorer, we can see that the original material has an annotation on it saying 
'<Locked by Override>' and the duplicate has one saying '(LOCK) <Created with 
Override>'. My question is, how can we find out that the original material has 
been locked by an Override within the SDK? I tied everything that is known to 
me with no luck. It seems that the automatically generated material has a lock 
and can be tested for that by LockType, isLocked and LockLevel. But the 
original one shows no sign of anything locked going on with it. It even isn't 
assigned any more and UsedBy returns an empty collection. Not even the 
parameter that got overridden is detectable as such. I can't find any 
connection between the original material and it's copy originating from the 
master material.
Sure, when I can get hold of the duplicate, I can find the original one but not 
the other way around.
I would be glad for any suggestions regarding this problem. Otherwise I'm going 
to log this as a Improvement request.

Thanks guys (and gals :) )

Vladimir


--
---------------------------------------
Vladimir Jankijevic
Technical Direction

Elefant Studios AG
Lessingstrasse 15
CH-8002 Zürich

+41 44 500 48 20

www.elefantstudios.ch<http://www.elefantstudios.ch>
---------------------------------------

Reply via email to