BS Contact VRML/X3D - Release Notes
Introduction
This document provides information about the new features and improvements in the most recent releases of BS Contact VRML/X3D. Indepth technical documentation is available in the BS SDK.
Contents
- Release 7.0
- 7.0 Update
- Demos
- Firefox Plug-in and Opera Support
- JPEG2000 Texture Support
- OccluderGroup for Augmented Reality
- Stereo Texture Support
- Authoring Tool Updates
- Improved X3D support
- Render to Bitmap
- Render to Video
- Render Video Input to Texture
- Tiled Texture Support
- New CAD Component
- Addition to CompositeTexture3D
- New VrmlScript Functions
- Other Updates
- Further Information
BS Contact VRML/X3D - Release 7.0
Release 7 update (2007/05/22)
Built using Microsoft Visual Studio 2003.
New Nodes:
The node ImageTextureLOD supports a separate thumbnail texture, autogeneration of thumbnail images and eventOuts for reporting image dimensions.
The node FlashMovieTexture renders SWF files or streams to a texture and allows interaction with the embedded Adobe Flashplayer.
The node TouchSensor2 is reporting mouse double clicks events.
The node GroupAntiAlias allows antialiased rendering of a scenegraph via supersampling, for DirectX9 downsampling can be done in Shader.
The new node GroupRenderToTexture can be used to render a Group to a CompositeTexture3D node for applying postprocessing effects using shaders, GroupeRenderToTexture is supporting now multiple rendering targets.
A 3D Scene is processed using a Shader
The FX parameter semantic TEXTURE for texture parameters automatically passes the VRML texture node of the ShaderAppearance to the DX9 Effect, similar the semantic MATERIAL passes the values of the VRML Material node to an FX structure.
For MovieTexture and StereoMovieTexture there is now a view of the DirectShow Filter graph available. Using double click on a filter or output pin capture device settings can be changed.
SHIFT-F6 reports texture memory statistics for Direct X9:
Memory Status: 53% used # percentage of main memory used 486016 free KB / 1048048 total KB physical memory 3403296 free KB / 4093464 total KB paging file 2011360 free KB / 2097024 total KB of virtual memory 479232 free KB / 0 total KB texture memory # free texture memory from DX8 Device (usually not current), total memory isn't reported by DX9 17 textures 1104 KB used texture memory # number of textures and estimated memory use Pool default 0 KB texture memory # direct video memory textures(e.g.CompositeTexture,MovieTexture) Pool managed 1104 KB texture memory # normal "managed" textures oldestFrame 138 newestFrame 138 currentFrame 138 # frame age min max of all textures
FontTexture supports more graphic card specific texture formats.
The Text node supports the new field SFVec2f maxSize to limit the space and character wrapping.
Texture nodes are supporting the eventIn set_unload TRUE to unload the resource from memory.
The Inline node supports the X3D SFBool load field
if FALSE the Inline node does not get loaded, sending an FALSE eventIn unloads the inline.
Metadata nodes for Inline are now preserved.
The global alpha factor override, and the alpha factor override for Part nodes are now used for sorted transparency processing.
Global viewport option :
Browser.setOption("viewpoint-relative", "0.25 0.25 0.5 0.5") - a relative rectangle Browser.setOption("viewpoint","x y width height") - an absolut rectangle in pixel
RenderToBitmap and RenderToVideo now works with Layer nodes using the DirectX9 renderer mode.
The new option for saveWorld2 "writeEventFields=true" can be used to write all eventOut fields, e.g. to dump state of world for inspection
Some problems using the DirectX9 rendering options autoMipMap and compressedTextures have been fixed.
BS Contact Stereo mode TechXpert 5 view mode and more multitexture modes are supported in DirectX9.
A new custom anaglpyh mode allows the setting of color channel factors and gamma. A new Philips Image-Depth 3D display mode is now supported.
The stereo projection matrix parameter focal distance is now supported in DirectX9 modes.
The Device and KeyBoard Sensors are reporting focus changed events.
Extensions for Nodes StereoTexture and StereoMovieTexture
Addition to Particles node:
SFNode emitter optional particle emitter geometry, if NULL use sphere SFFloat fadeStartFraction fraction value when fading should start in lifeTime : Default 0.0 // new 7.02 SFBool sort FALSE, if TRUE, particles are sorted from FAR to near viewer position SFBool billboard TRUE, if TRUE, particles are aligned towards viewer like a billboard, if FALSE oriented in xy plane
Teapot Geometry emitting particles
Rectangle emitting particles
Built-in SpaceMouse support
Sound node supports Direct Sound 8 Sound FX Processing for Chorus or Distortion effects
Sound2 with Echo effect and custom distance model
See Microsoft MSDN Documentation for the DSSFX effects and parameters
CompositeTexture3D implements change of pixel dimensions and parameter attributes including HDR formats.
CompositeTexture3D with parameter changes
Other new examples
Shader Model 3.0 example - Mandelbrot
Lambert Skin
Displacemap
Durer
Drop images on to the shape or 3D objects into the window.
Improved X3D Support
In this release of BS Contact VRML/X3D many incremental changes and additions have been made to more closely align BS Contact with the X3D ISO standard:
- X3D classic encoding is supported (i.e. BS Contact handles the file extensions x3dv and x3dvz).
- X3D MetaData nodes implemented
- X3D CAD Profile nodes implemented (see above)
The following X3D data types have been implemented as X3D/VRML field types, COM interfaces and VrmlScript objects:
SFDouble MFDouble SFVec3d MFVec3d SFVec4f MFVec4f MFBool
The saveWorld function provides basic X3D XML export support. Using the X3DV extension for saveWorld X3D Worlds can be saved in the classic encoding.
Many new X3D fields that have been added to standard VRML97 nodes have now been implemented in BS Conntact, for example:
- The TouchSensor.description text is shown in the browser status bar and popup text.
- The new Viewpoint.centerOfRotation field can be used to set the examine center.
New X3D Event utility nodes have been added:
BooleanFilter {} BooleanToggle {} BooleanTrigger {} IntegerTrigger {} TimeTrigger {} IntegerSequencer {} NodeSequencer {} TriggerSensor {}
BS Contact multi-texturing and shader nodes are now supported in the XML encoding.
MultiTexture child nodes in XML encoding are now added correctly to the corresponding fields without using an explicit containerField attribute.
X3D Triangle and IndexedTriangle Set nodes have been added:
TriangleFanSet {} TriangleSet {} TriangleStripSet {} IndexedTriangleFanSet {} IndexedTriangleSet {} IndexedTriangleStripSet {}
The nodes StringSensor and KeySensor are now X3D conform. In VRML encoding the classic Conctact KeySensor node is used witch allow canceling of the key event handling via the eventsProcessed flag. The X3D Version of KeySensor is available in wrl as KeySensorX3D node.
For X3D Scenes without a Viewpoint node the view is not automatically set to view the whole scene anymore.
A Syntax warning is written to the console if DEF names are defined a second time, likewise there is an warning if a geometry node in the traversable scenegraph is not contained in the geometry field of a Shape node.
Demos
Below you will find two demonstrations showcasing just some of the enhanced multimedia capabilities of our latest version 7.0 release of BS Contact VRML/X3D, which can be downloaded for evaluation purposes, from our download center.
To run these high-end demos correctly, we suggest you configure BS Contact VRML/X3D as per the recommeded settings for each demo.
High resolution cathedral demo (recommeded settings)
Realisation by Laurent Privat Infographie
High resolution jade dragon demo with sub-surface light scattering effect (recommeded settings)
Realisation by Laurent Privat Infographie
Firefox Plug-in and Opera Support
A new Firefox plugin has been developed. For Firefox users this enables easy installation via a single XPI file, plus full BS Contact API access from javascript embedded within the containing web page.
The Opera web browser is also supported via out manual installation.
JPEG2000 Texture Support
The ImageTexture node now supports the JPEG2000 wavelet compression image format (.jp2 or .j2k file extension). This allows higher quality images when compared with those of similar file size saved in the older JPEG file format.
OccluderGroup for Augmented Reality
The new OccluderGroup node allows content authors to seamlessly integrate real-world photos and video into their 3D scenes to create augmented reality applications. By specifying invisible occlusion geometry, other 3D objects in the scene appear to pass behind elements within a background photo or video, thereby enhancing realism.
Stereo Texture Support
BS Contact now supports stereo images. Content authors have the choice of using either the side-by-side JPEG stereo image format (.jps file extension) within a standard ImageTexture node or the new StereoTexture node, specifying separate left and right ImageTextures in the texture field.
The stand-alone BSContact.exe can load JPS files directly and a 3D scene is generated automatically to view the stereo image. Simple red/blue stereo separation can be activated in BS Contact VRML/X3D's right mouse menu Settings > Stereo > Red/Blue with additional options for adjusting the degree of separation.
More sophisticated stereo viewing and high-end device support is available in BS Contact Stereo.
Authoring Tool Updates
The node extensions file for VrmlPad has been updated to include all implemented BS Contact VRML/X3D 7.0 nodes. Available in the Download Center …
In addition to general maintenance, a PointSet export feature has been added to the BS Exporter for Blender. Available in the Download Center …
The BS Exporter for 3ds max has been updated with user interface streamlining and shader export improvements. Available in the BS SDK …
Render to Bitmap
A new right mouse click menu item enables the rendering of high-resolution screenshots to a user's hard drive in either BMP or JPG image format. Now end-users can generate "print quality" resolutions from real-time 3D - resolutions that have traditionally only been available from high-end 3D animation and rendering applications.
Render to Video
A new right mouse click menu item enables the rendering of an animated scene to video as either an AVI file or a sequence of separate images.
Render Video Input to Texture
Content authors may now specify a video capture card or webcam by way of a 'capture:' prefix in the MovieTexture.url field. In this way, live video can be fed from the local computer directly onto a 3D object in the scene.
Tiled Texture Support
Modern graphics cards have a texture resolution limit of no greater than 4096 x 4096 pixels (and often much less on older cards). The TiledImageTexture node enables content authors to specify extremely large textures in the url field.
Addition to CompositeTexture3D
The CompositeTexture3D.update field allows the user to control regeneration of the texture. Setting this field to "ALWAYS" will cause the texture to be rendered every frame. A value of "NONE" will stop rendering so that no further updates are performed even if the contained scene graph changes. When the value is set to "NEXT_FRAME_ONLY", the texture is rendered once then reverts back to "NONE". Since this is an exposedField, it will automatically generate an output event that may be routed.
exposedField SFString update "ALWAYS" #|"NONE"|"NEXT_FRAME_ONLY"
CAD Component
The X3D CAD Component nodes enable CAD assembly structuring of complex models. They extension nodes Part and Assembly are extensions of the X3D CADPart and CADAssembly nodes and have the ability to easily override appearance, visibility and transparency properties of assembly subparts.
X3D CADGeometry component Specification
New VrmlScript Functions
The following additions have been made to the VrmlScript Node object:
newString = node.toVRMLString([string options])
Converts a deep node scene graph rooted by node to a VRML encoded string
newString = node.toX3DString([string options])
Converts a deep node scene graph rooted by node to a X3D XML encoded string
node = node.getSubNodeById(String searchString)
Find a child node in a Group scene graph. The search string defines the adress of the targeted child node to return and may contains several subindices separated by ,. E.g. "12,@MYNODE,id_23"
if the first char starts 0..9 : return children[parseInt(index)]
@abc: search by child with DEF name abc
#0..9 : return children with an SFInt32 id field matchig argment index
otherwise abc : return children with an SFString id field matchig the argment abc.
newString = string.escapeUrl()
Escapes unsafe url characters
newString = string.unescapeUrl()
unescapeUrl escapes url characters
newString = string.encodeHex()
hex encodes characters
newString = string.decodeHex()
hex decodes characters
The following additions have been made to the VrmlScript Browser object:
bool Browser.unloadTextures(int maxFrameAge,int maxCount)
unloads up to maxCount textures, not used in at least the maxFrameAge number of frames. Returns true if any texture has been released from memory.
cmd = Browser.addFieldReplace(double atTime,Node targetNode, string targetEventIn,Field newFieldValue);
cmd = Browser.addFieldReplace(double atTime,Node targetNode, string targetEventIn,Field currentFieldValue, Field newFieldValue,double duration)
Add an field update to node targetTime at time atTime. The second form does an linear interpolation starting at time atTime from value current to target.
Example to animate the diffuseColor of some Material node : Browser.addFieldReplace(atTime,mat,'diffuseColor',mat.diffuseColor,new SFColor(1,0,0),1.0)
Browser.addRoute supports a 5th bool argument trace. If set to true the execution of this route is traced to the console, with source and target nodes and the new value. This is quite useful for debugging.
The following additions have been made to the VrmlScript String object:
newString = String.replace(String str,String search,String replace)
replaces all occurences of search in str with replace.
The following additions and enhancements have been made to the VrmlScript Math object:
Math.round(double value, int precision)
Rounds a number to the specified number of digits of precision (previously Math.round omitted the precision argument).
int Math.isNan(double x)
Checks the given double-precision floating-point value for not a number (NaN). isNan returns a non-zero value if the argument x is NaN, otherwise it returns 0.
int Math.isFinite(double x)
Determines whether the specified double-precision floating point value is a finite value. isFinite returns a non-zero value if its argument x is not infinite, that is, if –INF < x < +INF. The function returns 0 if the argument is infinite or a NaN.
double Math.logb(double x)
Math.logb() extracts the exponential value of the double-precision floating-point argument, returning the unbiased exponential value of x.
Other Updates
DirectX 9 Renderer
- Upgraded DirectX 9 utilty runtime to D3DX9_26.dll allowing shader model 3.0 support
Improvements for shader model 3.0 graphics cards e.g. non power-of-2 texture support - A 24 bit z-buffer format is now chosen as default in DirectX9 if no user settings are provided
- The renderer has by default mip-mapping and HW auto generation of mipmaps enabled if the cards supports it
- Non power-of-2 textures can be requested by adding the parameter ["subtexture"] to texture nodes
- The use of non power-of-2 textures disables mip-maps for this texture
- The rendering modes solid, bounding box, and silhouette are now supported
Likewise, the setRendermode() function supports the additional strings HiddenLine, BoundingBox and Silhouette
DirectX 7 Renderer
Non power-of-2 textures with mip-mapping enabled were missing in the DirectX7 driver for hardware supporting non-power of 2 textures.
OpenGL Renderer
The functionality of the OpenGL extensions ARB_texture_rectangle and NV_TEXTURE_RECTANGLE have been corrected.
The SUBTRACT multitexture mode has been added.
All Renderers
- The default user texture size limitation has been upgraded to 2048 (previously it was 1024)
- A state issue with multitexturing and transparency has been fixed
- Fallback url's in texture nodes have been fixed
Embedding BS Contact in Microsoft PowerPoint Presentations
BS Contact VRML/X3D 7.0 can be integrated into PowerPoint presentations. The following short manual illustrates the ease with which this can done.
Fullscreen Monitor Configuration
The monitor used in full-screen mode can now be specified via Browser.setOption('FULLSCREEN-MONITOR', 'MonitorName') or the new HTML object parameter 'FULLSCREEN-MONITOR'.
Any valid monitor name eg. \\.\DISPLAY1 can be used as an argument. Available monitor strings are system-specific and can be found via the BS Contact right mouse menu Settings > Fullscreen Monitor.
Miscellaneous
- The standalone viewer BSContact.exe has been improved
- Render to Windows Device Context support for COM developers
- CullGroup caches bounding box for more traversal cases
- Improved the clean up of circular node references
- For certain VrmlScript errors the calling file is now reported
- New Browser functions Browser.modifyViewpoint() and Browser.setViewpointByNode() enable the further customization of user navigation
- The OrderedGroup Node now forces the processing of children, layers and transparency in the order given
- The renderToBitmap function parameters have been extended
- COM API: QueryInterface for MovieTexture StereoMovieTexture nodes is supported for getting IGraphBuilder interface
New setOptions
A number of new setOption parameters have been added:
- Global viewport contol e.g. setOption('viewport-relative','0.25 0.25 0.5 0.5')
- Layer clamping e.g. setOption('clampLayer', 'TRUE')
Content authors have complete control over the VRML/X3D scene time base with the following options:
- relativeTime
- time
- timeStep
- pause
- timeStart
- timeStop
- timeRate
These options can also be specified with a WorldInfo node, for example:
WorldInfo { info "options:relativeTime=true,timeStart=0,timeStop=26.950, timeRate=1.0" }
Further Information
Previous Releases
- BS Contact 6.2 Release Notes
- BS Contact 6.1 Release Notes
BS Extensions
ISO Specifications