BS Contact 8.0 - Release Notes

Introduction

This document provides information about the new features and improvements in the most recent release of BS Contact 8.0. This new release offers substantial benefits compared to former versions as it was designed with the goal of rendering speed and runtime memory optimization and comes with a download speed gain of 3D assets and scenes for content authors. So using BS Contact 8.0 can bring you performance leaps of your 3D projects in well prepared cases of more than 50%.

In-depth technical documentation for the release notes as below is available in the BS SDK with many new and updated nodes.

Contents

New UserInterface - helps you getting around in 3D

BS Contact 8.0 comes with a new optional user interface that helps novice users to navigate in 3D worlds. It can be evoked and removed again by pressing Ctrl. u and will be downloaded from the internet separately while you are viewing your 3d scene. The buttons have been designed with care to be self explanatory after some seconds of trying out the User Interface. The arrow buttons show the following viewpoints and the play button in the middle makes a viewpoint tour. In addition there are tooltips by mouseover. The other buttons switch between the most used navigation modes, slide, walk and examine. If you still get lost in your 3d scene there is the back button on the left that takes you to the first viewpoint of the scene. Also the ESC key take you back to the first viewpoint of the scene. Please contact Bitmanagement to put in a customer logo on the right side of the User interface bar.

X3D Binary compression – your data travels faster online

BS Contact 8.0 supports now the new X3D binary compression format for static geometry. Results show that an example X3D scene in X3D classic encoding (VRML) could be reduced from 534 KB to 47 kb using x3d binary encoding.

Bitmanagement is working on the topic of geometry coding.

This means the compressed binary file is about 11 times smaller than the original file without binary encoding. Also the transmission speed of such encoded files is more than 10 times faster than the original without binary encoding in this case and the parsing speed is nearly double so fast.

In order to try the x3d binary compression with your own scenes, please load your VRML/X3D scene in BS Contact and save it using the X3DB extention. Now you can compare file sizes. Please note that only static geometry files can be translated to X3D binary at the moment. Dynamic parts will be added with a further release.

Gamepad Interface - let your world become alive

BS Contact 8.0 now has a gamepad interface with plug and play installation.

Please install the driver of your gamepad or joystick on your computer and plug in your gamepad hardware. BS Contact will look for the device connected and do the walk navigation in your scene controlled from your device. If you are interested in further navigation modi, please configure them yourself using the device plugin description in the BS SDK.

Touchscreen interface – your world at your fingertips

BS Contact 8.0 supports touchscreen navigation. The multi-touch messages can be caught within BS Contact on Windows 7 and can trigger events that animate the 3D content. The new FlickSensor and GestureSensor nodes allow to associate multi-touch events with objects.

Technical Demos:
   FlickHouse - a house object that demonstrates navigation and flicks in EXAMINE mode
   FlickSensor - demonstrates two nested FlickSensor nodes
   FlickBall - flicking a sphere makes it move into the direction of the flick
   PrintGestures - outputs all events that gestures produce
   3Spheres - demonstrates the rotate with pivot point gesture
   PrintTouches - outputs multi touch related events
   TouchScreenSensorColors - displays a colorfull ring for every touch point
   SimpleImageViewer - allows to zoom, rotate and pan an image, all at the same time

BS SDK Update – finish your programming task earlier

Bitmanagement has updated the BS SDK with the goal to help application developers search the substantial functionality in BS Contact better. The nodes include extensive new technical examples that make understanding the programming concepts easier. Please see a preview there: Cell functionality and Cells and portals inside. If you are interested in buying the BS SDK, please send an e-mail to sales@bitmanagement.com.

Geometry Instancing

Using Bitmanagements geometry instancing node multiple copies of the same object are rendered in one pass. This technique is mainly for objects such as trees, grass, or buildings that contain recurrent geometries of interest. Instead of the large number of additions of objects, the performance of the scene is not affected significantly as the hardware acceleration of current graphics cards in DirectX is exploited.

In 3D scenes, the more distant objects (e.g. trees), which must normally be represented with sprites can be provided now with a real geometry. In these scenes the vegetation or other repeating objects in the distance look better.

When using conventional methods rendering many of these object instances goes hand in hand with a drastic loss of performance. However, since taking advantage of the Bitmanagement implementation and the hardware acceleration of current graphics cards (e.g. ATI and Nvidia) the designer gets an improved graphics quality with almost no performance cost.

The following technical example shows the new geometry instance node with a simple box geometry in many repetitions.

DEF GeoInstance GeometryInstance { shape Shape { appearance Appearance { material Material { diffuseColor 1 1 1 specularColor 1 1 1 ambientIntensity .0833 shininess .08 } texture ImageTexture { url "images/release8/cc063219.jpg" } } geometry Box { size 2 2 2 } } }

