2.3.109 (2019-11-06)

  • Added optimization code to clara main site.

2.3.108 (2019-10-15)

  • Updated threekit logo on v2 player.
  • Fixed rare bug with normal packing in threejs(affecting SAO).

2.3.107 (2019-09-17)

  • Fixed an issue where cubemaps using lat/long caused meshes to appear black.
  • Fixed an issue where using TRAA caused scenes to appear translucent.

2.3.106 (2019-07-30)

  • No v2 player changes

2.3.105 (2019-06-25)

  • Fixed bug with physical material crashing on Chrome v75
  • Fixed the error caused by the discardable meshes

2.3.104 (2019-06-06)

  • Removed inline styles for the configurator form. Added specific ids to each form element.

2.3.103 (2019-04-17)

  • Created face convexity operator for caching triangulation method of mesh faces
  • Show threekit logo for non-enterprise users' scene
  • Fix billboard text on iOS
  • Clearcoat can now be assigned a bump map.
  • Materials can be assigned a reflectivity map.

2.3.101 (2019-02-19)

  • Fixed bug that prevented material IDs from being preserved on subdivided meshes
  • Faster triangulation

2.3.100 (2019-02-07)

  • Added default texture coordinates when converting a shape into a mesh
  • Fixed triangulation bug introduced in 2.3.99
  • Fixed bug where multimaterials were not being respected when subdivided

