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.
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.
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.
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.
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
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="TRANSPARENT" VALUE="TRUE"> <PARAM NAME="SRC" VALUE="liliman_2.wrl"> </OBJECT>
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="http://www.bitmanagement.de/download/" width=600 height=400> </embed> </object> </div>
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
If in the Contact directory the files cc3deai.zip cc3dtrustlib.zip 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 classes.zip 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: http://www.vapourtech.com
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.
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)
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.0.1)
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).
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
With most modern 3D boards 2 textures can be combined per object in a single path:
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
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
Cells & Portals allow the visibility management of complex indoor environments:
Drag & Drop events can be handled with the DeviceSensor node:
Examples:
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
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 www.spazz3d.com/babble/aaron.wrl
A Charizard. ( A full hierarchy of geometry including many levels of USE/DEF ) www.spazz3d.com/babble/charizard.wrl
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.
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.
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.
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.
Acknowledgements
The Independent JPEG Group's for providing libjpeg – ftp://ftp.uu.net/graphics/jpeg
„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.