BS Contact VRML

Version 6.101

Updated 29/05/2003



This document provides information about the new features and improvements in the 6.X release of BS Contact.

New Features

Encrypted Content

VRML content files can be encrypted via different encryption/authorization schemes. This allows Content creators to protect their content from simple copy and paste re-use. Content developers acquiring a BS Contact VRML Content license are getting an encryption tool. The encryption tool supports different encodings (DES,3DES, RC2, RC4 etc.) and authorization modes. The encrypted files together with the content license file are then placed on a Web-Server or CD-ROM. For more information please contact

Basic X3D XML Support and Internet Explorer XML integration

Contact 6.1 supports the X3D XML Encoding of VRML scenes. With Internet Explorer MSXML DOM Trees or strings with VRML or XML Encoding can be directly passed to Contact. This allows custom client side XML Processing.

More X3D information and examples

Large Scene optimization

The range of large scene support tools have been completed with the support for OctTree and QuadTree Nodes. The higher level TreeGroup Node supports creating of OctTree, QuadTree and BspTree hierarchies on the fly. The Nodes can be mixed. Such scene sorting helps the overall performance. In the OpenGL Driver for certain graphics cards additional support for hardware assisted Occlusion Culling can be enabled. Occlusion Culling can cull scene grouping nodes or geometry nodes, if they are hidden by other geometry.

More information

Automatic-CAB Installer

An automatic CAB installer with Verisign certificate for Microsoft Internet Explorer is available.

Example of an object tag with CAB-Installer:

	classid=clsid:4B6E3013-6E45-11D0-9309-0020AFE05CC8 width="100%" height="100%" 
	type=application/x-oleobject standby="Loading BS Contact VRML Viewer">
	<PARAM NAME="SRC" VALUE="../layer/bar2_43_layer3d_bg.wrl">
	<EMBED TYPE="application/x-cc3d"

The latest CAB file is available as>


The installer supports installation of the Contact Netscape 4.x plugin to Mozilla and Opera, but without Java EAI support.


Important changes

The 6.1 release also addresses url loading problems introduced by the Microsoft Internet Explorer Security update.


Native H-Anim 2001 node support

H-Anim 2001 nodes are supported as native nodes, including optimized vertex deformation code.
The 3DS MAX-Exporter available in the Bitmanagement SDK has been extended as well. The following examples have been exported from Discreet 3D Studio Max :

Dr. X Dr. X From Max Tutorial
ex Avatar Studio Model
Same with kick

H-Anim 2001 example boxman from James Smith,
boxman_contact_native Vertex Deformation done by Contact
boxman_contact Vertex Deformation done in a Script with optimized vrmlscript native function
boxman Original boxman, vertex deformation done completely in vrmlscript

Native H-Anim nodes are asy to use, simple change the EXTERNPROTO definitions, or add the urn "" for Contact as first url.

The H-Anim nodes are also available with the HAnim prefix in the X3D XML encoding: NancyDiving from NPS Kelp Forest.


Text Rendering via Textures

A new variant of Text rendering is introduced by using on the fly generated Textures.
This can greatly improve the readability and performance of text display.

Compared to the Contact 5 Texture Text technique, the Textures are generated internally on the fly and the font is proportional spaced.


Texture Text can be made a global default in the Settings-Performance dialog.

Game like navigation style

You can now control your avatar the same way as in many games:
Use the mouse to look around and the A, S, D and W keys to move around.

More on GAME mode

Joystick Device driver

An joystick device driver supporting all Direct Input 8 capable devices is shipped with the installer.
Connect an input device (Gamepad, Joystick etc.) and try this test example.


Improvements in Direct X 7 renderer

Environment mapped Bump Mapping

Bump Mapping has been added to the MultiTexture frame work.

This feature again improves the quality of available rendering effects.

Bump Mapping documentation

Example: interactive bump test (Direct X 7+, Nvidia Geforce 3+ / ATI Radeon 9700 / Matrox G400 + required )

Example: cyberhood_bump.wrl

DrawOp and Browser.getOption/setOption have been expanded.

CompositeTexture3D supports the parameter field, RGBA texture formats are possible. The repeatS repeat T fields have been added.

Radial fog support. (See Fog-Lab)


Improvements in OpenGL renderer

Bump-Mapping mode BUMPENVMAP and texture format DUDV is available on some ATI cards.

Basic support for CompositeTexture3D is available, including support for RGB,RGBA type textures. However in the current implementation the lights of the main scene are disabled. It works best on NVIDIA, with some ATI Drivers versions there are stability issues.

