Undocumented propertysettings_dz - is this the same as the old DzSettings? What's a key string?
(I've copied this post from here as a new thread, since it's not really related to the Iray renderer except by the context in which I was asking the question)
Using Rob's Render Settings - Find Property sample code I've got the properties I want. Now I look under DzProperty and reckon I need to do getAttributes / setAttributes, but the essential propertysettings_dz is as yet undocumented. I guess it's similar to the old DS3 DzSettings? So with a bit of educated guesswork I set up oProperty using Rob's sample code with "Environment Intensity" as the string and do this...
var oPsettings = new DzPropertySettings;
oProperty.getAttributes( oPsettings )
print('>>> oP "Environment Intensity" = ',oPsettings.getFloatValue())
...(I know getFloatValue requires parameters - I'm getting to that) and I get this...
DEBUG: Found: Environment Map
WARNING: Script Error: Line 1839
WARNING: SyntaxError: too few arguments in call to getFloatValue(); candidates are
getFloatValue(QString)
getFloatValue(QString,float)
In the old DS3 DAZ Script 2 documentation it gives this
Number DzSettings::getFloatValue ( String key, Number def = 0.0 )
Parameters:
key The key string.
QUESTION 1: What is "the key string" ?
QUESTION 2: Am I heading in the right direction ?
Comments
I'm guessing that 'key string' is probably related to 'key/value' pairs, with the key string being the name of a specific parameter in the settings. If that's correct then how do I find out what the key strings are for a particular 'settings'?
Try
to get the list of keys. I think the optional value in the two parameter version is so that you can set a default return if the key is undefined or missing. I used Rob's trick of going through the members of an object with
to get the list of objects to try.
Thanks Richard. I'm probably doing something stupid as usual because with this (my 'getIrayProperty' is basically Rob's 'findElementProperty' with the 'If the application version is 4.7.1.44' bits removed, and the rest is basically Rob's - so I guess the changes I've made are what's messing it up! :D )
function getIrayProperty(sIrayPropertyName)
{
var oElement, oProperty;
for( var i = 0; i < g_aRenderElements.length; i += 1 ){
oElement = g_aRenderElements[i];
if( !g_sElementName.isEmpty() && oElement.name != g_sElementName ){
if( !g_sElementName.isEmpty() )
continue;
}
oProperty = findElementProperty( oElement, sIrayPropertyName, false, true );
if( oProperty ){
break;
}
}
if( oProperty ){
print( "Found:", oProperty.getLabel() )
return(oProperty);
}
return null;
}
var oRenderMgr = App.getRenderMgr();
var oRenderer = oRenderMgr.findRenderer( g_sRendererClassname );
if( oRenderer ){
oRenderMgr.setActiveRenderer( oRenderer );
g_aRenderElements = oRenderMgr.getRenderElementObjects();
oP = getIrayProperty("Environment Map")
var oPsettings = new DzPropertySettings;
oP.getAttributes( oPsettings )
print("OPSETTINGS")
for ( var n = 0 ; n < oPsettings.getNumValues() ; n++ )
print ( oPsettings.getKey( n ) );
gives me this:
DEBUG: Found: Environment Map
DEBUG: OPSETTINGS
DEBUG: Label
DEBUG: Hidden
DEBUG: Path
DEBUG: UserProperty
DEBUG: CanAnimate
DEBUG: Locked
DEBUG: Manipulator
DEBUG: Favorite
DEBUG: GlobalFavorite
DEBUG: Selected
DEBUG: AutoFollow
DEBUG: XYZInterest
DEBUG: Clamped
DEBUG: Mapable
DEBUG: NeedMap
DEBUG: DefaultImageGamma
DEBUG: TextureModifierFlags
DEBUG: Min
DEBUG: Max
DEBUG: Sensitivity
DEBUG: AsPercent
Importing File...
which isn't anything like what I'm expecting.
I'd expect an image filename and a strength slider value as the attributes of the "Environment Map". I guess I'm confusing my elements, objects, properties, etc ?
Those are the Parameter settings, the same ones (mostly, at least) as you see in the dialogue you can open from the slider's gear icon.
What are you wanting to do - get the actual settings for the environment map? This seems a somewhat roundabout way to approach that though my brain seems to be making itss excuses and leaving so I may be missing the point.
Yeah, if you're looking to adjust the properties of the
Environment map
property, I think you're going down the wrong path with the Keys and Values business. It should be much easier than that, especially considering you've already found the property! =)Pretty sure you can expect the returned property to be a subclass of DzProperty, most likely a DzFloatProperty. Do a
print(oP.className())
to be sure. Anyway, figure out what class it is, get / set the values on it viagetValue()
,getMapValue()
, etc.Thanks, I had a feeling it was a level issue but for soem reason wasn't seeing how.
To be clear, the "keys" list above is the Property settings as Richard said. (Screenshot attached.)
Richard/djigneo: Ah, yes! That's it - digging into the 'attributes' is going one step deeper than I want. I'm a little puzzled that getMapValue() is in DzNumericProperty , but other than that I think it more or less makes sense now. With the setttings for the Environment Map property, this...
var oPsettings = new DzPropertySettings;
print("oP.getValue()="+oP.getValue());
print("oP.getMapValue().getFilename()="+oP.getMapValue().getFilename());
...gives me this...
DEBUG: oP.getValue()=2
DEBUG: oP.getMapValue().getFilename()=E:/DAZ/Studio4(64)/shaders/iray/resources/DTHDR-RuinsB-500.hdr
I also want to get at the 'Draw Dome' ( DzBoolProperty ?), 'Dome Mode' ( DzEnumProperty ?) and various other things in the attached screenshot. I think I'm on the right path now!
P.S. - djigneo - love your avatar!
i know it's an old thread but to increase the internet's codebase for this issue ...