I've got a procedure that finds a specific node if it's present in object's shader network.
I need to optimize it as much as possible.
proc string getSSSNodeForObject(string $object) // find mfMSubsurface node in shader
{
string $nodes[1];
$nodes[0] = $object;
if(objectType($nodes[0]) == "transform") $nodes = `listRelatives -f -s $nodes[0]`;
$nodes = `listConnections -s 1 -type "shadingEngine" ($nodes[0] + ".instObjGroups[0]")`;
if(!size($nodes)) return "";
$nodes = `listHistory -pruneDagObjects 1 $nodes[0]`; // -pruneDagObjects 1 speeds up a lot !!
$nodes = `ls -type mfMSubsurface $nodes`;
if(!size($nodes)) return "";
return $nodes[0];
}
I found that -pruneDagObjects 1 flag gave a huge speed up, but the procedure is still slow for bigger scenes. Do you have any ideas ?