DirectAnimation Readme

© 1997, 1998 Microsoft Corporation. All rights reserved. Terms of use.

This document provides late-breaking or other information that supplements the Microsoft DirectAnimation documentation.

Overview

Requirements, Dependencies, and Installation

Additional Information

Known Bugs

Contact Information

### Overview

DirectAnimation was released as an integrated component of Internet Explorer 4.0 minimal install. This provides unprecedented animation and multimedia capabilities built into a major Internet browser (no special download is needed). Furthermore, DirectAnimation allows for integration with DHTML, and hence is especially suitable for adding compact and lightweight animation effects to web pages.

DirectAnimation is the component of the DirectX family of APIs that provides rich animation and integrated media support for Web pages, CD-ROM titles, and multimedia applications. DirectAnimation provides unified and comprehensive support for the different media types, including: 2-D vector graphics, 3-D graphics, sprites, audio, video, and a rich time and event model that applies uniformly across the different media types. DirectAnimation is a COM API and an underlying engine/run time whose functionally can be accessed in different ways by different user groups:

- HTML authors can integrate animation using the DirectAnimation controls.
- Visual Basic® Scripting Edition (VBScript), JScript™ users, and Java applet writers can program animation for web pages with integration with DHTML.
- Finally, Java, Visual Basic, and C++ programmers can develop ActiveX Controls or full applications with rich media and interactivity.

The supported media types are as follows:

> - 2-D images (.bmp, .gif, .png, and .jpeg files)
> - 3-D models (.x and VRML files)
> - Sounds (.wav and .midi files)
> - Movies (.avi, .mpeg, and .mov files)
> - Text
> - Vector graphics

In the case of movies and sounds, additional media formats can be supported by supplying DirectShow CODECs for those formats.

One of the key DirectAnimation classes is the Behavior class. Different types of media are incorporated into the animation by encapsulating them as DirectAnimation Behavior objects. Behavior objects can be used interchangeably, and have a number of methods applied to them, independent of the media type they are encapsulating. Of course, you can still access methods that are specific to the different types of behaviors, based on the type of media.

Back to the top

### Requirements, Dependencies, and Installation

The minimum requirements in order to run DirectAnimation applications and content are as follows:

- Pentium-based computer with 16 Megabytes of memory
- Windows 95 or NT 4.0
- DirectX, including Direct3D (for NT users, we recommend SP3)

The DirectAnimation run time comes as part of IE4 minimal install. DirectAnimation will also be part of Windows 98 and future releases of Windows NT.

Back to the top

### Additional Information

DirectAnimation supports several scripting languages (JScript and VBScript), as well as the integration of the multimedia controls (in Internet Explorer 4.x) with the DirectAnimation run time. In addition to the multimedia controls, a windowed control is provided which can be used, not only with IE 4.0, but also with IE 3.02 and with Visual Basic 5.0. With the addition of the multimedia controls, content developers can now access DirectAnimation functionality through different levels, from PARAM tags at the control level, to scripting, to raw COM.

The DirectAnimation Java classes are dependent on the version of the Java VM that ships with the Microsoft SDK for Java 2.0 and Internet Explorer 4.x. We used Microsoft Visual J++ 1.1 to author the Java samples.

In order to use DirectAnimation Java-based content within Netscape's Navigator, follow these instructions:

> Microsoft has made a plug-in available to users of Netscape Navigator 2.02 and 3.0 which allows them to make use of the Microsoft Java VM. Netscape Communicator is not yet supported because of changes made to the plug-in interface. Note that this plug-in does not replace the Netscape Java VM, but it does provide access to the MS VM through the use of the <embed> tag. To get an applet up and running under Netscape, follow these simple steps:

> 1. Get the plug-in from the Java SDK 2.0 and place it in your Navigator\Program\Plugins directory.
> 2. Install the required MS Java VM, if you haven't already.
> 3. Change the applet tag in your source html from this:

> > <applet code="myjava.class" width=100 height=100></applet>

> > To this:

> > <embed src="myjava.class" width=100 height=100></embed>

In general, we recommend that you upgrade to the DirectX 5 set of video drivers. Several visual artifacts that appear under older versions of video drivers disappear with the newer set.

We have added some C++ based samples to the SDK. Some samples rely on the DA control, while others composite directly to a DirectDraw surface.

When possible, we suggest that you take advantage of the asynchronous import methods. This leads to more responsive content, since the end user does not have to wait for all the content to load, before experiencing the animation.

Back to the top

### Known Bugs

The following is a list of current known problems. We strongly encourage you to send us mail if you find a problem (dxmbug@microsoft.com). There are newsgroups set up to allow DirectAnimation content developers to discuss issues and ideas; however, mailing a bug description is the only sure way to get a fix for a bug.

The release of DirectAnimation in this SDK and accompanying redist package is newer than that distributed with IE 4.0. There were many bug fixes related to memory leaks, as well as the following functional changes:

