I am interested in exploring the new MaterialShading function. I have created a Manipulate object with two fields for making a Graphics3d object of ExampleData's built-in cases. The first parameter relates to the material the object is made of, and the second relates to which object in ExampleData["Geometry3D"] is displayed. I would like to somehow introduce a third field if the user selects Plastic or Glazed for color. I have used the following resources:
- Advanced Manipulate Functionality
- Manipulate Documentation
- Materials from Wolfram University Study Group Creating Custom User Interfaces
A generalization of this question:
- Given a function that accepts n number of arguments f[e1,e2,e3,...en]
- where not all arguments are required
- and the last argument is only applicable to certain inputs for the first inputs
- how to create a Manipulate object that works around this.
Manipulate[
Graphics3D[{MaterialShading[material],
ExampleData[{"Geometry3D", object}, "GraphicsComplex"]},
Boxed -> False,
Lighting -> "ThreePoint"], {material, {"Aluminum", "Brass",
"Bronze", "Copper", "Electrum", "Gold", "Iron", "Pewter", "Silver",
"Clay", "Foil", "Glazed", "Plastic", "Rubber", "Satin",
"Velvet"}}, {object, ExampleData["Geometry3D"][[All, 2]]}]