Anissotropic Mip-Map Texture Filtering provides better, crisper filtering for mip-mapped textures. In-depth article about Anisotropic Filtering.

Compressed Textures

If this option is checked in the preferences static textures (ImageTextures) are compressed by the OpenGL Driver. This requires an OpenGL extensions. CompressedTexture could allow to fit more textures onto the graphics board, for complex textured models.

MovieTexture rendering speed is optimized for the case repeats FALSE repeatT FALSE.

Additions to Hardware supported TextureGen modes:
The modes CAMERASPACEREFLECTIONVECTORR, NORMAL are now supported. These modes are esspecial usefull with OpenGL cubemaps imported via DDS Textures.

MultiTexture Mode DOTPRODUCT3 is available.

Support for DDS Textures in the ImageTexture node including Cube-Maps, Volume Maps and DXT compressed formats. DDS Textures are basically a memory dump of Direct X Texture Surfaces, the benefit is that Texture MIP-Levels, Cubemaps, Volumemaps and non-color Pixel formats can be represented.

For the OpenGL Driver this requires some OpenGL ARB extensions

OpenGL only example: dds cubemap and teapot_DDS hardware reflection mapping using a true cubemap (6 Textures in one DDS file) and CAMERAPSPACEREFLECTIONVECTORE Texture coordinate generation. 3D DDS Volume textures are supported with the ARB 3D Texture extension, the TextureMatrixTransform node and 3D TexGen modes can be used to create 3D or 4D Texture coordinates.

Direct X & OpenGL examples: basic DDS textures with different DXT compression modes.

DDS Textures can be created with the NVidia DDS Photoshop plugin. For more information see Texture Compression Tools
Discreet 3D Studio Max 5.0 has now support for DDS Texture as well.
DDS Textures can be inspected or created using the DXTex Tool from the Microsoft Direct X SDK.

In 6.1 DDS textures are now applied flipped in vertically to the VRML texture coordinate model.

Per default the default fullscreen size is now the desktop size.

PixelTexture CompositeTexture3D and ImageTexture have been expanded with the parameter field. Custom native Texture Format options are supported dependent on hardware support. (i.e. alpha textures, different 8 -16 - 24 -32 Bit formats, bump formats)

Radial fog support on Nvidia. (See Fog-Lab)

z-Buffer resolution setting.

Linepattern and LineWidth support

IndexedLineSet and IndexedLineSet2D are supporting the MPEG-4 Material2D and LineProperties node.

The OpenGL renderer implements line width, line patterns and line anti-aliasing.


IndexedLineSet with thick lines using Material2D and LineProperties node
IndexedLineSet with global lineWidth setting "options:lineAntialiasing=true,lineWidth=3"
IndexedLineSet with normal lines
IndexedLineSet with line pattern
Proto Example used from EMI - eminfo


Multi Monitor tips

Microsoft Windows does not yet support good 3D support for Windows spanning several monitors with the Direct X 7 interface. This has changed with Direct X 9 and multihead display cards.
With Nvidia multihead cards in the NView Display Driver Settings the Windows Desktop can be set to one large display, spanning 2 Monitors.
In OpenGL switching two fullscreen gives an display area covering both monitors. Similar with Matrox cards the desktop can be configured to span 2 or even 3 output monitors.
With Direct X 7 there is an internal limitation to a maximum of 2048 pixels display size in one direction, one solution for fullscreen display on two monitors/beamers is to use a Fullscreen mode setting with 2048 or less pixels resolution.

This 3D on two monitors/beamers feature is great for 3D presentations on trade shows, installations and the like.

Important changes

The Text node now decodes character codes in the string as UTF-8. The Editor program on Windows XP allows to save Text Files in the UTF-8 Encoding.
Some characters like are looking in UTF-8 äöüÄÖÜßéè

This finally allows support for asian language, choose an appropriate True Type Font Name for font with an extended character range.
Example with 3D extruded text: textutf8

Example with Chinese text: text_utf8_chinese. This examples used a True Type font named "NSimSun" which might not installed on your system.

In the MulitTexture node the setting transparent true is required to force the Appearance node to be processed with alpha blending. With the complex set of multi-texturing options it is not possible to easily determine if a given setup results in an alpha output or not.

In Contact 6.1 for backward compatibility if the text string contains non valid UTF-8 sequences, the encoding of the text is treated as ANSI.