- In the size parameter for text, a negative quantity can be specified. The negative quantity allows you to indicate to DirectAnimation that the text behavior's size/orientation is not going to be animated (although animating the position is fine), allowing us to produce a higher quality text. We will carry support for this parameter forward, but eventually you will get the same high quality text regardless of transforms applied to the text behavior.
- The timer source for the DirectAnimation control can be selected using the IDAViewerControl::TimerSource property. This is useful for Web scripting. By default, DirectAnimation uses WM_TIMER messages
  You can use the IE 4.0 DHTML timers by specifying values of DA_TIMER_SOURCE type, which allows your DirectAnimation content to be in sync with other controls or DHTML elements. Note that, if you use this property, you should check for the version number which is accessible through the VersionString method on DAStatics. Failure to do so will cause an error when the page is viewed with the previous version of DirectAnimation.
- If you find a problem with your scripting-based content that seems to make your Web page appear unresponsive to events and timers outside of your DirectAnimation content, you should set the UpdateInterval property of the control to 0.15 (this causes a new frame to be drawn every 0.15 seconds, meaning that the content gets 6.66 frames per second).
- The DirectAnimation Java classes fully enforce the Java security model, only allowing media located in directories below the location of the Web page to be opened by the applet.

General

- For Java content, all initialization of DirectAnimation behaviors and events needs to happen in methods (cannot happen in classes outside of methods); however, you can have declarations of behaviors outside methods to make them accessible from other classes and throughout the methods of a class.
- There are some small memory leaks, most notably when using 3-D, sounds, or notifiers. To fix this in Java, implement public void cleanup() to the class that extends Model. In this method, call super.cleanup() and set all behaviors that are suspected of leaking memory to NULL. If you have other classes which contain DA behaviors, implement public void cleanup() and only set suspect behaviors to NULL. Also, add the public void destroy() to the class that extends DXMApplet. In this method, call super.destroy() and set the model to NULL.
- For Java content, sometimes the LeftButtonPress events miss.
- The cursor is considered to be in the middle of the window when DirectAnimation first comes up.
- TextPath and TextImage are now obsolete. Please use StringPath and StringImage instead.
- Notifiers can only be implemented in Java.
- AnimateControlPosition takes parameters in meters, even if you are using the pixel library.
- Only DirectDraw surfaces created through DirectDrawEx can be imported.
- bvrhook does not get called at snapshot time.

Graphics

- Shearing movies and lines does not work properly.
- Color palette is not correct for 256 colors displays under NT.
- SubstituteTime does not work right when applied to splines.
- FollowPathAngleUpright isn't doing the uprightness.
- Although class browsers or Visual Basic show the parameters to arc and roundedrect as radius, they are really the diameter.
- Using Java, time-varying opacity may cause the whole object to become solid after some time.
- TextMatte isn't allowing enough of the image to be drawn through.
- Knot duplicity for splines is not handled.
- Bounding box of a sheared behavior is incorrect.
- Overlaying an image on a solidColorImage, cropping it, and then adding a rotation transform, results in the solidColorImage disappearing. The workaround is to crop the solidColorImage into a matte.
- Underline and strikethrough don't work on NT.
- When loading a large number of JPEG images, there is a significant delay. A workaround is to make use of the asynchronous import method.

Audio

- Sound does not turn off all the time.
- SinSynth plays at 440Hz no matter what rate is specified.
- Dynamic phasing isn't enabled.
- Loop causes the leaf sounds to loop, not the combined sound behavior (this is the intended behavior).
- SinSynth mixed with static sound gives a choppy sinusoidal sound.
- Audio time substitutions not accumulating

3-D

- Textures are not propagating down the leaf geometries for .X-files-based 3-D objects.

Movies

- To use a movie as a texture, you have to use the following workaround (code snippet in JScript):

> > movieImport = m.ImportMovie("http://movie.avi");
> > movieImg = movieImport .Image;
> > // This is the workaround
> > movieBBox = movieImg.BoundingBox;
> > solidImg = m.SolidColorImage(m.White);
> > solidImg = solidImg.Crop(movieBBox.Min,movieBBox.Max);
> > movieImg = m.Overlay(movieImg,solidImg);

Controls

- When using the Sprite multimedia control, source .bmp images over 2048 pixels long have to be broken into arrays of images (rows and columns of images, instead of just one long row or column).
- Under some video drivers, filtered transparent pixels render as black.
- For the Path control, TimeMarker persistence parameter "-1" works like FALSE in JScript.

Using Visual Basic

- Use the DirectAnimation Windowed Control when creating Visual Basic samples. There is a buffering problem in Visual Basic 5.0 that causes flashing if the DirectAnimation Windowless Control is used instead. This will be fixed in a future version of Visual Basic.
- Button events do not work.
- If the animation runs too slowly, increase the value of the UpdateInterval property.

Back to the top

### Contact Information

> We've set public news groups on the Microsoft Public News Server, as a forum for the DirectAnimation user community. We encourage you to post all questions related to the use of DirectAnimation on the appropriate news group:

> - microsoft.public.multimedia.directx.danimation.controls is for users of the DirectAnimation controls.
> - microsoft.public.multimedia.directx.danimation.programming is for programmers of the DirectAnimation API.

> For reporting bugs against the preview version, send mail to dxmbug@microsoft.com. When you do so, make sure to be specific about the OS, PC/graphics card, version of IE4, and specific host language/control that you're using to access DirectAnimation.

Back to the top