Version 5.1

Updated 09/09/2001- Holger Grahn



This document provides information about the new features and improvements in the 5.0/5.1 release of Contact. Please note that there are some high end 3d example worlds on this page which require a new 3d card (e.g. ATI Radeon, Nvidia GeForce and above) for best results.

Unified DirectX and OpenGL renderer

The same version of Contact now runs on all Windows platforms. If your OpenGL card supports the appropriate GL extensions new features like Multitexturing work in OpenGL mode too.

Direct X 7 Renderer

Contact now uses DirectX7 natively, thus with a newer graphics board you will notice a performance gain especially large if your board (e.g. a Nvidia GeForce) supports Hardware Transform & Lighting.

New in 5.1

Improvements and Fixes for the navigation module

Doubleclick with the left mouse button show the navigation mode popup menu.

F3 key switches to a temporary Beam To mode, click with the mouse on an object to move toward the cllicked point.

F2 key cycles through the most common navigation modes.

In Beam To mode the mouse can be dragged for WALK navigation.

Now most navigation modes have an Control Key modify mode to switch temoprarily to another mode. Also the mouse wheel is support for another navigation mode option.

Tooltip Text for Anchors

By default the description field of the Anchor nodes is displayed as Tool Tip if the mouse is moved over geometry under the Anchor.

The tooltip text can be customized using the parameter title in the Anchor Node:
parameter "title=Tooltip Text"

Example:Anchor with tooltip text and HTML window popup(IE): anchor_about

Windowless and Transparent rendering in Internet Explorer 5.x & up

With a new parameter for the the object tag, Contact3D can render transparently above a HTML web page. Also an Webpage can be rendered on top of the Contact window. This allows new advanced composition of 3D with HTML. The drawback is that even with hardware rendering the rendering speed is limited, because pixeldata needs to be transfered via software processing. Also menu and keyboard input does not work in transparent mode. A tip is to not use DIV tags covering the whole area of the page.

<OBJECT id=Contact3D classid=CLSID:4B6E3013-6E45-11D0-9309-0020AFE05CC8    
   width=400 height=400>
   <PARAM NAME="SRC" VALUE="liliman_2.wrl">

Examples :

Rendering over an HTML Background, the 3D scene does not contain a Background node or only an Background node with a single skyColor (solid mode).

<BODY background="../textures/colortile.jpg">
<div id="3D" style="Z-INDEX: -1; LEFT: 50px; POSITION: absolute;    TOP:30px"> 
<object id=Contact3D classid=CLSID:4B6E3013-6E45-11D0-9309-0020AFE05CC8 
   width=600 height=400>
   <param name="TRANSPARENT" value="TRUE">
   <param name="SRC" value="../layer/bar2_43_layer3d_bg.wrl">
   <embed name=Contact3D src="../layer/bar2_43_layer3d_bg.wrl" 
   type="application/x-CC3D" pluginspage=""
   width=600 height=400>

The position, visbility Z-Index of DIV Tags can be animated, this can be used to transparently move some 3D object over the web page.

Using the WINDOWLESS param instead of TRANSPARENT allows to render HTML layers on top, but the HTML background does not show through. This mode is a bit faster compared to TRANSPARENT.

 <param name="WINDOWLESS" value="TRUE"> 

Both WINDOWLESS and TRANSPARENT have the side effect that 3D content can be printed.

Example: transparent_browser

Example: transparent_bar

Example: BMW

HTML Iframe above 3D (IE): BMW_below_html

Experiment Transparent Flash & HTML Iframe above 3D (IE): BMW_hello_flash

Windowless 3D with overlayed IFRAME and Webbrowser 3D (IE): BMW_hello_html

API changes and bug fixes:

If in the Contact directory the files are present, they are registered in front of the WIndows Java classpath. The fixes a problem with Cortona Full & CAB Install, placing a file named into the Java classpath.

Fields can now accessed again using the Java or COM EAI, in 5.0 only exposedField where accessible.

Fixes for some Control OCX api function.
Fixes in background texture loading.

Some API functions for changing the built-in cursors and setting the tooltip text.

Bounding boxes for nodes can be computed in vrmlscript

Vrmscript allows the new XXfield(xxField) constructor.

Continous creaseAngle support for ElevationGrid and Extrusion, the code path creaseAngle 3.14 is still recommended for speed

On content developer demand support for the Windows BMP/DIB/ICO and CUR image formats have been added.
Example: using Windows cursor and icon files in the ImageTexture node : cursor_test

For application embedding Contact its possible to override the built-in cursor table with local cursor files.

The new Browser option Browser.setOption('clear','FALSE'); turns off screen clearing, and allows interisting visualization effects. Example : sphere_paint (drag the mouse to "paint")

