Technology Comparison Cult3d Vs Shockwave3d Vs Viewpoint


Technology Comparison Cult3d Vs Shockwave3d Vs Viewpoint
Technology Comparison Cult3d Vs Shockwave3d Vs Viewpoint

This cigarette box belonged to my great grandfather, until now it has been just another one of the quirky thingamabobs that clutter up my desk. That was yesterday.

Behold, this lowly example of carcinogenic bric-a-brac has been forever immortalized in not one, but three digital formats.

One of the corner stones of interactive 3D is the ability to play back and manipulate keyframe data. I recreated this simple presentation in each of three different technologies to explore how each one approaches keyframe animation.

My goal was to create four different kinds of interactivity.

1. Simple Animation. To playback the animation of the bird retrieving a cigarette when the user clicks on the lever. This is the least interactive kind of animation.

2. Open/Close Animation. To let the user open the top of the box with one click and then close it with the second. This is a more complex kind of interactive animation than the first example, but it is more commonly used in web3D.

3. Introductory spin. The model should rotate automatically when the object loads, the rotation should stop when the user clicks the scene for the first time. This kind of open-ended animation doesn’t really rely on keyframes at all; and although it is simple it is really more interactive than the first two example because it is open ended. Each user will experience something different.

4. Button functionality. As a final touch, both the first and second animations should be triggered not only when the user clicks on the appropriate piece of the model, but also when the user clicks the appropriate button.

Take a look at how the models turned out.

Cigarette Box

Click an image to launch the presentation:



1. Simple Animation.

It was very easy to create this animation in Cult3D. Drag a mouse click, drag an ‘animation play’ action and you’re done. Nuff said.

Shockwave proved to be more of a problem. The drag and drop behaviours provided with the software once again let me down. I was able to quickly set up one animation to be triggered by clicking the lever, but animating all of the components from that one mouse click seemed impossible. Shockwave (and Viewpoint) creates named animation sequences for any animated objects, and attaches the motions to those objects. When an object is animated it’s children are moved appropriately, but their animations are not triggered. While I was able to trigger the animation of all the appropriate elements in Cult3D by affecting the parent; in Shockwave I had to animate four elements seperately.

Once I had this figured out, I created a simple function to trigger the appropriate animations. I also created a simple behaviour to trigger the animation when the user clicked on the appropriate object. This approach of grouping all of the mouse-click interactivity into one behaviour strikes me as ideal, the user interface to all interactivity can be controlled with one case statement.

The code-based structure of the Viewpoint format is a mixed blessing. The advantage of being able to had code keyframe values is really helpful in creating certain types of animation. The drawback is that in order to program interactivity one needs to wade through a morass of XML code. Viewpoint’s authoring tools leave a lot to be desired, values can be set and tested, but any interactivity needs to be done outside the autoring tool! Triggering the animation was easy enough with a few lines of code, but I had to open the file in the SceneBuilder, add a hotspot object, save out the file, open the file in a text editor, add the trigger code, save the file. It was an exhausting process.

2. Open Close animation

Once again this was no problem for Cult3D; I created two different actions, each of which triggered a different section of the animation data. For flow control I used a simple conditional test to trigger the appropriate event.

Having completed the first animation somewhat painfully in Shockwave, the second was no problem. I simply added a function to trigger the right animation sequence based on a conditional test. To link the interactivity to the mouse click I simply added a new case to my control behaviour, voila!

The only snag I ran into using Viewpoint was the need to manually create a new timeline for the second animation. There must be a better way to accomplish this but I couldn’t find it. Viewpoint does have a very simple way to handle flow control however. When specifying a click event, the user can assign it an ID value. The ID values correspond to the number of clicks required to trigger the action. One click triggers ID #0, the second triggers ID #1. This certainly helps create this kind of common interactivity.

3. Introductory Spin.

Once again I had no problem creating this animation in Cult3D. Using a simple rotation action attached to the scene load event. An empty mouse click event triggers the ‘stop’ action when the user first clicks on the scene.

I saved myself some time in Shockwave by avoiding the library behaviours and going directly to the code myself. The library rotation behaviour makes rotating the object simple, but doesn’t provide any interface to turn the rotation off. By adding a few lines of code and a boolean value to my control behaviour I was able to accomplish this quite quickly.

To be honest I was so frustrated with Viewpoint by this time that I didn’t even try to create this animation. Exposing the code for the entire project does make it possible for users to create anything they want, but it does not make it easy. I much prefer Shockwave’s approach to compartmentalize it’s code to help make it understandable.

4. Button functionality.

Both Cult3D and Viewpoint use javacript to communicate between the host page and the object. Luckily for me both packages provide sample files can be easily modified for my purposes.

Shockwave definitely has the advantage in this case; since the 2D buttons can be included in the Shockwave file itself, there is not need to worry about javascript syntax and embedded object naming. Connecting the buttons to my pre-made functions was also simple.


It should be no surprise that there is no clear winner in this experiment. Cult3D’s programming simplicity is certainly it’s greatest strength, but the hands on access of Shockwave’s Lingo makes it hard to choose.

A word about timelines.

The animation of the bird removing the cigarette presents a small problem. The cigarette is supposed to slide out attached to the tray and then be picked up in the birds beak; because of the kinds of motion involved this makes the parenting hierarchy complex. When I first created this presentation in Cult3D, my approach was to use two cigarettes, one in the tray and one in the bird’s mouth. When the bird leans down to pick up the cigarette, I switch the visibility of the two objects.

In Director, animation is played back as a chunk, not in relation to the scene’s score. As a result it became very difficult to sequence the hiding and unhiding of the cigarette to match the animation. The alternative was to try an interactively switch the cigarette’s parent, but this would also have presented a timing problem. So much so in fact that I rebuilt the animation sequence to rely on a series of dummy objects with no visibility effects at all.

I should point out that Viewpoint does give the user the ability to sequence different animations based on different timelines, but I ended up using my rebuilt animation for all three presentations.

I can’t say enough about the ability to sequence complex events to a timeline. When creating interactive content, the ability to synch non-keyframe events (sfx, url access, function calls etc.) is crucial. Cult3D’s drag and drop timeline sequencer is the clear winner here.

How to use:

Cick on the links above, keep in mind the presentation may take a moment to load.

Once the presentation has started click on the help iconfor instructions.

If the presentation doesn’t start, you may be experiencing plugin difficulties. For help check our Tech Support Page.>>