Hints and Tips

Soft Instancing and expressions

By | Hints and Tips, Maxscript, Mission Control | No Comments

In advance of more detailed documentation being added to the website, I thought I would share a walkthrough that demonstrates some of the more novel features of Mission Control that I hope some of  you will find to be a huge time-saver. By following these instructions, you will be able to:

  • Quickly ‘instance’ individual parameters between objects (so called soft-instancing)
  • Perform calculations in-cell using values and/or object parameters.
  • Create expression controllers on the fly.


Before you start, please bear in mind that the “Enter” key does not work for ending the editing of cells. You need  to click on another cell or double tap the “tab” key to finish the edit.

  • Create two omni lights; omni001 and omni002.
  • Add the multiplier parameter column to the spreadsheet.
  • Select a float value.
  • Click to start editing the value.
  • Type “=2+2” and click on another cell to end the data entry (double tapping tab also works).
  • The value should now reflect the calculation.
  • You can also submit object parameters eg “$omni002.multiplier” as part of the calculation.
  • In the multiplier for omni001, type “=(omni002.multiplier *2) + 0.5)”
  • You should now see a value that reflects this calculation.
This approach is for single hit operations; eg there is no linking.
Lets try something else :-
  • In the multiplier for omni001, type “==omni002.multiplier” (Notice the double equals sign).
  • Now if you middle-click and adjust the multiplier of omni002, the multiplier for omni001 should also update.
  • You will also notice a blue indicator on the cell. This indicates that the cell now has an animation controller.
  • What has happened is that when entering “==” you are creating a scripted controller with the script entered following this prefix.
  • You can edit this expression in two ways.
    • double click the cell to open the expression editor.
  • or
    • click the status-bar to open the util bar.
    • Select the “Animation” tab.
    • Select the animated cell.
    • you should now see the expression in the ‘Expression’ box below.
    • You can also add notes to the “Notes box” which will be stored in the script controller.
    • You can now copy and paste this scripted cell to other cells as instances to quickly link the multipliers of many lights.

The camel that got the hump, or how I learnt to respect existing Names

By | Blog, Hints and Tips, Maxscript | No Comments

Whilst developing Mission Control for 3ds Max, I came across an unusual bug where a name I was using “#vrayproperties” was becoming camel-cased to “#vrayProperties” and causing my script to fail. I had previously called the name #vrayProperties, so I thought I hadn’t managed to change all the instances to non-camelCased, but after doing a string search and replace, there were definitely no cases of the camelCased version in my script.

I though that maybe the value was being retained in a global variable, but even restarting max didn’t fix the problem. Then I thought it might be a weird dotnet persistance issue, so I restarted windows… but still no joy! Then it clicked, perhaps the name is being defined somewhere else before my script is being executed? So, to test this I replaced #vrayProperties with #vrproperties, and lo and behold the problem was solved.

Lesson learnt, be careful with name naming!

Skip to toolbar