|About saving in general.
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
But of course there are ways to "save" a world:
- There is an undocumented and unsupported property
for shockwave3D members, which is called "fileSaveMode",
which might save the changes within the member.
- Thirdparty tools might help, like alex3-DTool (www.farbflash.de/alex3-DTool/).
- 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.
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.
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
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.
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.
3D cast member property; offers the undocumented and unsupported
possibility to save changes in the shockwave3D member.
Possible values of fileSaveMode include the following:
|| The default value.
Changes will not be saved, or sometimes it will revert to the
original state of the member. (?)
||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.
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
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.
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
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.
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
- Select the Member-TAB of the 3DPI.
- Select a shockwave3d Member by clicking on its
name in the upper list of the 3DPI window.
- 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.