Accessibility
 
Home / Developer Center / Director Developer Center /

Director Article

Tom Higgins
Tom Higgins
Product Specialist
Macromedia
www.directordev.com
 
Director 3D FAQ
 
·
What is Shockwave3D?
·
What is the best way to get started with Shockwave3D?
·
What do I need for Shockwave 3D?
·
Which applications create W3D files?
·
What exporters are available for the various programs?
·
Is there any way to get 3DS files into Director, besides using 3D Studio MAX?
·
What are the features of the 3D engine?
·
What is the 3DPI?
·
What is a modelresource?
·
What is a model?
·
What is a shader?
·
What is a texture?
·
What is a camera?
·
What is a light?
·
What is a group?
·
What is a motion object?
·
What is a node in a 3D scenegraph?
·
What are the palettes for a Shockwave 3D member?
·
What is the process for streaming a Shockwave3D W3D file?
·
What is the member's state property?
·
What is the ILS?
·
What are stream priorities?
·
How are stream priorities set?
·
Is there a comprehensive summary of streaming 3D behavior in Director and Shockwave?

 

What is Shockwave3D?

Shockwave3D is a new 3D technology included in Macromedia Director Shockwave Studio 8.5. It was co-developed by Macromedia and Intel. For more information, please visit the Macromedia Director Product Page and view the demos available in the Macromedia Director 8.5 Shockwave Studio 3D Feature Tour.

Shockwave3D runs cross-platform on Windows and Macintosh. It uses available hardware acceleration like OpenGL and DirectX and includes a software renderer that runs everywhere.

 

What is the best way to get started with Shockwave3D?

Watch the demos in the Feature Tour. There is also a free downloadable 3D screensaver (614K) which has examples of Shockwave3D animation. You can download the Macromedia Director Shockwave Studio 8.5 trial version for free or buy the product online.

 
What do I need for Shockwave3D?

This answer depends on what you want to do:

- to simply see 3D content, all you need to do is download and install the free Shockwave Player from the Macromedia Shockwave download page.

- to create Shockwave3D content, you need the Macromedia Director Shockwave 8.5 Studio. Director Shockwave 8.5 can create simple 3D primitives.

- to create Shockwave3D content with advanced features such as bones animation, you will need a 3D modeling package. There are many applications available, including Discreet 3D Studio MAX, Softimage XSI or Alias|Wavefront Maya. You can also use the special low-polygon modeller for Director called Shapeshifter, created by Tabuleiro.

 
Which applications create W3D files?

W3D files are usually created by exporting models from a 3D application, such as those listed above. You can also download the free OBJ converter Xtra which allows you to convert OBJ files to W3D. Or you can use the special low-polygon modeller for Director called Shapeshifter.

These tools all create Shockwave3D files, which have a W3D suffix. Shockwave3D files can then be imported or linked to a Director movie. See below for more information on linking and streaming.

 
What exporters are available for the various programs?

A list of 3D partners is maintained on the Macromedia site.

 
Is there any way to get 3DS files into Director, besides using 3D Studio MAX?

There is a free plug-in that allows you to convert 3DS files to OBJ files. The plug-in is available for download from the HABWare website (German). You can then use Director's OBJ converter to convert the OBJ files into W3D files.

 
What are the features of the 3D engine?

- cross-platform 3D playback (Windows and Macintosh)
- hardware acceleration (OpenGL, DirectX) with software renderer fallback
- multi-resolution meshes
- subdivision surfaces
- keyframe and bones animation
- real-world physics simulation, courtesy of Havok
- streaming geometry
- multiple textures and shaders, including reflection maps

For a more technical overview, see the technical whitepaper.

 

What is ...

the 3DPI?
The 3DPI is a tremendously helpful shareware tool for Shockwave3D developers. It is a so-called MIAW, a "movie in a window" that helps you to organize, check and program a Shockwave3D world.

The 3DPI displays all the available information for a 3D member, including the palettes and their content, all models with their position, rotation, and scale in 3D space. It also offers extensive support for all the modifiers. See the 3DPI website for more information.

a modelresource?
A modelresource is the raw geometry information used by a model. It is the polygon mesh itself.

a model?
A model is a (potentially) visible object in a Shockwave3D world. It uses a modelresource for its geometry.

a shader?
A shader is analogous to a material in 3D MAX. Models use shaders for their appearance. Shaders often use textures for the "skin".

a texture?
A texture is a bitmap used by a shader. Textures can also be used for overlays or backdrops for cameras.

a camera?
A camera is a viewport in the 3D world. If you drag a 3D member onto the stage in Director, a default camera will be created (unless a camera has been predefined). Alternately, the first available camera in the 3D member will be used for the view (camera("DefaultView")).

a light?
A light is a light source in a Shockwave3D world. There are several different light sources available in Shockwave3D:

ambient light light available to all the scene
directional light light shining into a specific direction
point light light coming from a certain point in space (like a light bulb)
spot light spot lights have additional properties (such as those for the penumbra)

a group?
A group is a collection of models that are grouped together. By moving, rotating or scaling the group, you move, rotate or scale all models of this group.

There is a special group called group("world"), which is the rootnode of the scenegraph. You create a new group and then add models as children to it, or assign the new group as the parent to the models. Either way, you have to create a parent-child relationship between the models and the group.

a motion object?
A motion object is basically an animation, either keyframed or bones based. Animations cannot be created at runtime using Lingo in Director. First, they must be authored in a 3D modeling package like 3D MAX or Maya. Then they are imported into Director. A model needs a modifier to play back an animation (#keyframeplayer, #bonesplayer).

a node in the 3D scenegraph?
The Shockwave3D world consists of a so-called scenegraph, which is a tree-like structure. At the top of the scenegraph, there is the group("world"), which is the root of the 3D world. The so-called Nodes are attached to the group("world"). Nodes are either models, groups, cameras or lights.

The default parent for each node is the group("world").

 

What are the palettes for a Shockwave 3D member?

Elements in a Shockwave3D member are organized by palettes. Palettes are useful because they hold elements that can be reused. For example, a model points to a modelresource in the modelresource palette for its geometry, and to a shader (or several shaders) in the shader palette for its material. The shaders in turn point to textures in the texture palettes.

The main idea behind this palette structure is to avoid duplicate data in the 3D member in order to reduce file size. For example, if a scene requires twenty cars, you can simply model it once, and reuse the same geometry 20 times—by creating 20 models that all point back to one set of geometry.

 

What is the process for streaming a Shockwave3D W3D file?

In order to stream W3D files into memory you will need to use linked external 3D cast members. Once you have a linked external member it is always streamed into memory with no further effort on your part.

 

What is the member's state property?

The state property of a 3D cast member indicates the degree to which the cast member has been loaded into memory. The state property can have the following values:

0
The member is completely unloaded from memory
1
Loading of the Initial Load Segment, or ILS, has begun
2
The ILS is loaded into memory
3
Objects not included in the ILS are being loaded into memory
4
The member is fully loaded into memory

 

What is the ILS?

The ILS, (Initial Load Segment) is composed of a member's motion and shader objects, its scenegraph hierarchy, all textures with a stream priority of 0, as well as all model resources whose models have been assigned a stream priority of 0.

 

What are stream priorities?

Each model and texture are assigned a stream priority value when exported from a 3D modeling package. Since a model object is a node within the scenegraph hierarchy, the model object itself is included in the ILS.

The stream priority assigned to the model is used to determine the loading order of that model's model resource object. Each object's stream priority determines the order in which it is streamed into memory. Low stream priority items are loaded first, before those with higher priorities.

Models can be assigned stream priorities from 0 to 256 with a default value of 256. Textures can be assigned stream priority values of 0 to 1024 with a default of 4 times the stream priority of models using the texture. When multiple models use the same texture, the lowest model stream priority is used to calculate the texture's default stream priority.

For both models and textures, a stream priority value of zero indicates that the object is to be included in the ILS.

 

How are stream priorities set?

Stream priorities are assigned as User Defined properties in the external modeling package used to create the W3D file. In 3D Studio MAX, this is achieved by selecting a model, then right-clicking in the active viewport. Select Properties from the menu that appears. In the Properties dialog box, click the User Defined tab to access a field into which you can enter text. To set a model's stream priority, enter the following in the editable field:

sw3d_stream_priority = M;

where M is the integer value you want to assign as the model's stream priority. All textures that are used by this model are by default assigned a stream priority value of 4xM. If a model resource object is used by more than one model, the lowest stream priority of those models is used to determine the loading order of the model resource object.

To set the value of a texture's stream priority manually, you could enter the following into the User Defined properties for a model using the texture:

sw3d_texture_stream_priority = T;

where T is the integer value you want to assign as the stream priority for all textures used by that model. However, there are known issues in the current 3D Studio MAX exporters that prevent this value from being exported. Instead, textures are always assigned their default value as described above.

Check the documentation that comes with the exporter you are using for more information on how to properly assign stream priority values.

 

Is there a comprehensive summary of streaming 3D behavior in Director and Shockwave?

Check out the Shockwave3D Streaming Overview from the DirectorDev website.

 

Special thanks to Christophe Leske and the participants from the 3DDirector-L (a TreviMedia mailing list) for their contributions.


About the author
Tom Higgins has worked at Macromedia for the past four years. He started out as team lead in Tech Support, then joined Director Quality Assurance. He is currently a Director Product Specialist for testing and developer relations. Tom hosts the DirectorDev website.