General floor shadow

Did you ever fumble with our cascading shadows from the 7.2 release of BS Contact? In order to make it easier to produce shadows of arbitrary models on the floor we have come up with a more generalized method to cast shadows with nice blurry effects. The new node is called ShadowFloor and you can simply set it for a whole object. The following example scene is made up of two boxes as follows:

The field emitter of the FloorShadow node references to the group of the two above boxes:

For more information refer to BS SDK.

Additional Browser and GetOption functionality

There are so many PC configurations out there. Did you ever wonder, if your online users can see all the eye candy you put into your applications? Some older graphics cards may not have all the possibilities that your own test computers offer. In order to help you optimize your content for the capabilities of your online users graphics card, we provide the GetCap() functionality. Just check out what is possible at your users PC. Use fallbacks in your content and you can present your work optimized according to the possibilities of your users. e.g. you can enable anti-aliasing quickly, if the graphics card can handle it or check the free video memory currently available. With the command “Browser.getOption(id)”, you can get the capabilities of the current client machine.

There are many id’s available that test, e. g. whether hardware rendering is used, whether using the OpenGL renderer is used, on the amount of free video memory, on maximum texture size, whether it can do hardware generate texture coordinates, on max number of clip planes, on max number of lights supported, on z depths, on stencil depth, whether occlusion test supported and many more.

Browser.getOption('product:platform');

can be used to find out if you're running on Windows, Android, iOS or MacOSX.

Another example:

Browser.getAntialiasingQualityLevels();

This function returns an array of all available anti-aliasing modes in a metadata structure. With the following code example you can print out all modes of your graphic card.

The following is the result of the above code:

The same antialiasing levels can be found in the BS Contact context menu in the "Device settings" tab.

Particle alignDirection

A new flag has been added for the particle system node in order to align the direction of the movement of the particles. For instance this is especially useful for sparks.

Particles { ... your code... alignDirection TRUE }

Preset views for the orthographic viewpoint

In the right click menu you can find the new ortho view under the view tab. It provides you with an orthogonal view from above on your scene. This view is know in the CAD domain and often used to do 2D printing of cad models.

user Defines Mouse Cursor

A custom mouse cursor can be added now to your 3D scene that changes according to events triggered from BS Contact. The shape of the mouse cursor can be retrieved online. This is handy, if you want to provide a visual clue to the user of your application by selecting particular information with a new mouse cursor.

Script Sharing - Proto instances are now in memory only once. Memory allocation is drastically reduced.

The prototype declaration is an important means to express recurring program parts in the VRML/X3D language. Programmers are using it to lay out several general features in a library that can be re-used in various projects with small variations in the parameters again. Over time the creation of many such Protos will get you a "Swiss Army Knife" – toolkit with many features for programming. Such a Proto-Library is useful wherever you need to quickly create a similar functionality, but with slight modifications.

In larger projects, these proto-libraries possess several thousand Protos and therefore constitute an important part of the know-how of the company. Hence, the Protos are usually encrypted by our customers with BS Encrypt and delivered only with the products in protected form.

Often Protos are inserted in several places in the program code, which in turn requires memory to be allocated each time. That means in all other instances of the same Protos new memory needs to be taken away from the application. In the current new version of BS Contact this memory created only once through "script sharing", so you can save on all subsequent uses much more memory. The programmer does not even need to think about the memory allocation himself. The new script sharing functionality is handling this for him transparently.

So for large programming projects, such as for example interactive online games that can use many of these Protos the memory requirements will be nearly halved thanks to the new automatic “script sharing” functionality in BS Contact.

Unload unused proto definition ressources

A new function has implemented to delete media systems from memory when not needed anymore. This is applicable for different kind of media such as textures, video and sound.

Browser.unloadUnusedProto();

noCache image Loading

After the display textures can be deleted immediately without saving them to hard disc in the cache. This saves memory on the hard-disc of the user.

Resolution selection

A new function has been added in BS Contact to set the rendering resolution independently from the embed resolution.

Browser.setResolution(800, 600);

RefCount array

Arrays can be shared over instances in JavaScript now. This reduces the memory necessary in javaScript calls.

TransparentSorting Modes

In BS Contact 8.0 there is a new functionality to specify priorities and a hierarchy for the display of transparent objects. This can be useful to correctly render glass and translucent objects, such as hair.

IndexedFaceSet { useTransparentQuality 1 ...your code... }

Nav improvement

When avatars collide with walls or objects in a world there was a possibility to get stuck in the geometry. The user has to clumsily navigate around the obstacle in this case. This has been improved in order for the avatar to touch an object slightly not to stop its movement.

