ArrayParameter Values

Value > ArrayParameter Values

 

   

Values and Collections - Quick Navigation

Certain plug-ins in 3ds Max store parameter data in a form that is accessible by MAXScript as ArrayParameters. As such, you can access the parameter data by index and iterate over the parameter data.

   

Constructors

<MAXWrapper>.parameter

Where the parameter contains an ArrayParameter.

   

Properties

<ArrayParameter>.count

Returns the number of values in the ArrayParameter. Read-only in most cases, with exceptions noted in the MAXWrapper object description where an adjustable ArrayParameter is used.

   

Operators

<ArrayParameter>[<integer>]

Returns element of ArrayParameter. Indexes start at 1.

   

<ArrayParameter>[<integer>] = <value>

Sets element of ArrayParameter to value.

   

Each ArrayParameter can only contain data of a certain type (for example, Float), or a controller that matches that data type. The showProperties() function indicates these array parameters as <type> array , for example, int array , texmap array , etc.

A plug-in can also define parameter names which point to specific entries in one of its ArrayParameters. For example, mapAmounts is a property of Standard materials containing an ArrayParameter. Each element in this ArrayParameter contains the map amount for one of the map channels. For easier access in a script, the Standard .ambientMapAmount property is provided as an alias for mapAmounts[1] (along with aliases for all the other common maps). You can access the controller for the ambientMapAmount alias either via the .controller property on the alias or on the .mapAmounts[1] property.

FOR EXAMPLE,

either

$foo.material.ambientMapAmount.controller

or

$foo.material.mapAmounts[1].controller

will gets the controller on the ambient map amount material property.

ArrayParameter values can be coerced to Array in 3ds Max 6 and higher.

FOR EXAMPLE

mtl = standard()
mapsArray = mtl.maps as array

The following script shows the use of showProperties() to show the data type for elements of ArrayParameters, access to ArrayParameter elements, and a case of a plug-in defining parameter names which point to a specific entry in one of its ArrayParameters.

SCRIPT

m=CompositeMaterial() -- create a Composite material
showproperties m -- show the properties for the material
m.amount -- show value of parameter amount
m.amount[1] *= .5 -- reduce the value for one element
m=standard() -- create a Standard material
showproperties m -- show it’s properties
m.ambientMapAmount=13 -- set the value for one element via its alias
m.mapAmounts[1] -- and show the element was changed 

OUTPUT

compositematerial:Composite -- result line 1
.materialList (Material : material array -- output line 2
.mixType (Composite Type) : int array -- ArrayParameter elements are integer
.mapEnables (Map Enable) : bool array -- ArrayParameter elements are boolean
.amount : float array -- ArrayParameter elements are float
OK -- result line 2
#(100, 100, 100, 100, 100, 100, 100, 100, 100, 100) -- result line 3
50.0 -- result line 4
Standardmaterial:Standard -- result line 5
.mapEnables (Map Enables) : bool array -- pruned output line 6
.maps : texmap array
.mapAmounts (Map Amounts) : percent array
.ambientMap (alias for maps[0])
.ambientMapAmount (alias for mapAmounts[0])
.ambientMapEnable (alias for mapEnables[0])
.bumpMap (alias for maps[8])
.bumpMapAmount (alias for mapAmounts[8])
.bumpMapEnable (alias for mapEnables[8])
13 -- result line 7
13.0 -- result line 8