Saving a 3D scene. Docs

 
PLEASE NOTE: the following descriptions are outdated - Director 11 and the 3DPI version 5.0 do offer simple ways to save your shockwave3D world!

Once you have created a beautiful 3D world, you surely would like to save the scene. Sadly this does not work by simply selecting "Save" from Directors File Menu. But don´t worry, there are ways to save your work...


About saving in general. top

Director can not save objects in the shockwave3D member, that have been created on the fly, neither generated by Lingo scripts, nor by the 3DPI, which BTW also communicates with the stage in Lingo.

But of course there are ways to "save" a world:

    1. There is an undocumented and unsupported property for shockwave3D members, which is called "fileSaveMode", which might save the changes within the member.

    2. Thirdparty tools might help, like alex3-DTool (www.farbflash.de/alex3-DTool/).

    3. Creating the world on the fly with Lingo.

Saving objects with the member, like the fileSaveMode might do, is a cool thing for sure. But on the other hand, the size of the movie will grow, especially when creating complex worlds.

Having only one empty shockwave3D member and some Lingo scripts in a movie is even more cool, and results in a super small movie!
With the help of the 3DPI it is easy to get the necessary scripts to create the scene with Lingo.


The #fileSaveMode property. top

The member property #fileSaveMode is undocumented and unsupported, but it should save all the changes within the shockwave3D member, that one has done with Lingo or the 3DPI.

IMPORTANT WARNING:

Undocumented and unsupported Director features might not always work like expected, might even crash your movie, and might change or disappear in future versions.

It is recommendet not to use them for commercial products.

Don´t expect help about undocumented features from any support.

And PLEASE don´t even ask Macromedia for help or feature improvement! Otherwise it can happen that we will not get informed about undocumented features ever again.

Personal Note:

I have used the #fileSaveMode by myself alittle bit. It did not always work like I expected (maybe because I don´t know all details about it), but it never crashed my movies until now. And most of the time it was the easiest and uncomplicated possibility to save a scene.

Description:

member(whichCastmember).fileSaveMode

3D cast member property; offers the undocumented and unsupported possibility to save changes in the shockwave3D member.
Possible values of fileSaveMode include the following:

#saveOriginal The default value.
Changes will not be saved, or sometimes it will revert to the original state of the member. (?)
#saveMarked  
#saveScene  
#savePalettes  
#saveAll Will save all changes.

I think, saving changes with the help of the #fileSaveMode property only works, when using the "Save And Compact" command, not with the normal "Save" command.


Alex3-DTool. top

The tool from Alex (www.farbflash.de/alex3-DTool/) can not save the changes in the member itself, but it can read, save and restore all the informations of the shockwave3D member. Just like the 3DPI, it is communicating with your movie in Lingo. It creates a Lingo script which can restore all objects and details.

This all sounds great, but this tool has limitations, like it cannot save #fromFile objects. (Please read more about it´s details in the ReadMe that comes together with the tool.)
Besides the script, that is generated, will probably be much bigger than a script, written by your own, because the tool stores all informations and properties, regardless if they have been changed or not.

Nevertheless this tool is great, cause it also offers possibilities like converting any ModelResource to a mesh or merging selected models to one single mesh.


Generating a scene on the fly with Lingo. top

Creating a scene on the fly with Lingo is more work in comparison with the fileSaveMode or Alex3-DTool. One also needs to be able writing Lingo scripts.
But the advantage for a Lingo created world is hudge: the movie size will become much smaller, which is an important issue when creating content for the Web.
And besides you don´t have to worry about Lingo. Everything you do with the 3DPI, you can also get the Lingo scriptlines for.

Please take a look at the next chapter "Creating scripts with the 3DPI". It will describe the possibilities for getting scriptlines, and will demonstrate an example what to do with these scripts within this amazing software Director.


Resetting the world. top

When talking about the ways how to save a file, it is also important to know, how and when one looses all the changes done to the shockwave3D member.

As soon as the member is resetted, everything which was created with Lingo (or the 3DPI) is lost. The member will be resetted when unloading it, or when simply choosing "Save" from the File Menu.

One can also reset the member by Lingo. The Lingo command is called "ResetWorld()", which
"resets the member's properties of the referenced 3D cast member to the values stored when the member was first loaded into memory." [Director Help]

Of course one can also reset the member with the help of the 3DPI:

    1. Select the Member-TAB of the 3DPI.

    2. Select a shockwave3d Member by clicking on its name in the upper list of the 3DPI window.

    3. Click on the Button "ResetWorld()".

Keep an eye on the number of objects before and after clicking on the Button.
E.g. when watching the movie, that has been created in the chapter "How to work with the 3DPI - a first example", one will notice the following difference after resetting the world:
2 shaders, 1 ModelResource and 1 Model will be counted less - this are exactly the objects that have been created with the help of the 3DPI. The shockwave3D member appears again in its default state, black and empty, and only the "default" objects are listed.
 

Resetting the world on purpose sometimes is a good idea as well, especially when recreating a scene with Lingo.
E.g. if creating a model called "myModel" when starting the movie, the scriptline will fail when starting the movie once again. One will get the error "Object with duplicate name already exists", because Director cannot create two models with the same name. But if resetting the member before creating the model once again, the last model will be deleted before creating the new one, and everything works fine.

Docs