2.3.99 (2019-01-22)

  • Moving forward, we'll be logging the dates of each release, starting with this one
  • Added SSR (screen space reflection) pass
  • Added rectangular area lights
  • SphereSurfaceSampler no longer calculates 5000 points upon loading with directional light shadow
  • Fixed Halton sampling
  • Fixed rotation and HDR issues with latlong maps
  • Improvement to triangulation data structure using typed arrays
  • Preserve transparency of SVG images when imported through the player
  • Added gyroscope and trackball options for node rotation


  • Changed Textshape bandAngle minValue from 0 to -90
  • Fixed SSAA for opaque objects
  • Fixed the bug causing the configuration event failure to trigger


  • Added UV channel selection to each individual map
  • Added tri-planar mapping option to physical material
  • Added cubemap support for latitude/longitude maps
  • Added Auto Fit Clip Planes option to player plug
  • Added UV Rotation
  • Added support to collapse canvases
  • Added shape array operator
  • Added a bitmap to SVG converter
  • Added an SVG to shape converter
  • Added a new SVG converter demo
  • The default AA is now TRAA for new scenes
  • Trying to fetch a pinned version of a scene that has no pin will now result in a 404 rather than a 502


  • Added support for custom events to the configurator. These can be added as buttons on forms or triggered by configuration.triggerEvent(eventName). To listen for a custom event firing: api.on(eventName, callback)
  • If the targetFormat option is specified for assets.importImage, it now correctly waits for image conversion to generate the image node, rather than immediately using the original format.
  • assets.importImage now always assigns originalBitmapFile on the generated Image node and only assigns glBitmapFile if the image is WebGL-compatible.
  • Rotation texture parameter now works in v2 player


  • Displacement map fixes
  • Disable OIT if not supported
  • Added maxLength field to String configurator attributes and operator properties to limit the number of characters
  • Added SVGShape operator to generate Shape geometry from the paths of an svg image node


  • Robustness fixes


  • Added back legacy gem material (availible as option in Refraction/Mode)


  • Fixed TRAA bug with transparent materials appearing too dark or jittering
  • Fixed color bug predominantly on Firefox, where bright areas would suddenly change color


  • switch to faster CDN cdn.threehub.com
  • Fixed evaluation issue with self references


  • Fixed error when using a blend shape with mismatching normals to the original. The originals are used.


  • Fixed bug with scene.isVisible and player.filterNodesFromPosition on scenes that don't use hierarchical visibility
  • Add 'Render Category' Option to Physical Material allows the user to force the material opaque or transparent
  • Fixed issue with incorrect uv's when applying multiple UVMap operators on different faces


  • Fixed the bug that position argument for nodeMove handle function shouldMove, updatePosition was wrong.
  • Add the keepOffset support for nodeMove surface mode.
  • Revert SAO to not being visible through partially-opaque objects
  • Removed SAO from certain helper objects (such as reflective floor and PlanarShadow)
  • Fixed issue where filterNodesFromPosition was not ignoring nodes that were not hiearchical visible


  • Improved refractive pass performance with large scene.
  • Fixed the TransformVertices operator issue when there is bad seleciton vertices.
  • Fixed smearing on clear background, and unwanted opaque background when using high transparency.
  • Fixed the issue where the num renders remaining (for traa) was not properly reset when a change occurred during the momentum.
  • Cleaned up animation on interruption.


  • Fixed error when using a new scene after clearing (sceneIO.clearScene()) a previous one
  • Added a boolean all option to the options object for configuration.getBOM(options) which specifies whether to populate the BOM based on hidden attributes as well. Default is true.
  • Raycast functions no longer return nodes in the process of being deleted (for example calling player.filterNodesFromPosition synchronously immediately after sceneGraph.deleteNode)
  • Improvements to dithering and antialiasing
  • Increased device support for GemMaterial
  • Added curve text align options
  • Auto downsize options for canvas text
  • Fixed curve text display issue on firefox
  • Fix a node attach bug that cause the model jumping between different anchor point


  • New shader algorithm for GemMaterial
  • Fixed several issues regarding incorrect visibility on nodes in certain situations
  • Momentum for camera tools (orbit, pan, zoom) is now optional. Ex. api.commands.setCommandOptions('orbit', {momentum:false})
  • Added optional node list for constraining the camera radius based on the bounds of those nodes only: api.player.setCameraRadiusConstraint(3,1, {nodeList: [...nodeNameOrId]})
  • Faces on a multimaterial mesh with no submaterial assigned to them will now have their backfaces rendered correctly when double-sided rendering enabled
  • Fixed progressive blurring on certain devices with the TRAA antialiasing player option
  • Fixed issue where momentum would cause double render frames under certain conditions
  • Improved momentum responsiveness under low FPS
  • Add Justify in canvas text operator


  • Material id's are now preserved for faces of sliced and mirrored meshes
  • Improved camera momentum behaviour under low framerate conditions
  • filterNodesFromPosition and filterNodesFromCenter now support a nodes object which is an array of node id's to consider for filtering. Speeds up filtering for large scenegraphs.
  • The PlanarShadow helper now uses a transparent plane


  • Fixed error relating to lookAt operator targeting
  • Added joinType (0-Square, 1-Round, 2-Miter) property to OffsetShape operator controlling how offset edges are joined. An additional property arcTolerance controls the distance threshold for smoothing with the Round option
  • UVMap operator now applies mapping to all vertices if no selection specified. If a vertex selection exists, unselected vertices will retain their original mapping
  • Allow scroll event to scroll page when using nodeManipulate tool with no selected node


  • Fixed an issue where an orbit target would cause endless camera updates to trigger under certain circumstance
  • Fixed UV Map operator to preserve UV values of unselected faces
  • Add support for loading 'pinned' scenes with sceneIO.fetchAndUse(sceneId, null, { pinned: true })
  • Fixed api.player.setCameraRadiusConstraint() will frame camera correctly if camera is outside constraint range


  • Fixed the attribute delete regression in configurator
  • Allow OIT (high transparency) on mobile
  • Include Light type node in the api.scene.cloneModel()
  • Tools with 'scroll' handlers must return a truthy value if they applied a change from the scroll event -- this will preventDefault on the event, and prevent the page from scrolling.


  • Added add restrictAxis and shouldRotate in nodeRotate tool options
  • Fixed material render bug on Apple devices


  • Added option to frame the exact geometry (rather than bounding sphere): api.player.frameScene(nodeList, { mode: 'geometry' })
  • Clone configurator set image attribute value
  • Do subd inside buildup if there is buildup file
  • Draggable Options in configurator
  • Added canvas composite opacity property
  • Clone model will clone background vrscenes in the scene


  • Fixed issue with scene camera not being returned to normal after running snapshot command with a different camera
  • Fixed offset of BooleanShapes operator result, when added to an existing mesh and using the worldspace option
  • Negatively-scaled meshes now render with flipped faces, so they will no longer appear "inside out"
  • Added cameraId option to player.frameScene to frame non-active cameras. Ex. `player.frameScene(optionalNodeList, {cameraId})
  • alphaTest on physical materials now renders meshes that pass the test as opaque


  • add nullMaterial in the query for steelcase buildup.
  • when running buildup, we create a buildup job on the server to record the system log.
  • GemMaterials no longer use a specified gemstone mesh node, but instead use each mesh they are applied
  • Added a minZoom property to Camera Properties, as well as through the api (player.setCamraRadiusConstraint(maxZoom, minZoom))
  • Added support for IES profiles to Spotlight


  • The PlanarShadow Helper now respects the "castShadow" property of objects
  • faceIndex and mapFaceIndex removed from player.filterNodesFrom... results (when using subobjects option). Instead, only the index and a new subObjectType property ('Face', 'Edge', 'Vertex') in the returned object suffice
  • Fixed an issue where configurators with a script that fetches another scene would be locked into a version change error on save
  • Fixed a rare issue where an operator (such as UVMap) would sometimes produce corrupted mesh data


  • Added a new combineTextures boolean property to the MaterialProperties operator which tries to combine certain material textures together. This can prevent rendering artefacts on certain devices (ex. iOS) due to texture count limitations.
  • Added support for the Taper operator
  • Added optional filename argument for the snapshot command (ex. api.commands.runCommand('snapshot', {fileName:'myFile'}))
  • Fixed snapshot command on IE
  • Fixed incorrect camera zoom when switching from an Orthographic to Perspective camera
  • The active camera node's scaling no longer affects the view scaling
  • Fixed configuration renders


  • Fixed configuration render
  • Fixed the different billboard font in player and render
  • Fixed jiggle in webvr
  • Preliminary support for subobject selection via the following options on the 'select' command: enableSubSelectionHover, enableSubSelectionHover, subObjectType
  • centerAlign and floorAlign camera attributes can now both function at the same time
  • Several improvements in the sequencing of scene/camera initialization
  • Helper nodes can now be selected (via the 'select' tool or the api.player.filterNodesFrom... functions)
  • Added several filtering options to selection mechanisms. The select command now has the following options, and player.filterNodesFrom... functions take an object as the 3rd argument with the following optional properties filter - a custom function which takes a node id and returns a boolean determining whether it should be considered for selection layer - objects in a layer other than the one specified will be excluded from consideration (currently, only Polymeshes specify layers, on their Properties plug, up to 5 layers: 'Layer 0', ..., 'Layer 4', while ''=all layers)


  • The preloaded event now waits for any additional assets being loaded from preloadCommands
  • Fix snapshot command
  • More lenient handling of PolyMesh data with positions/indices mismatches


  • Fixed endless camera update loop when scaling an orbit target, leading to player performance issues
  • New ShadowPlane Helper operator for dynamic, customizable shadow generation
  • Angles for the Torus primitive are now treated as degrees (rather than radians)
  • Fixed camera near/far clips planes when camera is inside the scene's bounding box
  • Shape node geometry with unclosed loops are now rendered as lines
  • Fixed bounding box of Shape node not being updated after certain operations
  • BooleanShapes operator no longer throws an error when the second Shape (srcB) is not defined, but simply skips execution
  • Increased min/max limits for xOffset, yOffset, overrideWidth and overrideHeight properties of the CanvasComposite operator from +/-10000 to +/-25000


  • Material ProxyReference operator no longer causes a crash with an empty WebGL material reference
  • Billboard helpers are no longer highlighted whenever any other node is highlighted
  • Add TRAA anti-alising for v2.
  • Add orbit limit in cameraAttributes


  • Fixed incorrect camera initialization after clearScene
  • Fixed bad camera state afer merging in another scene
  • Fixed a couple issues with camera orbit targets


  • [FIX] Regression with annotations display
  • Improved buildup: rotation, and multiple targets


  • scene.cloneModel now clones Shape nodes as well
  • Added a new Helper node type for various graphical helper objects
  • Added Dimension operator to the Helper plug to add connector lines/arrows between nodes
  • Added Billboard operator to the Helper plug to add 2D camera-facing text and images
  • Added floorAlign and autoAlign query parameters.
  • Reworked the camera system addressing a number of camera functionality/updating issues
  • add 'autoAlign' and 'floorAlign' as the new preload commands
  • fix for larger scenes on server side render


  • Fixed overlap direction for TextShape operator
  • Fix the mouse zoom scroll on windows chrome
  • Nodes with inherited transforms are now positioned correctly with the nodeMove tool


  • Add the custom font in canvas text operator, so the user can use the font file.
  • Add force double sided.
  • Switch to higher quality thumbnail & server side rendering mechanism
  • [Fix] Remove blank option in configurator


  • Added moved to the state returned in the onEnd callback of nodeMove tool, indicating whether any movement was actually applied to the node
  • Fixed an error when using the OffsetShape operator


  • [FIX] Regression caused scenes to not show/initialize the configurator.


  • Fixed a bug where PolyMesh nodes that are updated to an empty mesh would still render their previous mesh
  • Fixed bounding box calculation error when encountering a non-buffergeometry mesh
  • Fixed zoom scrolling when initializing a player with pan or orbit tools removed
  • Improved algorithm for compacting geometry in the TextShape operator
  • Added TextShape demo
  • Added BooleanShapes operator to Shape nodes to combine Shape geometries (intersect, union, subtract, XOR)
  • Add Center and CenterShape operators (for PolyMesh and Shape nodes, respectively) to center and align geometry with local axes
  • Add min/max support for Vec3 operator properties (accepts single numbers or object/array vector formats for per-axis constraints)
  • Added shouldMove and updatePosition callback functions as options to the nodeMove tool, for customizable constraints over when and how to move (See Tutorial)


  • fix load failure on scenes with area lights


  • fixed bad geometry when using the FromShapeWithBevel with a Shape that has an edge which traces backward over the previous one
  • Configurator: actions for an Options attribute's value are no longer deleted when the value is renamed
  • fixed an issue with the autoShadow options not respecting transforms, resulting in artefacts like cutoff shadows
  • added a rigidity option on the UVWarp operator to keep connected mesh components flat when warping
  • fixed issues with GemMaterial sparkles not rendering with the correct size (or at all)
  • fixed light positions being off by 1 unit
  • added nodeMove tool option to show attachment points
  • improve SAO on mobile


  • Fixed several errors with usage of discardable geometry
  • Improved handling of bad faces during mesh triangulation
  • Added a demo for zooming via a slider control
  • Added warpOffset option to the UVWarp operator for added control of object positioning in the UV space


  • Fixed physical materials not using environment map when player loaded with camera setting query params (ex. polarAngle, azimuthAngle, etc)
  • Fixed bug where Shape node rendering was not being cleared when it was updated with empty geometry
  • Added Shape node Reference operator to use the output of another Shape node
  • The PolyMesh Reference operator is now preserved on publish
  • Delaunay triangulation used to improve 'earcut' triangulation in 'FromShape*' operators.
  • Added bevel option to the FromShapeWithExtrude operator


  • Full customization with annotation css. Use annotation-ID for per-annotation css.
  • Resolution support for snapshots.
  • Fixed the overlap functionality of the TextShape operator


  • Support markdown and custom css for annotations. Use IMAGENODEURL:"Image node name" for Image urls.
  • Fixed an issue with the reflective floor not disappearing when disabled
  • Fixed touch events registering clicks twice
  • Fixed a bug with player.filterNodesFromPosition not getting the correct position
  • TextShape geometry now forms properly closed loops
  • Added UVWarp operator for PolyMesh nodes
  • Added a new FromShapeEdgeSweep operator to produce a swept PolyMesh from Shape edges
  • Added custom autoRotate resume time to the Player plug, for resuming autorotation after canvas interaction
  • Bounding box calculations (ex. via scene.getNodeBoundingBox) now include Shape nodes
  • scene.getNodeBoundingBox now accepts an ignoreChildren boolean property in the options (2nd) argument for whether to include descendant nodes in the bounding box calculation. Ex. scene.getNodeBoundingBox(id, { ignoreChildren:true })


  • [FIX] minify claraplayer.min
  • Annotation image


  • Added wireframe demo
  • Fixed mesh selection with wireframe rendering
  • Added a TransformVertices operator for Shape nodes, analogous to that for PolyMesh nodes


  • Add scene.attachModel: Move model within a scene via anchor/attach points.
  • Add scene.reparent: Adjust transforms while reparenting nodes
  • Configurator events: nodeleave/nodeenter/click as triggers for actions


  • [FIX] error exportBufferGeometry is not a function
  • Added FromShape and FromShapeWithExtrude operators to create a polymesh node from a shape node


  • Added RingShape and AttachShape operators for Shape nodes
  • Added Offset operator for Shape nodes
  • Added embedded zoom slider
  • Updated momentum algorithm"
  • New Pass Control Table
  • Add wireframe mode


  • Added new Shape node type for line-based features
  • Added TextShape, Rectangle, Circle, Polygon operators for Shape nodes


  • [FIX] material loading
  • [FIX] OIT


  • Add support to Selection Sets for adding and removing lists of node ids in addition to the query.
  • [FIX] Option visibility working with Image swatches


  • [FIX] Fixed an error when updating a hemisphere light
  • Added the notion of layers. PolyMesh nodes can be assigned a layer, and cameras can have a layer specified to use when framing the scene. player.frameScene and scene.getNodeBoundingBox now accept an additional options argument specifying a layer for framing or bounding box calculation.


  • [FIX] scene.getScreenPosition should not fail if scene is not loaded


  • Add configuration.onChange to register change listeners that get called during the same frame as the change.
  • [FIX] Regression when calling frameScene/getScreenPosition during animations


  • [FIX] ShapeSets for some font letters would compact/align relative to an incorrect region of an adjacent letter
  • Bent ShapeSets don't deform their ring attachments anymore.
  • [FIX] Crash from UIWebView on iOS


  • [FIX] Convert bingeom function with empty options


  • Add support for metadata on configurator attributes
  • configuration.getConfiguration does not include hidden attributes
  • Add v2 fbx exporter


  • Add rings to the shape sets (LineText operator)
  • Fix changed material references might not always be reflected in render.
  • Add support uploading files from the configurator through a url and cache check for File uploads.
  • Add keepAspectRatio option to ImportImage


  • New Selection Set api: selection.createSelectionSet
  • Camera option in snapshot command
  • 16 blend shape channels
  • Improve diffuseColor/baseColor handling, decode gamma to linear for both


  • Bevel operation and proper normals on shape sets (LineText operator)
  • Improved shapeset spacing (LineText operator)
  • Improved performance of operators that make use of selection indices (ex. TransformVertices)
  • The default camera now adjusts clipping planes based on scene dimensions


  • [FIX] Fixed triangulation algorithm that would hang the player when loading meshes with specific geometries


  • [FIX] SVG image properly used in canvas composite
  • [FIX] Array and SegmentRevolve operators now work properly when their count and repeats (respetively) properties are set to 1
  • player.getBoundingBox now properly ignores meshes that are not hierarchically visible
  • Add windowed option to CanvasComposite operator
  • Add windowed and shadow option to CanvasText operator


  • The UVMap operator will now preserve and use rotation values rather than recalculating and overwriting them when the xAxis property is set to 4 (averaged normals).
  • Added support for svg format in the Image operator
  • [FIX] Loading fonts


  • Earcut triangulation algorithm improved and reinstated
  • [FIX] TransformVertices operator no longer applies the centerType transform when its matrix property is set


  • Revert earcut triangulation algorithm, which caused geometry issues in some cases


  • Use earcut algorithm to triangulate faces in meshes.
  • [FIX] Bad UV indices when importing FBX
  • [FIX] GemMaterial sparkles were not updating with gemstone mesh geometry changes
  • TransformVertices operator now supports centerType property for scaling/rotation pivot
  • Revolve, SegmentRevolve and CrossSectionRevolve operators are no longer collapsed on scene publish


  • [Fix] Prevent embedded configurator script from running multiple times
  • Increase number of BlendDeformer blend shape channels from 4 to 8
  • Create clips of reduced transit size for faster scene graph download
  • [FIX] Optimized images on server side renders
  • Create faceNormals property for polymeshes


  • fix broken build


  • Add DeleteComponent operator
  • properly use the environment map intensity for gem material
  • Add order in transprancy render pass support


  • Allow for resizing and format change of image assets in image plug
  • [FIX] Revert behaviour of tinting composition in IE


  • Fix publishing on scenes with Canvas Image operator


  • Added 'Squish Factor' to Gem material
  • Remove limit of concurrent file requests
  • Disable LZMA compressed files
  • Change product tour arrow display
  • Set IE-incompatible canvas blending mode to 'source-over' in v2 for IE
  • [FIX] defeaturing
  • Add Auto explode functionality
  • Hide configurator tool in vr mode
  • Added color swatches to configurator
  • Improve scene.animateCameraTo smoothness


  • Added soft selection options to the TransformVertices operator
  • Tessellate operator now treats empty indices as selecting entire mesh


  • Added support for the MetaData operator


  • Ensure DOM has been updated before events are emitted
  • Import Image supports pdf and svg format
  • Update bounding box correctly after geometry transform (ex. TransformVertices operator)


  • Gem sparkles
  • Added Tessellation operator for v2
  • Added configuration.setAttributeVisibility to public API
  • Added support for MaterialIDs operator


  • [FIX] Average Normals option in UVMap operator
  • Added Gem materials
  • Add configuration.getPresets to public API


  • Added support to MeshSmooth operator for tangent map
  • Disable Mouse Controls during camera animation


  • Configurator Presets and Script support
  • Add SegmentRevolve operator
  • Add Extrude operator to V2
  • Add headlight if no lighting exists
  • onChange function of nodeMove returns intercept data in surface mode
  • VR Keyboard controls only walk on VR walkable surfaces and stops at walls
  • [FIX] Fullscreen resizing on safari
  • [FIX] Resolution adjustments to VR mode


  • [FIX] IBL fixed on iphone6s/7.


  • Add camera attribute orthoHeight for clearer manipulation of orthographic camera view


  • [FIX] Rotation of UVMaps


  • [FIX] Visibility for pre-fetched meshes was not being respected
  • [FIX] configurator variables values are being lost


  • Add Swatch display support for configurator
  • [FIX] Baking Transform of PolyMeshes in V1 and V2
  • [FIX] Loading of newly visible PolyMeshes
  • [FIX] Changing node properties during load and clone
  • [FIX] Selection (and raycasting in general) after certain scenegraph changes


  • [FIX] query for property: active will match all operators.
  • Hierarchy visibility respects Model visibility, and Annotations follow


  • [FIX] Background texture disposing
  • [FIX] Add operator scenegraph updates


  • Add variable quality for mobile and vr devices
  • Rename Lathe operator to Revolve
  • Improved scenegraph updates, resolving some animation performance issues


  • Fixed crash with UVMap operator on a mesh with no pre-existing uv map


  • Added customization for selection highlight thickness
  • Expand functionality of uv map operator
  • Updated configurator ui


  • Added Tangents operator
  • Fixed scenegraph queries using the wrong operator


  • Add support for Cut/Slice and Symmetry/Mirror operators
  • Added BendDeformer operator
  • Add hierarchy visibility


  • Fixed faces for lathed meshes with added vertices
  • Fixed background turning black when highlighting a node


  • Add support for Lathe operator
  • Update coverage of promise and Array.findIndex for IE 11


  • Change vrTeleport to walkable
  • Fixed poor quality on very small primitives


  • public configuration.setAttribute api


  • configuration annotation visibility action
  • configuration multi scene support


  • configuration.executeAttribute


  • configuration api fix


  • Backwards compatibility updates to configuration


  • Updates to configuration api


  • Allow modification of highlight color
  • Greater z-buffer precision on server
  • [FIX] Modify TypedArray.from polyfill for safari <= 9


  • Improved quality on Intel integrated graphics.
  • Support for directional soft shadows (Ultra mode.)
  • Improved specular reflection quality.
  • Improved no-WebGL fail-over.
  • Skip interstitial on WebVR on Oculus and Vive
  • Improve z-ordering for the viewer.
  • Allow for polymesh volume calculation.


  • Add polyfill for Array.from for Internet Explorer
  • Reduce z-index of manipulator tools
  • Fixes for the resizing of vr interstitial
  • Interstial doesn't show on non-mobile devices


  • Add polyfill for Array.from for Internet Explorer


  • Scale background image
  • Updates to configuration api.


  • Increase efficiency of HDR cube maps on server side renders
  • lzma no longer used on mobile to speed up scene loading


  • Add onChange and onEnd callbacks to the node tools.


  • Individual Camera Control Setting
  • maxZoom url parameter for embeded player
  • [FIX] Reparent nodes fix for raycasting


  • Various configurator app usability changes


  • [FIX] Intersitial on Daydream and other intersitial styling


  • Add nodeenter, nodeleave tool events
  • Add controllerUpdate event
  • Custom vr teleport meshes


  • Expose Normal operator
  • [FIX] Raycasting on tool widgets
  • Add VR interstitial


  • [FIX] improper const usage.
  • Throttle XMLHTTPRequests.
  • Improved accuracy of animation optimizations.


  • [FIX] custom annotion overlays should persist across clearScene.


  • Bumpmap scale is now invariant


  • sceneIO.clearScene will now clear all scene data and cached data for improved memory profiles.
  • Add sceneIO.prefetch, to warm the cache for the next scene



  • [FIX] Skin Operator fix


  • Fix bug preventing some thumbnails from rendering


  • Improve alpha transparency quality of screenshots


  • Fix for transform vertices bug


  • Use FXAA everywhere for first render rather than SSAA.
  • Fix for incorrect HDR lighting on Intel on Windows.
  • Improved HDR quality for Safari.


  • Fix for node reparenting


  • Update to configuration


  • [FIX] Safari fix for updated Lights


  • Add Player attribute for shadow quality
  • Added player.setProgressBar for customizing the progress bar display


  • Modified config storage from object to array.
  • Add Auto Shadow for Directional Light and Spot Light


  • Add support for look at operator for non camera nodes


  • [FIX] Plug memory leak from multi materials
  • Add Combined Camera controls tool
  • Add optional configuration panel to player


  • Added world space relative uv mapping
  • Added directional light support
  • Improved shadow support for all light types
  • Camera target centered when using virtual camera or polar arguments


  • Add scene.getScreenPosition api, for returning 2d position of a node
  • Add annotations.useCustomOverlayFunction api for building custom overlay UIs


  • Add support for ambient occlusion map


  • Camera target centered when using virtual camera or polar arguments
  • Add fullscreen option in requestLenticularMod()


  • Improved memory management when switching scenes. 2.2.29-sc

  • Camera target centered when using virtual camera or polar arguments


  • Add support for material ID aware subdivision.


  • Support for orthographic camera.
  • Support AO/Roughness/Metallic maps as combined RGB maps.


  • Fixes to VR Navigation and VR Rendering


  • Misc configuration


  • Canvas text operator
  • Fixed hdr texture discoloration/banding issue on Internet Explorer and in thumbnails
  • Several other minor fixes and improvements to hdr texture handling
  • Fix subdivision handling of UV creases


  • Fixed texture memory leak
  • Miscellaneous bugfixes


  • Fixed normal mapping when faces have inverted UVs from a flip operation.
  • Allow for flipping red and green normal map channels in physical materials.


  • Added initial support for physics simulation


  • Fix mirror initialization bug related to fade/roughness.
  • Smoother fade falloff.
  • Lower SSAA max sample refinement.


  • Expand annotation FOV to 360 degrees.
  • Allow one to set the annotation direction axis.


  • Upgrade three.js for faster IBL
  • Correct IBL orientation.
  • Change order of Bloom, DOF and SAO post effects to ensure that SAO is applied first.


  • [FIX] Regression for camera animations


  • Add support for names key in query, which does a heirarchical search by names
  • Clips are now published using heirarchical names, so node names do not need to be globally unique


  • Add scene.addNode, and scene.addOperator actions
  • Add scene.getNodeBoundingBox selector
  • [FIX] Handle drag events originating from within an iframe
  • [FIX] Updates to SAO
  • [FIX] Error with setupCommand being run multiple times


  • [FIX] Updated to the latest version of three.js to fix a crash with multiple player instances


  • Remove focus outline on the canvas
  • Add smoothing by material ids to subd


  • Added clearScene function
  • Added material ids to mesh
  • Merged Text and String SchemaType
  • SchemaType String now enforces type
  • [FIX] Meshes now retain optional data on a non-topology change
  • [FIX] IE Compatibility Errors


  • [FIX] Meshs now always default to doublesided rendering


  • [FIX] Subdivision of UVMaps now treats all edges and corners as fixed


  • Holding Shift while dragging now pans
  • Holding Control while dragging now zooms
  • Added player version to 'is loaded' output and player object
  • [FIX] Fixed warnings related to three.js


  • [FIX] Fixed a bug in the box operator when the y segments were different from the z segments
  • [FIX] Tools such as orbit and zoom now work correctly when there are multiple players on a page


  • [FIX] Added check for non-existent references to nodes


  • Added Depth of Field Pass
  • Added ‘devMode’ option to claraplayer, which will turn uncaughtError catching off
  • [FIX] Rollbar errors now print the stack trace for the error, not the error handler


  • Added Bloom Render Pass


  • Revert change to three.js exporting colors as hex (fix publish compatibility for old versions)


  • [FIX] Animating from cameras with LookAt targets


  • Updated to the latest version of three.js


  • Introduce commands and widgets
  • vrMode tool will be visible when vr is available


  • Changed fetch api to include waitForPublish option, default is false
  • [FIX] duplicate declaration of property in UVTransform schema


  • [FIX] sortFacesByAxis missing argument


  • Major Version Change: Major internal changes for faster animation
  • [WARNING] This version introduces breaking API changes
    • getting reference id's now return the ID directly
    • getting Vector3 and Color now return three.js instances


  • Scene will still load even if assest do not


  • [FIX] UVMap operator now handles undefined uvMaps


  • Add UVTransform operator


  • [FIX] Don't eat mouseup events on the page


  • Added Instancing support


  • Added planar projection to UVMap operator


  • [FIX] Render issue when resizing window


  • Added falloff colors, maps, opacity and opacity maps.


  • [FIX] Blend algorithm for msaa
  • [FIX] Lightmap issue


  • [FIX] Zero scale causes problems


  • [FIX] player.animateCameraTo


  • Add VR Support


  • [FIX] Cube map backgrounds assumed HDR


  • [FIX] image prefetch

1.6.9, Format 30

  • Support EnvironmentMap and CubeMap scene backgrounds


  • Add UV Map operator with support for Box projection
  • Add useTimeline option to queueClip, for displaying animation timeline
  • Support calling setupCommand inside v2 WebGL renders
  • Add sceneIO.preloadCommand for running commands before scene is displayed
  • filter/getAll will not throw error if from query does not match
  • [FIX] Collapse on publish will not send empty polymesh if node is hidden


  • [FIX] filterNodesFromPosition working on touch


  • animateCameraTo, trackball mode

1.6.5, Format 29

  • Support for full transform operator (incl pre-rotation)
  • Move AA refinement out of hardware into software
  • [FIX] Fix for animate camera


  • Optimize polymesh to buffer geometry, for improved animation speed


  • Support keyframe thinning
  • [FIX] Detect transparency in maps


  • Improvements to animation speed
  • Expose three.js camera and scene from api (api.three.scene)


  • Fixes to Skinning and animating of sub keyframes.


  • End drag events when mouseup happens outside player iframe
  • SubD Improvements

1.6.0, Format 28

  • Add initial support for Skinning
  • Create a clip from the default keyframes on the scene.
  • Support for PolyMesh primitives: Box, Sphere, Cone, Capsule, Cylinder, Plane, Torus, Disk
  • Add constrain camera sphere


  • Remove trackball jitter
  • Fix drag tools locking when inside iframe, and mouseup event occurs outside the iframe


  • Add player.filterNodesFromPosition


  • Fix camera zoom issue

1.5.20, Format 27

  • Support TransformVertices Operator


  • Improve SubD


  • [FIX] Issue with safari compatibility

1.5.17, Format 26

  • [FIX] Issue with textures being improperly cached
  • [FIX] Invisible meshes need to be published


  • Documentation and support for static publishing
  • Keep children of MultiID meshes after split
  • Child nodes of Bones will display
  • Use thumbnail=false query to hide thumbnail


  • hideThumbnail=true query parameter


  • Switch to PolyMesh format
  • Add MeshSmooth operator support
  • Add MeshSmooth to all meshes with the query parameter: ?subd=true
  • [FIX] Camera position in gyro mode could flip orientation when constrained and zoomed.


  • [FIX] Trackball navigation rotation after navigation reset


  • Stereo and Parallax modes
  • Support for deleting nodes
  • Annotations limit visibility support
  • Don't request invalid thumbnail


  • Add raycast selecting


  • [FIX] Child heirarchy properly updated in three.js scene, fix scale issue with child of nulls.


  • Speed up IBL precomputation step.


  • Changed CDN and CORS headers.


  • Add support for custom hover colors on manipulator icons
  • Cache the EnvironmentMap texture image for speed improvements
  • [FIX] publish MultiID material nodes.


  • Add fullscreen support
  • [FIX] Issues with manipulator icons
  • [FIX] Camera animations resolve to the correct destination transform


  • Add assets.getUrl selector: will return the url to the asset
  • Update assets.importImage to work with existing asset ids.


  • Add assets.importImage action


  • [FIX] autoRotate camera flipping


  • Add support for keyframe animations.
  • [FIX] Revert changed behavior of gyroscope mode.


  • Add trackball navigation


  • Faster rendering via material batching.
  • Update thumbnail image to match camera fov
  • Improved rendering speed via RAF
  • [FIX] Flash when loaded.


  • Fix background color.


  • Faster SAO


  • Support for custom annoations, using player.useCustomAnnotationFunction
  • claraplayer.hasWebGL function for testing old devices


  • 'loading' event is emitted during loading, with a progress value (0 to 1).
  • Find node parent with: scene.find({id: 'uuid', parent: true})


  • Clearcoat


  • Improved SAO


  • [FIX] Virtual cameras must preserve aspect ratio
  • [FIX] Clone nodes without bringing their children should work
  • [FIX] Cloned nodes appearing multiple times in the scene graph


  • [FIX] Prevent flash between background image and scene


  • SAO support
  • A default camera position will be used if no camera is specified
  • Initial support for calling plugins
  • Rendered WebGL thumbnails from new player


  • [FIX] Transparent maps


  • [BREAKING] filter is now heirarchical by default, and add from option to find/filter to set the root node to search from (defaults to the scene root node).
  • Add a reparent action on sceneGraph, to move nodes
  • Add a clone action on sceneGraph to copy nodes
  • Add a fetch action on sceneIO to import scenes
  • [FIX] scroll wheel zoom was broken
  • [FIX] mesh prefetch


  • Add children selectors (See Tutorial)
  • Add player.resize action
  • Add annotations.{open,close}Annotation actions
  • Add preloaded event for modifying the scene before it becomes visible
  • [FIX] Only iterate over own properties, if base prototypes have been modified
  • [FIX] Multiple players on the same page can share assets
  • [FIX] Background will show through while loading, spinner will overlay
  • [FIX] Show all tutorial docs in navbar, better styles to highlight functions

1.1 - The api edition

  • Many changes in this update.
  • Publish documentation for api.
  • New scene module with flexible api for finding, filtering, getting and setting data in the scene graph.
  • Support for MultiID Materials: You must run Detach Material IDs on the object to spit the mesh into its subcomponents first.
  • Support for multiple player instances on the same page.
  • Ability to animate camera movement
  • Support for Image prefetch.
  • Performance improvements for large scenes.
  • More fixes and refactoring.


  • [FiX] WebGL error in IE
  • [FIX] Speed up scroll to zoom in Firefox
  • [FIX] Drag events in Safari


  • [FIX] Swap polarAngle/azimuthAngle
  • [FIX] Touch control dragging does not cause excessive movement
  • [FIX] Two finger swipe movement is not doubled


  • Support parallel loading of js and scene


  • Improve robustness of operator support, initialization.


  • Restrict camera to positive Y axis support.


  • Collapse transforms for all nodes with transforms, not just meshes.
  • ProxyReference operator