Upgraded PNG library

Utility vertex deformation function for optimized seamless H-ANIM avatars
Example Modified boxman example using a new vrmlscript function : boxman_contact Original : boxman
Boxman : Property of Vapour Technology. May be used for non-commercial applications. These credits must be included. Contact Vapour Technology to license this and other characters. URL:


Renderer changes:

The new Direct3D option use DX texture manager allows Direct3D managment of textures. This option can be enabled for scenes using so many textures, that the Graphics Boards texture and AGP memory is overflowed. Normal Contact Behaviour is to first allocate textures on the graphics board, then in AGP then to scale down textures. Natuarally AGP texturing is slower.

The option wait for frame ready is turned on by default. Certain 3D Drivers (especially some Nvidia Detonator versions) are buffering screen updates. Movement appears sluggish if screen update is delayed or decoupled from mouse movement. Turning this option off for graphics card/driver combos not experiencing this behaviour, is recommendedfor faster performance.

The ZBIAS Draw op is available, it can be used to switch co-planar objects in front.

DDS texture file format for Direct X only(recommend only for local installation), this allows to use textures with author created mip levels or special pixel formats
Example : texture_dds See Nivida and Direct X SDK tools for creating DDS textures.

Shadow rendering via ShadowGroup

A set of objects can be projected against one or more shadow planes or polygons. The objects are drawn in the plane of the polygon. The shadow Appearance can be customized. If possible the objetcs drawn as shadow are clipped to the polygon outlline. Some Direct3D drivers to not like projective matrices, in this cases stick to DirectionalLight as shadow emitter.

Directional Light: LILIl

Positional Light: LILIl (OpenGL only)

Known new bugs in 5.1

