Skip to Main Content
Corona Ideas Portal

The online platform for Corona users to submit, vote, and collaborate on creative suggestions.

Status Pending
Workspace Corona for 3ds Max
Categories Materials & Maps
Created by Marcin Miodek
Created on Sep 17, 2024

User property support for Corona Select Material/Map

What the user would like to achieve:

Let’s imagine a chair which is either a group of multiple objects or a single object made of multiple mesh elements. The backrest is using material A, the seat is using material B, and the legs are using material C. The user would like to render multiple configurations of the chair by changing only a single value. So for example, if he would set “chair preset” to 1, the chair would render with a leather backrest, wooden seat, and chrome legs; if he would set “chair preset” to 2, the chair would render with a plastic backrest, fabric seat, and aluminium legs, etc. The different materials could be using unique sets of textures or they might be also reusing the existing textures from the other presets (e.g. “chair preset 3” could be using the diffuse texture of “chair preset 1” but the bump texture of “chair preset 2”).

In the past, the user was able to achieve this kind of setup using a combination of OSL shaders and “Map Output Selector” (which seems to be some kind of Substance relic - 3ds Max Help ). This setup is however unreliable and it does not work in newer versions of 3ds Max.

The user’s idea for this workflow is:

  • Specify a user-defined property for the object(s) (Right click > Object Properties… > User Defined tab) - for example "chair = 1"

  • Then be able to select a specific “preset” (set of materials/textures) based on that user property

  • This way, for example, if we would set “chair = 1” as the user property of the chair object(s), this would result in rendering a specific set of textures/materials (we could also set chair = 2, chair = 3, etc for other user-defined sets of materials/textures)

One possible solution to this would be having multiple outputs in the Corona Select Material. In case of setting multiple outputs to “3” and picking “1” as the currently selected item, this would create outputs for textures “1”, “1B”, “1C” - similar to the way multiple outputs work in Corona Multimap.


The full workflow could then look like this:

  • Get an object (chair)

  • Create your materials (plastic, fabric, leather, wood, chrome, aluminium,...)

  • Add a specific user property to your object ("chair = 1")

  • The new map (or the improved Corona Select Material) would look for the variable "chair". When chair = 1, it would output materials which are assigned to slots 1A, 1B, 1C (e.g. leather, wood, chrome) and output them.

  • The final material could be a 3ds Max Multi/Sub-Object material with all the outputs of the Corona Select Material plugged into all its slots. This way leather material is applied to chair backrest, wood material is applied to chair seat, and chrome material is applied to chair legs.

  • When user changes the user property chair to 2, that would trigger the Corona Select Material to output materials 2A, 2B, and 2C to the Multi/Sub-Object material.