-->
Save your seat for Streaming Media NYC this May. Register Now!

Macromedia’s 3D Musketeers

A much simpler alternative, and the expected way of using the product, is to import 3D models from other 3D packages. I tested this by importing some content I had laying around in 3D Studio Max. It’s a two-step process. First, you use the exporter associated with your authoring package using a vendor-created exporter. Then you import the file into Director 8.5. Director 8.5 ships with exporters for 3D Studio Max 3.1 and Character Studio 2.2. Discreet will provide exporters for new versions of 3D Studio Max and Character Studio, just as a litany of other 3D vendors provide exporters to the Shockwave 3D format.

For my next trick, I tried to import a more complex scene, and things started to fall apart. Some of the mapping systems that Max supports don’t export (Shrink-Wrap, for one). Additionally, it’s sort of difficult to get it to export certain types of animation (Inverse Kinematic was a problem). These problems occurred because the exporter does not support all of the functionality that Max does. The same goes for the Maya exporter, and probably most others.

Frustrating? Sure, but not at all unusual with any kind of 3D transfer. The Macromedia Web site warns about this and notes that if you are using Max you have to build your 3D content knowing that what you’re building is going to be exported to Shockwave 3D someday. The upshot is that even for seasoned 3D experts, importing models beats the heck out of building them natively in Director. I dream of a day when all 3D programs export and import seamlessly — if this be a fool’s paradise, then let me be a fool!


The Play’s the Thing

Now for the pièce de résistance: streaming delivery of 3D worlds. The streaming of a 3D cast member is handled through four properties: bytes Streamed (data transferred), preLoad (stream vs. download flag), state (streaming progress) and streamSize (maximum bit rate). To stream, you must set the preLoad property of a given cast-member to false. This causes externally linked media (pictures, textures, movies, etc.) to stream into the scene instead of loading completely. Then you can look at both bytesStreamed and streamSize, and, in theory, adjust streamSize accordingly during streaming. The trick is in careful code checks of the state variable, which will increase from zero to four as the world continues to load. Each value indicates a specific level of completeness that indicates to your program what is currently streamed in and accessible via Lingo.

It’s a very elegant way to facilitate intelligent progressive download. Shockwave Studio provides the elegance, and you provide the intelligence. You have to be very careful which Lingo calls get executed where; otherwise, you may be trying to access methods and objects not yet available (not yet fully streamed into the client player). Fortunately, this is documented very well in the accompanying help manual, and in the online docs. It didn’t take me long to get the hang of it. You can integrate all the standard media types that Director supports, and, in addition, I have already seen people using the XDK (the developer kit that lets you write C++ extensions to Director) to support other streamed media types, such as textures, inside the 3D worlds.


Horsepower to Spare

With Director 8.5, Macromedia has taken the right approach to 3D on the Web, defining a language and a graphics engine, integrating that with content creation tools, and explicitly allowing people to write their own engine-level code. This is one of the biggest problems in explaining this technology: It draws graphics, but does not make games or any other content. The programmer and the artist and the writer do that.

There is also a new version of the Multi User Server (MUS) that can support up to 2000 users. People are already using multiple simultaneous instances of the server to support client bases of larger numbers. Macromedia even hosts a free trial server for developers to test their multi-user content.

Lingo, like all interpreted languages, will always lag behind the performance of compiled languages, such as C/C++. As such, the Shockwave 3D environment is less suited to high-speed, high-resolution shooter games. But that’s a more than fair trade-off for cross-platform streaming Web delivery. Having browsed all of Macromedia’s samples, having looked at what developers are building now, and having kept myself abreast of the development communities, I would urge you not to judge this book by its extremely impressive cover. No one has yet produced material to push this technology to its limits.

Score Card

Score Card
Ease of creating and manipulating objects from Lingo ***
Ease of Importing 3D content from professional 3D-authoring packages ****
Ease of use with regard to streaming 3D content *****
Export of content to binary executables and Shockwave player *****
Overall ability to produce desired content ****
* Items are scored on a scale of one to five, five stars being best

Streaming Covers
Free
for qualified subscribers
Subscribe Now Current Issue Past Issues