Layer selection with multiple stacked layers does not work correclty in all cases.
Layer rectangle can not exceed the 0 1 range in Direct X
Unexpected results with Extrusion, continous creaseAngle and convex FALSE
COM Objects in script node are currently not instantiated if Script is in a PROTO.
Problem instancing nested PROTOs (fixed in


5.0 new features


New navigation unit & application input event handling

With a set of new nodes the world builder can handle device events from mouse, keyboard, drag & drop. With the help of these nodes and an extended Viewpoint control node a world builder can customize  navigation and user interface.

A set of 2D MPEG-4 nodes provides easier UI design and composition (Layer2D, Transform2D, Bitmap, Rectangle, Material2D,CoordinateInterpolator2D,PositionInterpolator2D).

UI customizing documentation

Environment & Chrome mapping

Using dynamically generated texture coordinates new texture mapping effects are possible:

Chrome mapped Venus: venus_chrome.wrl

Environmapped Venus: venus_env.wrl

BMW Model: BMW Model

Environmapped Teapot: teapot4_env.wrl

Environmapped Teapot using DX7 hardware mode: teapot4_env_hw.wrl

Texture used for environmapping: spheremap.jpg

Animated Nurbs Surface environmapped: nurbschromic_bombs.wrl

Environmapped Venus using a color gradient texture: venus_gradient.wrl

Single texture with different texture coordinate generation modes, click on shape to cycle through modes: texgen_mona.wrl

Multi Texturing

With most modern 3D boards 2 textures can be combined per object in a single path:

MultiTexturing documentation

Basic shape with 2nd added texture: ifs_lightmap.wrl

Basic shape with 2nd sphere mapped texture: ifs_envmap.wrl

Generated tunnel with animated light map : tunnelmtex.wrl

2 textures, click on shape to cycle through blending modes: ifs_mona.wrl

Combined Examples DirectX 7 only :

A logo with reflection mapping : x79logo.wrl

Generated rooms with animated factor blended textures, Drag & Drop support : rooms_portal_lightmap.wrl

Landscape with 2nd texture. Texture dynamically rendered via CompositeTexture3D : ct_groundfire.wrl

Elevation grid with 2 textures : mount.wrl

Converted Quake3 Arena models


Particle Systems

Particle Systems allow to create a variety of high polygonal rendering effects:

Particles documentation and demos

Particles with keyboard control: particle_keyboard.wrl (space = burst, -+ Keypad change Rate ...)

Untextured particles: particle1.wrl

Particles with geometry node: particle_box.wrl

Particles with HUD control: particle_edit.wrl

Cell & Portals

Cells & Portals allow the visibility management of complex indoor environments:

Cell & Portals documentation

Drop Eventhandling

Drag & Drop events can be handled with the DeviceSensor node:


Chrome mapped Venus, drag texture files (e.g. from below) to change texture : venus_chrome_drop.wrl

Bob Chrispen's Cone Tree, drag files/url's onto cones to add nodes : drop_conetree.wrl

Download basic DropHandler PROTO to be included/referenced into your worlds: drophandler.wrl

Freeform deformation (FFD)

FFD was introduced in Contact 4.2 as part of the Contact NURBS for VRML proposal. The benefits are fully dynamical mesh vertex animations, without the download size cost of the standard VRML CoordinateInterpolator node.

Examples of Bend, Twist FFD Transforms generated by the Spazz3D Authoring tool:

3D Text

A Charizard. ( A full hierarchy of geometry including many levels of USE/DEF )

Deformed Avatar



Layer2D in Contact 5.0 is an implementation of the MPEG-4 Layer2D node.

The 2D HUD user interface is realized using Layer2D : BMW Model

Layer3D in Contact 4.3 is an implementation of the MPEG-4 Layer3D node.

The Layer3D node is a transparent rendering rectangle region on the screen where a 3D scene is shown. This allows users for instance to view a 3D scene from different view points in the same scene or view different 3D scenes in the same scene.

Layer documentation

Example: bar

Example: boxes

Example: bar_bg

Contact 5.0:

Non solid Background nodes are now supported.

Layers are now sorted according to the depth field & scene graph order, and rendered after non-layer geometry.

Layer2D does not require to clear the buffer, so performance is better compared to Layer3D.

COM Objects (native code) in the Script node

The Script node supports a object url scheme, where COM objects implementing the blaxxunVRML COM Script interface may implementing the script functionality.
This can be used for time critical scripts, for protecting the source code or implementing specialized engines (e.g. game logic, physics).
A MSVC NativeScriptDemo example is available.

COM Script Demo


Resource manager

Textures are retrieved in parallel with scene rendering. Thus navigation is possible while textures are still loaded. This setting can be turned off using Preferences->General dialog box.

Blending of Alpha textures with Material transparency

Allows more fading effects.

This is not in accordance with the VRML 97 light model, existing content is rarely affected as content authors usually leave material transparency on default when using alpha textures.

The MultiTexture nodes allows blending of an RGB/RGBA texture with the Material diffuseColor.

Direct X 7 sound driver

The Direct X7 Sound driver supports now quadrophonic/3d sound if the speaker configuration is properly set up in the Windows Multimedia Control panel.

Demo scene with 3 (big) sounds : sound_particle.wrl

Same Scene with Drag & Drop of sounds sounds : sound_edit.wrl

A choice of 3D sound rendering algorithms is available. These settings apply to the new WDM Sound drivers on Windows 2000.

Note: Windows 2000 by default disables full 3D Sound acceleration, this can be changed in the control panel -> Sounds & Multi Media -> Audio ...


Flash (.swf) file format in MovieTexture supported via Real G2.

WIN32 codepage's support in FontStyle node.



DirectionalLight's in the top level VRML scene graph are no longer made global, if there is no light at the root scene graph level. This is VRML 97 compliant, existing VRML content must be adapted if now appearing dark.

The Direct X 7 Renderer uses the range value of PointLight and SpotLight, if content specifies to small ranges some geometry might not be affected.

Additional 's' at the end of field names e.g. controlPoints instead of controlPoint are no longer supported.

VRML1 and specific Inventor nodes are no longer supported.

Support for Image Formats like RGB, BMP, PPM have been removed.

MP3 files up to 200k are allowed in the AudioClip if the Windows Media Player is installed. The MP3 is decoded to memory prior to playing, this will cause a small delay.

The RSX Sound driver is no longer available.

The script interpreter reports more warning messages in the "verbose VRML settings" mode.

MovieTexture rendering can be speed up if repeatS, repeatT are both FALSE.

In addition to Ray hit computation Browser functions mouseSelect and collisionDetect are available.

Content using Contact 4.4 extended event handling (Browser.event Browser.eventMask) should be adapted to use Contact 5.0 DeviceSensor nodes.

Proximity Sensors are now triggered before rendering. This might affect content relying on multiple USE of a ProximitySensor, or conditional traversal of ProximitySensor due to Switch, LOD or group culling.

Further Info:

Node Extensions


4.4 Release Notes

Related links:

VRML 97 Specification

VRML 1.0 + 97 Specification



The Independent JPEG Group's for providing libjpeg –
„this software is based in part on the work of the Independent JPEG Group".

Jean-loup Gailly and Mark Adler for providing zlib. ZLIB Homepage

Guy Eric Schalnat and contributors for providing libpng. PNG Homepage

Michael Vollmer and Dean Macri – Intel for providing assistence for the Intel Pentium III ISSE code and NurbsSurface implementation

S. Gottschalk - The University of North Carolina for providing Rapid & V-COLLIDE

Laurent Gauthier - incremental Universal Media installers.