Cyberspace EngineersEngineering Cyberspace!Open Tools
|
DraftThis is the document (in a state of continuous flux) describing the proposal for Open Tools: Live Access to a Scene in Discreet 3D Studio MaxThis 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). DescriptionAll 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. InstructionsThis 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: ] Points 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] Vertices Vertex 0=[0:ff] Topography 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] OK END. Press any key to continue MS Visual Studio Sample ProjectThis 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. DescriptionIt 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. Instructions
With any luck you'll get the answer 9 in the output window (4.5 + 4.5). Next StepsI'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. |