Gravity settings

The gravity settings have been made independent of ground detection with the goal to support jump animations of avatars.

Browser.setOption('groundDetection', 'TRUE'); Browser.setOption('gravity', 'TRUE'); Browser.setStepFallAngle(0.7);

Please refer to the BS SDK for more information.

Navigation improvement

Rotate has been added in the right-click menu under the navigation tab. The user can now rotate on top of a 3D object in order to examine it better.

Loading Events (Ressourcemanager)

The new resource-manager in BS Contact 8.0 identifies the progress of loading assets online and fires events that can be caught by the programmer. Userinterfaces with download symbols can be made easy now.

var ressource = Browser.onResourcesLoaded; var percentage_loaded = ressource.x / ressource.y * 100;

Transparent Elements in BS Contact Geo and BS Contact Tiler

In BS Contact geo you can now render also alpha textured objects such as trees and railings made from textures with a transparent channel. Such scenes can be optimized now with the BS Tiler product.

Async TreeGroup builder

Treegroups can now be executed asynchronously in order to avoid the blocking of the rendering pipeline for a few milliseconds if executed sequentially. The experience for the user is smother with this addition.

Faster Collision Model

BS Contact 8.0 can calculate possible collisions now much faster with using less memory. This results a higher frame rate and a smoother experience for the end user.

FireFox support for DriverHints

Also from the popular firefox browser in HTML many hints can be transferred to BS Contact now directly. This has been done before in IE, too. Content authors have more freedom now in supporting hints without being forced to support only one special web browser.

<object classid="clsid:4B6E3013-6E45-11D0-9309-0020AFE05CC8" id="BSContact" width="80%" height="60%"> <embed id="BSContact" src="Sphere.wrl" border=0 width="80%" height="60%" type="application/x-bscontact" PROGRESS-BAR=true DRIVER-OPTIONS="multisampleType=1,multisampleQuality=1" > <param name="DRIVER-OPTIONS" value="multisampleType=1,multisampleQuality=1"> <param name="PROGRESS-BAR" value="true"> <param name="SRC" value="Sphere.wrl"> </embed> </object>

LinePicking

In CAD models lines can now be selected with the mouse. Events are fired once the mouse object hits the edge of an object in 2D projection. Content authors can use this functionality to drag cad objects dimensions and modify these objects visually.

COM Tear Off

In order to reduce the memory overhead when using the COM interface a COM Tear Off function has been developed. You can now program in COM with less memory usage.

ShadowGroup improvements

Directional light is supported now in the shadowGroup node. You can simulate outdoor environments with sunlight now better than using spotlight.

StaticGroup frees memory

You can hold objects now in a so called static group that does not have such a high memory usage with the drawback that you cannot change them at runtime anymore. Many applications are not in the need to change objects so often. The memory gain has direct relevancy to the speed of the engine in frames per second.

<StaticGroup containerField='children'> <Shape> <Appearance> <Material diffuseColor='1 0 0'/> </Appearance> <Box/> </Shape> <Shape> <Appearance> <Material diffuseColor='0 0 1'/> </Appearance> <Sphere radius='1.4'/> </Shape> </StaticGroup>

More modifyViewpoint options

More options have been added to modify the viewing frustrum in BS Contact 8.0, for example:

Browser.modifyViewpoint('view FIT'); Browser.modifyViewpoint('setNextViewpoint', new SFVec3f(1, 0, 0));

RightClick event for TouchSensor2

You can now get touch events from the right-click sensor of your mouse.

DEF sensor TouchSensor2 {} ROUTE sensor.touchTimeRMB TO script.right_clicked

lastViewMatrix

In a shader, you can use now the last view matrix in order to create a distortion effect.

ImageTextureMipmapLOD

The ImageTextureMipmapLOD has been updated to work like a real level of detail node. Higher resolution images are loaded fast to the graphicscard, if visiable and close enough to the viewer to need a high visual quality.

ImageTextureLOD is an ImageTexture node with additional fields for supporting thumbnails. The node falls back to show the thumbnailTexture or loadingTexture if the main texture has not yet been loaded. In addition with DirectX9 the loading of texture is done using a separate loader thread.

BS Contact 8.0 supports 64 Bit Systems

Having more memory capacity available for creating larger scenes BS Contact supports under Firefox and Internet Explorer 64 Bit Systems. It is mainly used by developers in the games industry particularly for interactive applications in the Internet.

Various bugfixes

HitNode fix

The memory is correctly released again during mouse movements

ColladaParser TransformFix

The transform node behaves now correctly in the native Collada parser in BS Contact.

script exec fix

Bug fix in script execution

MRT fixes (DX)

Fix in shaders