Skip to content

xeokit v1.1 Release Notes

Lindsay Kay edited this page May 25, 2020 · 13 revisions

Overview

This xeokit SDK v1.1.0 release includes: a bundled BIM viewer, HTML tree view and context menu widgets, ambient shadows, improved camera interaction, metadata support for 3DXML models, plus many fixes and tweaks requested by users.

Contents

Contributors

Special thanks to:

Features

Bundled BIM Viewer

xeokit V1.1 includes xeokit-bim-viewer, which is an open source 2D/3D BIM viewer built on xeokit, that runs in the browser and loads models from your file system.

This viewer is developed with funding from Digital building Industries AG and OpenProject GmbH.

Screenshot

[Run this example]

The viewer is integrated within OpenProject BIM 10.4, and can also be used as a stand-alone JavaScript application. In combination with open source CLI model conversion tools, it represents a low-cost, high-performance way to get your IFC models on the Web, that allows you the freedom to convert and host your models on your own server or GitHub repository.

Tree View Plugin

xeokit V1.1 adds a TreeViewPlugin, which is an HTML tree view component that can navigate the objects in huge models. TreeViewPlugin has various hierarchy modes, scales up to large numbers of objects, and fully customizable using CSS.

This plugin was developed with funding from Digital building Industries AG and OpenProject GmbH.

[Run this example]

Context Menu

xeokit V1.1 adds a ContextMenu component that provides a customizable HTML context menu.

This component was developed with funding from Digital building Industries AG and OpenProject.

[Run this example]

Scalable Ambient Obscurrance (SAO)

xeokit V1.1 adds Scalable Ambient Obscurance (SAO), which approximates Ambient Occlusion in realtime. It darkens creases, cavities and surfaces that are close to each other, which tend to be occluded from ambient light and appear darker.

SAO was developed with funding from D-Studio.

[Run this example]

The animated GIF above shows the effect as we repeatedly enable and disable SAO. When SAO is enabled, we can see darkening in regions such as the corners, and the crevices between stairs. This increases the amount of detail we can see when ambient light is high, or when objects have uniform colors across their surfaces. Run the example to experiment with the various SAO configurations.

xeokit's implementation of SAO is based on the paper Scalable Ambient Obscurance.

Improved Camera Controls

The CameraControl component is completely rewritten in xeokit V1.1. CameraControl controls the Camera with keyboard, mouse and touch input, and fires events when we hover, click or tap objects.

[Run this example]

The new CameraControl provides better interactivity when dollying, orbiting and panning.

CameraControl API Changes

  • Adds the navMode property, which has three supported values: "orbit", "firstPerson" and "planView".
  • Deprecates the firstPerson property - now replaced by navMode
  • Deprecates the planView property - now replaced by navMode
  • Deprecates the panToPointer property - now replaced by followPointer
  • Removes the panToPivot option - pivoting mode always implies this behaviour now
  • Adds these properties:
    • followPointer - Sets whether the Camera follows the mouse or touch pointer.
    • constrainVertical - Whether to vertically constrain the Camera position for first-person navigation.
    • dragRotationRate - How many degrees the Camera rotates/orbits for a full sweep of the canvas by mouse or touch dragging.
    • keyboardRotationRate - How many degrees per second the Camera rotates/orbits with keyboard input.
    • rotationInertia - A factor in range [0..1] indicating how much the Camera keeps moving after you finish rotating it.
    • keyboardPanRate - How much the Camera pans each second with keyboard input.
    • panInertia - How much the {@link Camera} keeps moving after you finish panning it.
    • keyboardDollyRate - How much the Camera dollys each second with keyboard input.
    • mouseWheelDollyRate - How much the Camera dollys each second while the mouse wheel is spinning.
    • dollyInertia - Configures how much the Camera keeps moving after you finish dollying it.

CameraControl Enhancements

  • Adaptive dolly speed - dollying is when we move the Camera forwards or backwards, and CameraControl now adjusts dolly speed to be proportional to the distance to the nearest object.
  • Better orbit/rotation speed with mouse and touch - a sweep of the complete width of the canvas causes 360° yaw rotation, and a sweep of the complete height of the canvas causes 180° pitch rotation.

CameraControl Fixes

  • Fixes panning that was either too fast or too slow - adds view-space panning, where panning rate is proportional to the distance between the Camera position (Camera#eye) and the Camera point-of-interest (Camera#look).
  • Fixes issue with pivot indicator, where it was not always showing while the Camera was moving
  • Fixes memory leaks when destroying and recreating a Viewer, where mouse event handlers were not unregistered on destroy

Load Metadata with 3DXML Models

The XML3DLoaderPlugin can now automatically generate metadata from each SolidWorks 3DXML model it loads.

We can use that metadata with TreeViewPlugin to generate a tree view for navigating the objects within the model.

[Run this example]

XKT Improvements

xeokit V1.1 includes a new version of its .XKT geometry format (V3), which fixes an accuracy issue with IFC models positioned far from the World-space origin.

The xeokit-gltf-to-xkt CLI conversion tool and XKTLoaderPlugin have both been updated with this fix.

Also, the Creating Files for Offline BIM tutorial has been updated with more tips for preventing precision loss when converting your IFC models for use with xeokit.

Compatibility with BIMServer 1.5.2

The BIMServerLoaderPlugin now loads models from BIMServer 1.5.2, thanks to Nissim Pradhan](https://github.com/nissimpradhan), who is using xeokit within his research at Fraunhofer Italia.