How to Find Morphs by Specific Artist in Shaping Tab/Panel?

Hi,

I already know how to find content by a specific artist in the Smart Content panel, but I'm trying to sort through a mountain of morphs to find only morphs by a particular artist in the Shaping tab. If you know how to do this, or if there's a better way to do it, please tell me. Because there don't appear to be any hard and fast rules on naming conventions (or even content locations in some situations) a lot of simple tasks can become headache inducing. Someone suggested uninstalling everything except the content by the artist I'm searching for, but that's simply too much. I'm sure there has to be a way. If it matters, the artist is Daz Originals, which must be searched under both "key::DAZ Originals" and "key::Daz 3D" depending on what content I'm looking for when I'm looking in the Smart Content panel. For all I know there may be additional key terms for content that appears under neither of those, but that is beside the point. I just need to know how to find all the morphs associated with that PA so that I can apply them to a character while I'm working on said character. I tried looking at each package and then the list of files in each package and then sorting through the morphs to find said shapes, but that is a mind-numbing PITA, especially since I can't seem to find exact morphs associated with a given package at times.

Thank you!

Comments

  • I have a script that parses the Data\...\morphs folder to list morphs by path from oen or more products, but I haven't released it as it needs reworking to handle encrypted content (which can't be parsed) and Connect in General (where each folder is in its own unique sub-folder) - updating it to get the product details from the morph asset is on my to-do list, one of these <insert unit of time here>s. If the existing version would be useful (you could, as long as theya re DIM installs, browse to the vendor sub-folder in Morphs and parse just that) then I can add a readme and let you try it.

  • Heh, and Rob has dropped a hint on how to do that - forums (and dinner with sister) permitting I'll try to make the modification to my script (which will be more elegant as well as more flexible than the current approach).

  • Well, this isn't a version of my script but a quick and dirty implementation of rob's suggestion - the target figure must be selected, and you will have to set the author field on line 12. It just gives a list of morph labels (in the log if you run the script from a file, or under the big text box if you run it from the ScriptIDE pane)

    var fig = Scene.getPrimarySelection();if ( fig ) {	// Get geometry	var object = fig.getObject();	if ( object ) {		// modifiers		var numMods = object.getNumModifiers();		// and go through the list		var curMod;		for ( var n = 0 ; n &lt; numMods ; n++ ) {			curMod = object.getModifier( n );			if ( curMod.assetAuthor.name == "Daz 3D" ) {				print ( curMod.getLabel() );			}		}	}}

     

  • Richard HaseltineRichard Haseltine Posts: 97,215
    edited March 2017

    And Rob has now suppl;ied a tidied up version of that, and added the path (which I'd also just added to my version, but I'll spare you that):

    (function( sAssetAuthor ){		var oNode = Scene.getPrimarySelection();	if( !oNode ) {		return;	}		if( oNode.inherits( "DzBone" ) ){		oNode = oNode.getSkeleton();	}		var oObject = oNode.getObject();	if( !oObject ) {		return;	}	var oModifier, oProperty;	for( var i = 0, nModifiers = oObject.getNumModifiers(); i &lt; nModifiers; i += 1 ){		oModifier = oObject.getModifier( i );		if( oModifier.inherits( "DzMorph" ) &amp;&amp; oModifier.assetAuthor.name.toLowerCase() == sAssetAuthor.toLowerCase() ){			oProperty = oModifier.getValueChannel();			print( oProperty.getPath() + "/" + oProperty.getLabel() );		}	}	})( "Daz 3D" );

    To search for a different author just change the quoted text on the last line. Further updated by Rob to remove case dependence, I had noticed that there was a mix of Daz and DAZ in the names (and I'm not sure there weren't some variants beyond that - I was considering using startsWith rather than equality as the test).

    Post edited by Richard Haseltine on
Sign In or Register to comment.