Layer nodes without a specified translation fields are transformed as specified in MPEG, use translation 0 0 for a Contact 5 compatibility.



Window less rendering allowing 2D Transparent HTML / FLASH composition with Contact 3D has been upgraded to newer Internet Explorer version. See information and demos here.

Screenshot function in the Direct X and OpenGL Renderer, use Shift-F11 to save the current screen as BMP file to the Contact cache directory. For best quality use a Desktop color settings with 32 Bit and enable Anti-Aliasing.

The Preferences flag "reload resources" forces Contact during the initialization phase to load local available resources (e.g. local files, cached files) to the maximum extent, even if the resource might not yet be used because its invisible.

The center of rotation in EXAMINE mode can now be controlled by setting the 4th, 5th and 6th element in the avatarSize field of the NavigationInfo node. These coordinates are interpreted in the coordinate system of the bound Viewpoint node.

When a .wrl file contains no Viewpoint and no NavigationInfo node (single object) then BS Contact defaults to the EXAMINE navigation mode.

For debugging purposes the console can be shown and hidden by VrmlScript with the function Browser.showConsole(bool). Call it with true as argument to show the console. Call it with false as argument to hide the console.

Radial Fog
The Fog2 node now supports an additonal field SFBool radial with the default FALSE, if TRUE radial fog based on radial distance around the viewer is enabled if supported by the hardware.

Embedded Webrowser as 2D overlay using the Object node
Example: object_webbrowser.wrl Click on WebBrowser to open/close an fixed Browser Window.

Sound System


The Sound2 node extends the Sound node to support the sound cone model of Microsoft Direct Sound, this finally allows a directed cone sound model and some more effects.

Example: sound2_test.wrl Turn on Speakers and rotate the model, so that the view position is inside the cone.

6.1 : Uncompressed Multi-channel WAV Audio files are supported. Example: 6channel.wrl , all channels are heard only with a 6.1 speaker set-up. There is no automatic 2 channel downmix, with stereo speaker setup only the front-left and front-right channels are audible.


MovieTexture in DirectShow mode now supports the speed field. Depending on the seeking capabilities of the media and the supported speed range playback speed can now be controlled.

Example: timetime2.wrl (Warning big movie trailer) Movie plays at a different rate.

MovieTexture has been tested with OGG Vorbis Direct Show Filters.
Example: test_ogg.wrl

Additions to Browser.setOption and the corresponding COM-EAI call.

Default scene options can be put into an WorldInfo node, several options can be separated by a comma.

Example: change the default tessellation for Spheres, Cylinder primitives from 16 to 32 :

WorldInfo { info "options:primitiveTessellation=32" } Example

Example: change the VRML time base to relative, time 0 ist as start of the scene :

WorldInfo { info "options:relativeTime=true" }


Additions to Browser.getCap

Additions to DrawOp modes

ProceduralTexture node
Procedural texture computes Texture images on the fly based on Ken Perlin's noise function.
Example: proctexture.wrl



The left mouse button double click menu has been moved to the middle mouse button.

The plugin has been renamed to bsContactVRML.


New API calls are supported at the Contact Active X control level:

saveWorld2 - for exporting VRML with expansion of Proto Instancees / Inlines

addVrmlFromString - for adding VRML (including PROTO definitions, ROUTE, DEF Names) to the current world namespace

load - for streaming and parsing VRML/X3D content directly form in memory string or IDOMDocument, IStream interfaces.


Sphere Cylinder Cone are now always treated always solid (even if parts are removed)

EXTERNPROTO default value propagation was fixed.

Support for different JPEG color spaces.

DX7 mode switching and XP user switching was made more reliable.

Mipmapping generation for PixelTexture with DirectX7 Driver

vrmlscript SFNode a==b, !a operations have been fixed.

vrmlscript new SFXXX(SFString)


Compatibility with blaxxun Contact

bsContactVRML is fully upwards compatible with blaxxun Contact 5.1. For the ease of upgrading all COM Interfaces, CLASSID's and even the string returned by Browser.getName() are left the same. The location of registry keys has been changed.


Further Info:

Contact 5 Release Notes

Node Extensions


Related links:

VRML 97 Specification


Intel for sponsoring developments like the NURBS and trimmed NURBS Extension, specifically Michael Vollmer and Dean Macri for providing assistance for the Intel Pentium III ISSE code and NurbsSurface implementation.

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

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

Laurent Gauthier - incremental Universal Media installers.  

© 2003 - 2005 Bitmanagement Software - All rights reserved.