PropertyLister 0.8.3

 

This program is for viewing and modifying properties of several types of objects in 3DSMax. These objects include scene objects that derive from the maxwrapper class via the node class, materials, and any and all renderer classes. Given enough time this program can be used to inspect any object in max that is ‘scripter visible’, which means any object that can be controlled from the maxscript command line.

 

Motivation:

 

  • To enable mass editing of object properties from one location
  • To learn about class hierarchies
  • To put all the commonly used properties of a scene / object / material in one easy to access place.

 

Features:

  • Enables editing of Materials, the base class properties, the modifiers and ALL of the

      Node's properties. Note: Max Parent classes do not have any properties to expose. Any

      properties in the Parent classes are usually overridden in the base class anyway.

  • Use pick button(s) to select and edit properties on single or multiple objects. Or select Items and run script, or run script and select items
  • Point3 data properties have been fully implemented so as to be able to pick points

      from the scene and update the GUI in the PropertyLister!!

  • Color data has been fully implemented with sub properties exposed for objects of the color

      class. Rows that represent color properties are colored with the same color for simplicity

      in picking it out. I couldn't change the background color of the editText controls unfortunately

  • Right Click menu has been implemented.
  • Right Click to add tweaks to a tweak hierarchy. Add any property by right clicking and selecting the

      button on the popup menu that says "Add to tweaks". To view tweaks just select the appropriate

      item in the mode list.

  • Middle Click a row to update it's value resulting from changes done outside the property lister
  • Script will display the properties of the current renderer. Has been tested with Brazil, the Scanline

      renderer, and with Vray.

  • Supports displaying the renderer according to a property sheet, so as to keep the same ordering as in the RenderSceneDialog. In other words, you can choose which properties of the renderer to expose to the PropertyLister, so as to avoid cluttering the dialog with unused properties.
  • Supports user entering in variables from the command line and monitoring them.
  • Script supports viewing of ONLY common features when viewing/editing/listing multiple objects. just like AutoCAD. For example, selecting a box and sphere will only show properties common to both of them (In this case the properties of their parent class which is node).  On the other hand selecting 2 boxes will show information for both the node class and the box class.
  • PropertyLister responds to object deletion events.
  • PropertyLister responds to object renaming events.
  • AutoRefresh can Be turned on and off. This can be used as a watch list for general programming tasks, and especially for debugging. The refresh interval can be set manually.
  • This saves some preference variables to an INI file.

 

Bugs:

            Are listed in the heading of the macroscript.

 

Wish List:

            To do and wish list items are listed in the heading of the macroscript.

 

Screen Shots:

(Figure 1: Showing properties in object mode. Note the object is NOT selected. )

 

Figure 1 shows the program in objects mode. That funny looking object on the right is a rectangle shape with six  modifiers on it’s stack. The screen shot shows the expanded rectangle group, representing the rectangle class. The properties exposed are the same properties that are accessible on the modifier command panel. So in a few cases this program can be used to replace the command panel. The groups or classes shown are as follows (from bottom to top):

  • The Material Class: This object has a brazil advanced material on it. It’s colored red to differentiate it from the other groups. I Placed it on  the bottom because is was simply convenient to put it there. Materials actually are member variables of the node class, and as such should have been included inside of node group. However I placed the material in it’s own group because it is so frequently used.
  • The Node class. This is the parent class to almost every single object the artist works with inside of 3DSMax. This group takes along time to generate, but is filled with very useful properties, many of which I had no idea existed until I wrote this program.
  • The rectangle class. Described above.
  • The Modifiers. In Max the top modifier actually was the lowest number. I have labeled the modifiers as such to remain consistent with 3DSMax naming convention.  When a modifier has no scripter visible properties, then the group representing the modifier will have no children nodes and as such remain essentially as a label as is the case with the above fillet/chamfer modifier.
  • Node Common Properties Group. I included this to add the same functionality as the property dialogs that can be accessed through normal max dialogs. I also included it to simplify accessing commonly used features that are ALREADY in the node group. However the difference in this group from the node class is, that this group is customizable through a maxscript (.ms) file!

 

(Figure 2: Showing the material properties expanded. )

 

Figure 2 shows the internals of the Brazil Advanced material. Color properties have their fields filled with the same color they represent. Colors however are a class with 3 member variables, thus each color property has 3 sub properties. As such each color node has 3 child nodes which can be shown upon expanding the parent color node. Note, the various map properties are shown as blanks they were all unused when the script was run. However notice the bmtl_Cs_map properties has a + next to it. That is the color channel, and it however does have properties that can be inspected and modified upon expanding that node.

 

(Figure 3: Showing the currently assign production renderer)

 

Figure 3 shows the currently assigned renderer and the common properties that are independent of each renderer. The groups shown above are organized after the rollouts and subgroups in the render dialog. The Brazil renderer shown here for instance has been organized here according to a style sheet that is simply a maxscript (.ms) text file. This can be modified by the user to show whatever grouping or organization they prefer. All other renderers can also have their properties exposed in an orderly fashion provided someone writes a suitable style sheet.

 

(Figure 4: Tweaks display. )

 

These are called tweaks for lack of imagination to call them anything else. It is really just a collector for favorite properties, that can be accessed in one location. This is helpful in keeping the artist or technician from ‘running’ all over max to modify scene properties. With this all favorite properties can be accessed in one place. In the above picture, 4 different commonly used properties have been collected in one accessible place. If the user is not satisfied and wants more, then can go back to the other dialogs and collect and add more properties to the tweaks display. Currently this feature is still in an early stage compared to the rest of the program, and could use some polishing of the user interface.

 

(Figure 5: Variables mode, or watch list)

 

This is a ‘catch all’ for displaying any other type of variable which inherits from the Value class but which has no user interface. In this case shown above, I created an array called ‘chris’. Normally chris is only accessed via the command line, but here chris is displayed by the property lister. First the array was created on the command line. Second, it was typed into the property lister. Then auto refresh was turned on. Thirdly in the command line the 3 element of the array was changed  tofoo”, whereupon the propertylister quickly updated the value for the 3rd element of the array. Conversely values can be entered into the property lister for any array element, and the array will be changed in the maxscript listener.

 

October 8 2004:

PropertyLister is still under development and is not available for general release at this time. Though stay tuned for updates.

 

Chris Johnson

Alpine, Utah