ArrayParameter Values

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.

Notes

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

 

Examples

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