About ] Mission ] Services ] Funding ] Opportunities ] [ Open Tools ] Crosbie's Stuff ]

Cyberspace Engineers

Engineering Cyberspace!

Open Tools



This is the document (in a state of continuous flux) describing the proposal for Open Tools:

Live Access to a Scene in Discreet 3D Studio Max

This is an open tool that enables live access to the current scene in 3DS Max by another concurrently running program.


At the moment it only exposes mesh info (points, vertices, faces), but naturally I hope to extend this, e.g. textures, etc.

I also intend to implement the ability for the client to propose live changes to the scene.

For this I will slightly adjust the Open Tool interfaces to represent communication of state change (rather than simply current state).


All we have in the zip file is a Max GUP plug-in, and a simple MSVC program that acts as a simple client. If Max is running, and a simple model constructed (a cube say), running the test program will dump the points and faces.

I've also included the IDL files.


This has only been tested with 3DS Max v3.1.

1) Bung the GUP in Max's plugin folder.

2) Get Max to register itself as a COM server for this plug-in, by issuing the command:

3dsmax -RegisterOTMax
(3dsmax -UnregisterOTMax achieves the reverse.)

3) Register the Proxy/Stub DLL:

regsvr32 OTMaxps.dll

4) Load the MSVC v6 project OTMaxTest.dsw and build OTMaxTest

5) Run 3dsMax

6) Create a simple cube

7) Run OTMaxTest

You should get something like this:

MaxScene [Aliases: ]
Point 0=[-29.7126,-120.736,0]
Point 1=[14.4992,-120.736,0]
Point 2=[-29.7126,-97.9163,0]
Point 3=[14.4992,-97.9163,0]
Point 4=[-29.7126,-120.736,35.5385]
Point 5=[14.4992,-120.736,35.5385]
Point 6=[-29.7126,-97.9163,35.5385]
Point 7=[14.4992,-97.9163,35.5385]
Vertex 0=[0:ff]
Face 0=[0:0,0:2,0:3]
Face 1=[0:3,0:1,0:0]
Face 2=[0:4,0:5,0:7]
Face 3=[0:7,0:6,0:4]
Face 4=[0:0,0:1,0:5]
Face 5=[0:5,0:4,0:0]
Face 6=[0:1,0:3,0:7]
Face 7=[0:7,0:5,0:1]
Face 8=[0:3,0:2,0:6]
Face 9=[0:6,0:7,0:3]
Face a=[0:2,0:0,0:4]
Face b=[0:4,0:6,0:2]

Press any key to continue

MS Visual Studio Sample Project

This is one of the first samples of an Open Tool (also in a state of flux):

It has been briefly checked for reference count leaks, but awaits a thorough test suite (volunteers?) before it can be considered as a reference implementation.


It has tools called StubReal and TrivialAdder, the latter having two input connectors which will chain in two StubReals (4.5), and output the sum on an output connector.

Naturally, I hope to refine this a little more, but I thought I'd get something out as soon as possible.


  1. Expand the zip file into an empty folder
  2. First load the Adder.dsw MSVC workspace.
  3. Build the Adder tool (Win32 Debug)
  4. Load AddTest\AddTest.dsw
  5. Build that
  6. Run

With any luck you'll get the answer 9 in the output window (4.5 + 4.5).

Next Steps

I'm thinking of using Comet one day, which may make the source code look slightly more appealing.

I'll focus on the Max exposer for the time being. I'll work on adjusting the Open Tools interfaces to be more oriented towards communicating change. After I've that ticking over nicely I'll see how upstream modifications by the client are best communicated.

I'm not sure at what point I'll expose textures.