Skip to contentChangelog - WebGi SDK v0
0.15.0
- Update three.js to r160
- Add
stopPointerEventPropagation
in Viewer options. Set it to true
to prevent mouse/touch events from bubbling over the canvas. - Serialize applyOnLoad in
MaterialConfiguratorBasePlugin
, add applyOnLoadForce
(for old files) - Set
stopPointerEventPropagation
to true
by default in CoreViewerApp
.
0.14.1
- Fix a bug in
DiamondPlugin
when materials are not cleared on configurator change and copyProps
- Interface
AnimationObjectPlugin
with PopmotionPlugin
and CanvasRecorderPlugin
to be able to use with video recording. - Simply UI to single hierarchy in
AnimationObjectPlugin
- Add
GemRefractionPlugin
, MipMapBlurPass
, MipMapBlurPlugin
- Add inclusions support in
DiamondMaterial
- Removed
licenseKey
parameter for CoreViewerApp
- Add undo/redo support for image edit actions in
TweakpaneUiPlugin
- Export
WatchHandsPlugin
- Fix issues when loading some fbx, 3dm files
0.12.3
- Add gltf export only visible to ui
- Ignore auto prepare diamond mesh when its a Line or invisible.
0.12.2
- Reset glTF version to
2.0
in GLTFWriter2
which fixes DRACO Compression.
0.12.1
- Downgrade
rhino3dm
from 8.9.0
to 8.0.1
after which a bug is introduced while loading some files.
0.12.0
- Updated three.js to r158
- Fix a bug in TAA where background was smearing when MSAA was disabled
- Updated
bumpScale
handling in standard material, CustomBumpMapPlugin
, NoiseBumpMaterialPlugin
is changed. Files saved before this version will use the old scale, no change is required in the files. - Fix a bug in
SimpleTextPlugin
where fonts are not applied correctly when style is not passed or font-family
is invalid. - Allow relative paths in
fontPath
in SimpleTextPlugin
- Fix regression when loading svg data urls with
AssetImporter
- Update asset version in material files
0.11.2
- Improve
HierarchyUIPlugin
- Highlight selected item and children
- Improved visibility toggling
- UI Fixes
- Set
imported.name
to load url or filepath/filename after importing an asset through AssetImporter
if it's set to empty string ''
- Allow loading
avif
, ico
, bmp
, gif
, tiff
files with default TextureLoader
by default in AssetImporter
, and add in tweakpane image ui.
0.11.1
- Add WatchHandsPlugin
- Add Support for model stage placeholder animations
- Fix a bug in Firefox where license notice is shown on registered domains.
- Add enabled to RendererUiPlugin
- Add
confirm
and confirmMessage
to GLTFSpecGlossinessConverterPlugin
- Add
modelRootScale
to IViewerAppOptions
- Add support for setting
modelRootScale
, autoScale
, autoCenter
, autoScaleRadius
in core-editor using query params
0.11.0 (Major changes)
CanvasSnipperPlugin
- add options progressiveFrames
, tileRows
, tileColumns
, normalized rect to snapshot options. Add options to UI.- Add method
DiamondPlugin.unprepareDiamondMesh
, unprepare diamond geometries when Make Standard
is clicked in the UI. Add getAllCacheMaps
for performance debugging. - Removed
IViewerApp
interface. Use the class ViewerApp
directly. - Signature for
IViewerViewerPlugin
changed to remove IViewerApp
- iJewel3d license verification now checks for license on embedded iframes.
- Updated
Rhino3dmLoader2.LIBRARY_PATH
, which requires rhino3dm version >8.0.0
. If using Rhino3dmLoader2.LIBRARY_PATH
, update the version to latest 8.9.0 from npm. - Fix a bug where userData is cleared in Light toJSON
- Set
autoPushTarget2
to true
for main camera OrbitControls3
in CoreEditorApp
. (not serialized) - Add
GLTFSpecGlossinessConverterPlugin
to automatically convert specular-glossiness
(KHR_materials_pbrSpecularGlossiness
) to metal-roughness
in gltf files on load. - Add function
getBevelMaterials
in SSBevelPlugin
to get list of all materials in the scene that have bevel enabled. - Update maximum bevel radius in UI to 15 in
SSBevelPass
- Add custom ffmpeg options in
FFMPEGRecorder
- Add per camera view duration override
- Allow webp as internal type for video record in
CanvasRecorderPlugin
. - Add
SVGTextureLoader
with option to load SVG files as textures with fix for windows black texture for SVGs with no size. - Add options -
deleteImportedViewerConfigOnLoad
and autoDisposeSceneMaps
to RootScene
with default true
- If using the private property
__importedViewerConfig
after model load, set deleteImportedViewerConfigOnLoad
to false
- Add property
KTX2LoadPlugin.SAVE_SOURCE_BLOBS
for use in editors. - Allow picking
.ktx2
files in tweakpane image input. - Add events to
IMaterial
- addToMesh
, removedFromMesh
. - Add hooks to
MaterialExtender
- onMaterialUpdate
, onAddToMesh
, onRemoveFromMesh
, onRegister
. - Auto compute tangents whenever required in
AnisotropyPlugin
. - Fix deserialization of
ktx2
uris, svg
, other image type files inside gltf - Fix serialization of textures inside
material.userData
when downloading material json(pmat, dmat) - Update to three.js
r157
(0.157.1007
) (from r153
) - Strongly typed event type system with proper maps (Breaking Change for typescript classes)
- Add
Material.alphaHash
- Add
OrbitControls.zoomToCursor
- Add
ArcballControls.rotateSpeed
- Add
Loader.DEFAULT_MATERIAL_NAME
- Add support for loading PBR materials in 3dm files. Changes in
3DMLoader
WebGLRenderTarget
extends RenderTarget
, WebGLMultipleRenderTargets
extends WebGLRenderTarget
- Add
toCreasedNormals
(BufferGeometryUtils
) - Parse parameters changed in
EXRExporter
, EXRExporter2
for DataTexture
inputs - RenderPass
clearColor
, clearAlpha
defaults to null useLegacyLights
removed- The GLSL struct
GeometricContext
has been removed from the GLSL code base - AnimationUtils.arraySlice() has been removed
- Removed
RGBMToLinear
, LinearToRGBM
from shaders. Use RGBM16ToLinear
and LinearToRGBM16
- Renamed shader chunks
encodings_fragment
-> colorspace_fragment
encodings_pars_fragment
-> colorspace_pars_fragment
output_fragment
-> opaque_fragment
- Updated
@types/three
package path - https://github.com/repalash/three-ts-types/releases/download/v0.157.1005/package.tgz - Removed
getTexelDecoding
. Rename getTexelDecoding2
to getTexelDecoding
- Removed
getTextureColorSpaceFromMap
, getTexelEncodingFunction
, getTexelEncoding
- Removed official support for webgl 1. Some features might not work.
- Suppress useless warning -
WebGi DiamondMaterial: Material type is not supported
- Fix custom size on window resize in
RendererUiPlugin
0.10.7
- Add angle, duration (for turntable animation) and end padding ms in
CanvasRecorderPlugin
to the ui config.
0.10.5
- Fix a bug in
AssetManagerPlugin
when an error was thrown when loading without options.
0.10.4
- Minor fixes in
SSBevelPlugin
and PosePlugin
0.10.3
- Minor fix in
SSBevelPlugin
where sceneBevelRadius
overrides object radius
0.10.2
- Add options
sceneBevel
and sceneBevelRadius
in SSBevelPass
in SSBevelPlugin
- Remove stored
poseIndex
when pose is reset in PosePlugin
0.10.1
- Fix serialization error due to
PosePlugin
0.10.0
- Upgrade source to Typescript 5.7 (from 4.9)
- Add
pivotToPoint
, pivotToBBoxCenter
. Rotates a node around bounding box center of the node, or a pivotpoint - Fix for image drop not working in
TweakpaneUiPlugin
image. - Add properties to
Rhino3DMLoader2
- HidePointMesh
, LoadUserDataStrings
, LoadUserDataWarnings
. Added to Rhino3dmLoadPlugin
- hidePointMesh
, loadUserDataStrings
, loadUserDataWarnings
. - Clamp file names to 16 characters in
LoadingScreenPlugin
- Fix reset flicker in
InteractionPromptPlugin
- Fix for
DiamondMaterial
initialization without any properties. - Add support for
camera.userData.dollyFov
which automatically move the camera to fit scene when the fov changes - Add
TransformControlsPlugin
, TransformControls2
for 3D transform controls. - Fix bug in
TAA
, DiamondPlugin
where black squares where shown because of some NaN
values, when useRgbm = false
- Removed
controls
from PickingPlugin
in favor of TransformControlsPlugin
- Add
PosePlugin
to automatically compute poses to place objects on the ground. - Add custom map sampler/uv transform properties for Anisotropy material extension in
AnisotropyPlugin
and UI - Add utility parameters to
makeSamplerUi
0.9.22
- Fix for an edge artifact when looking at ground at an angle in
SSRPlugin
. - Several recording fixes including frame count check in
FFMPEGRecorder
, complete 360 rotation and last frame capture. - Allow removing model stage using a plugin preset.
- Make
onComplete
and onStop
async in PopmotionPlugin
. - Create
ModelStagePresetGroup
for both glb and json and use in PresetLibraryPlugin
. - Remove
preImported
from presets in PresetLibraryPlugin
before export. - Add Basic Undo/Redo functionality in
TweakpaneUiPlugin
. - Add
maxHDRIntensity
to IViewerAppOptions
which can be set when creating the ViewerApp
- Add
ViewerApp.serializePluginsIgnored
to ignore loading/exporting some plugins when loading files - Minor fix in
MaterialPresetPlugin
apply. - Add
isEditor
flag in FrameFadePlugin
, other minor fixes. - Ignore
CameraViewPlugin
, MaterialConfiguratorPlugin
, RendererUiPlugin
, ParallaxMappingPlugin
, SwitchNodePlugin
, ModelStagePlugin
, GLTFAnimationPlugin
, FrameFade
, AssetExporterPlugin
when loading presets in VJSONPresetGroup
. - Set default roughness to
0.75
for ground material in BaseGroundPlugin
. Previous default was 0.2
. - Add
autoFrustumSize
in GroundPlugin. Which sets the light frustum size to 0.5 of ground size. - Minor fix in
InteractionPromptPlugin
where loaded camera position is not loaded when animation is running. - Ignore viewer config when loading model in ModelStagePlugin, which can be loaded manually with
importStageViewerConfig
. - Add
importConfig
to AddModelOptions
, which can be set to false to disable automatic import of embedded config(vjson) when files are loaded/added. - Dispatch event
webgi_editorModeChanged
in window, which mode is changed in CoreEditorApp
. - Fix camera aspect ratio and animations when canvas is not initialized or has no size.
0.9.21
- Improve
MaterialConfiguratorBasePlugin
- Handle a case for disabling interaction prompt during camera animation.
- Create
ModelStagePlugin
and add to addBasePlugins
- Add getter
LoadingScreenPlugin.visible
to check if the loading screen is visible. - Remove plugin
SceneLoopPlugin
from addBasePlugins
. It must be added separately. - Use
viewer.scene.modelRoot
bounds in BaseGroundPlugin
instead of viewer.scene
bounds. - Handle textures in files in
GLTFLoader
where sourceIndex
is invalid like -1. - Update
DiamondPlugin
to automatically validate license keys. - Add
isEditor
to LoadingScreenPlugin
so it doesn't interfere with drop - Fix an issue when loading some json material files in
ThreeMaterialLoader
- Fix an issue when applying materials in
VariationConfiguratorPlugin
when using old config files - Add
snapIcons
, autoSnapIcons
and properly remove event listeners in SwitchNodeBasePlugin
- Add
copyMaterialProps
in AMaterialManager
- Small fix for
minimizeOnSceneObjectLoad
in LoadingScreenPlugin
- Add
VJSONPresetGroup
in PresetLibraryPlugin
that ignores camera, loading, interaction plugins - Fix for duplicate entries in
PresetGroup
- Add
showColorScheme
in ExtrasUiPlugin
- Add
MaterialPresetPlugin
- Add
WaveGroundPlugin
- Add
SnowFallPlugin
- Add
PluginPresetGroup('ModelStage')
in PresetLibraryPlugin
0.9.20
- Add
RootScene.textureSlots
to support material specific environment map slots. - Add
Environment
UI to MeshStandardMaterial2.uiConfig
- Fixes related to global dispose of objects.
- Fixes in
SimpleBackgroundEnvUiPlugin
. - Fixes related to camera interaction handling for some edge cases.
- Add
TrackballControlsPlugin
. - Add
SimplifyModifierPlugin
and MeshOptSimplifyModifierPlugin
. - Add
MeshOptSimplifyModifierPlugin
, TrackballControlsPlugin
to CoreEditorApp
0.9.19
- Add
LayeredMaterialPlugin
for Layered Materials(included in addBasePlugins
). Useful for rusted metals, dirt cavities, zbrush material's look and feel. - Add Cavity AO in
SSAOPlugin
. Useful to add small scale AO for small cavity regions. - Updates to
SSAOPlugin
. SSAO scale based on the model bounding radius and camera fov. - Updates to
OutlinePlugin
. Outline thickness based on the display canvas scale. - Updates to
SSBevelPlugin
. Bevel radius based on the display canvas scale. - Fixes in
DiamondPlugin
. Handle edge cases for incorrect input data, increase limit for fixing mirror/topology issues to 1500 faces. - Add Screen Space Curvature to
x
channel in gbuffer flags buffer in GBufferPlugin
. - Fix an issue where
CameraController.position
didn't update when OrbitControls are used. - Change max value of intensity to 5 in
SSAOPlugin
0.9.18
- Allow disabling regex check in
MaterialManager.applyMaterial
. - Removed
PresetLibraryPlugin
from addBasePlugins
. It must be added separately. - Update projection matrix on
setDirty
in CameraController
. - Fixes for some serialization issues.
- Enable Interaction Prompt Plugin only when in the Plugins tab in the CoreEditor.
- Other minor fixes.
- Add options
presetLibrary
, switchNode
, materialConfigurator
to addEditorPlugins
- Add
forceCurrent
parameter to animateTarget
, add support for string and number when using makeSetterFor
for three.js Color
TweakpaneUiPlugin
finds and adds itself to div with id tweakpaneMainPanelSlot
if it exists, instead of document.body
- Fixes in auto-generation of ui-config when using arrays.
- Add plugin
GradientSvgPlugin
(dev) - Add plugin
AnimationObjectPlugin
(dev)
0.9.17
- Add support for cube render target in
BaseRenderer.clearColor
. - Add option
cloneCanvas
in CanvasSnipper
- Fix some issues with rendering for concave geometries in
DiamondPlugin
- Minor performance fix in
SSAOPlugin
.
0.9.16
- Ignore the
up
value in camera view in CameraViewPlugin.setCurrentCameraView
. - Fix for instance getting stuck in
CanvasRecorderPlugin
. (waiting for interactions to disable) - Suppress
Unable to import
warning for vjson
files.
0.9.15
- Updates to
PresetLibraryPlugin
and PresetGroup
. Add clear
method to both and add preset group of type VJSON
. - Add
TransfrSharePlugin
to CoreEditorApp
and export in runtime bundle. - Improved warning/error messages in the core and several plugins.
- Change typescript compile target to
es2019
from es2020
.
0.9.14
- Performance fixes in DiamondPlugin.
- Removed
DiamondPlugin
from addBasePlugins, it must be added separately. - Fix issues with loading some textures in files saved in old versions.
- Reset color when using background preset group
- Performance fix in
HierarchyUiPlugin
.
0.9.13
- Fix an error for edge case in
GLTFLoader
- Enable
depthTonemap
by default in addEditorPlugins
and setupSandboxWebGiEditor
(deprecated). - Make public getter for
viewer
in AViewerPlugin
- Disable material unregister when disposing(in Material Manager), it has to be unregistered manually by the plugin responsible
- Improvements to
VelocityBufferPlugin
- Fix clear color for 0 velocity in SSVelocityPass
, small shader improvements in TAA
0.9.12
- Fix performance issue in Hierarchy UI Plugin
- Fix flicker in loading screen
- Add
applyOnLoad
to MaterialConfiguratorBasePlugin
- Add
addExtension
and createAndAddExtension
to GLTFDracoExporter
- Other Minor fixes
0.9.11
- Make
fetch
function public in AWSClientPlugin
. - Prevent material cloning in
GLTFLoader
when not required. - Fix shader error in
AnisotropyPlugin
after three.js update to r153. - Center pointer icon properly in
InteractionPromptPlugin
.
0.9.10
- Fix in
AssetManagerLoadingBarPlugin
where loading bar gets stuck at 99% on any file load error. - Changes in
AWSClientPlugin
to handle several chrome bug related to cloning a request object. - Fix usage of
pluginsDisabled
in VelocityBufferPlugin
0.9.9
- Add static variables
GLTFMeshOptPlugin.DECODER_URL
and DRACOLoader2.LIB_CDN_PATH
for changing path of externally loaded libraries. - Fix loading screen logo image object fit in Safari
- Remove opaque check for SSAO material extension.
- Add support for disabling SSAO cast per material by setting
material.userData.pluginsDisabled
to false
or material.userData.ssaoCastDisabled
to true
- Add support for disabling velocity buffer(for TAA) per material by setting
material.userData.pluginsDisabled
to false
or material.userData[VelocityBufferPlugin.PluginType]
to {disabled: true}
. - Add support for material.userData.pluginsDisabled in SSR, SSCS, SSRTAO, SSGI and Bloom.
0.9.8
- Fix
InteractionPromptPlugin.PluginType
. Set to InteractionPromptPlugin
from InteractionPointerPlugin
- Fix scene material's
alphaTest
not being used in DepthNormalMaterial
(GBufferPlugin
) - Fix pointer centering in container in
InteractionPromptPlugin
0.9.7
- Update three.js to
r153
. Changelog, Migration Guide. Notes: - WebGL 1 support deprecated
- Functions in
bsdfs.glsl
removed - Custom Anisotropy extensions could break
- Changes in XRManager related to camera.
- Add support for highlighting by materials and by materials of same name in
OutlinePlugin
. Parameters - highlightSelectedMaterials
, highlightMaterialSameNames
. Note: these are not serialized. - Fix a runtime error in
legacySeparateMapSamplerUVFix
while loading some files. - Serialize
apply*
properties in SimpleTextPlugin
- Fix issue where same image with different samplers is not loaded as different textures in
GLTFLoader
- Minor runtime error fix in
Texture.toJSON
.
0.9.6
- Fix an error when a file with controlsMode = none is loaded.
- Add static properties
PointerClickMaxTime
and PointerClickMaxDistance
time, distance threshold to ObjectPicker
for click. - Re-add SwitchNodePlugin to the editor
CannonPhysicsPlugin
- ignore invisible objects in makeBody
- Support function in tweakpane dropdown children in
TweakpaneUiPlugin
0.9.5
- Trim path in asset importer for parsing file extension.
- Fix issue in DepthOfFieldPlugin where bloom was not having an effect
- Add
TransfrSharePlugin
in the editor. - Fix in
CustomContextGrid
for when used inside a shadowRoot, - Add tippy.js styles to
WebGiViewerElement
(webgi-viewer
) - Revert
FrameFadePlugin
issue fix. minimizeOnSceneObjectLoad
in LoadingScreenPlugin
also checks for scene.environment and doesn't minimizes if its null.- Set
autoStartDelay
to 30000
(30 sec) by default in InteractionPromptPlugin
.
0.9.4
- Set
useGBufferDepth
to false by default in ViewerApp
constructor. - Add support for morph targets in DiamondPlugin
- Minor fix in auto instance diamonds in Diamond plugin UI.
- Change default
BloomPass.intensity
to 0.2
from 0.5
in BloomPlugin
- Change default
SSAOPass.parameters.falloff
to 1.3
from 1
in SSAOPlugin
- Fix ground edge issue when tonemap disabled
- Add options to
addSceneObject
event in RootScene - Add
duplex: half
when AWSClientPlugin.USE_PROXY
- Add GemEnvironment2, GemEnvironment2 to PresetLibraryPlugin
- Add RainbowDiamondPlugin Plugin.
- Perform legacySeparateMapSamplerUVFix for files exported pre-0.7.6.
- Add envMapRotationOffset for x, y, z axis in
DiamondMaterial
. - Change defaults in
CanvasRecorderPlugin
- convergeMode = true
, mimeType = video/mp4
, also automatically clamp maxFrameCount
(ProgressivePlugin
) in record method. - Set
animationPauseDuration
to 6000
by default in InteractionPromptPlugin
. - Disable
ObjectRotationPlugin
by default - Fixes in VRPluginBasic
- Made improvements to fix frame drag issue in
FrameFadePlugin
. - Improve performance of
GBufferPlugin
in some cases.
0.9.3
importPopup
set to true by default in CoreViewerApp.initialize
. Adds the LoadingScreenPlugin
if set to true- Add
interactionPrompt
(default true) in CoreViewerApp.initialize
. Adds the InteractionPromptPlugin
if set to true - Add
InteractionPromptPlugin
, and to addBasePlugins
- Add
VRPluginBasic
for webxr VR support - Add
shadowMapType
to ShadowMapBaker
and GroundPlugin
UI - Fixes in
DepthNormalMaterial
, GBufferPlugin
- Add support to use MRT in
WebGLRenderer.readRenderTargetPixels
, EXRExporter
, BaseRenderer.renderTargetToDataUrl
- Dispatch
afterRender
event in Object3D.onAfterRender
- Add
rendersPerFrame
and canvasTexture
to ViewerApp
. - Add
depthTextureType
and depthTextureFormat
to CreateRenderTargetOptions
and BaseRenderer.createTarget
- Fix error in texture serialization where
texture.source.data
was set to null on error. - Remove bounds from
FragmentClippingExtensionPlugin
UI. - Fix shader error in
TriplanarUVMappingPlugin
when environment
is null - Add
renderDepthTexture
and depthTextureType
in GBufferPlugin
- Fixed a race condition in
ChromaticAberrationPlugin
, FilmicGrainPlugin
, VignettePlugin
related to uniforms. - Minor fix in
TransformControls2
- Make editor modes ui scrollable on phone.
0.9.2
- Improved Ui in Tweakpane UI plugin, added black, white and blue(default) color schemes(
colorMode
). - Add color scheme switching in
ExtrasUiPlugin
. - Add
GeometryGeneratorPlugin
with several shape primitives - Update theme for CustomContextGrid UI(used in Material and SwitchNode configurator)
- Expand dropzone plugin by default in UI
- Add context menus to Material configurator UI to update directly
- Remove Scene Objects from UI
- Add
addToRoot
parameter in ViewerApp.createObject3D
- Fix mouse lock when pointer leaves the canvas in OrbitControls
- Handle an edge case in Geometry center (keep position) option in the UI
LoadingScreenPlugin
ui fixes when minimised- Fix UpdateView in camera view UI
- Fix error in
CannonPhysicsPlugin
when PickingPlugin
is not added to the viewer - Rename
visible
to enabled
in Object3DWidgetsPlugin
, add option to disable by default - Catch error in
ScrollableCameraViewPlugin
when div is not found.
0.9.1
- Add
LoadingScreenPlugin
- Clamp camera near to a minimum value of 0.001 when using autoNearFar
- Dispatch events
processFileStart
and processFileEnd
in AssetImporter
- Replace
AssetManagerBasicPopupPlugin
with LoadingScreenPlugin
for default importPopup
in addBasePlugins
, CoreViewerApp
and CoreEditorApp
- Fix
alphaVignette
(in ShadowMapBaker
) material defines when ground reflections are turned off - Dispatch events
preRenderCamera
, preBlitCamera
, postRenderCamera
from VirtualCamerasPlugin
- Fix correct class as target in ui config button type value function.
0.9.0
- Rename
LightWidgetsPlugin
to Object3DWidgetsPlugin
- Add
VirtualCamerasPlugin
to render virtual cameras to a render target in preRender before the main/active camera. - Add
Add Camera
UI button to SceneCamerasUiPlugin. - Add
renderToScreen
in BaseRenderer.render
. - Fix near far initialization in
CameraController
- Add
IScene.renderCamera
- Minor fix in
Rhino3dmLoader2.ForceLayerMaterials
- Add
ACameraHelperWidget
, AHelperWidget
- Add
CameraHelper2
(CameraHelper with fat lines) - Add
onEnd
in AnimationOptions
for popmotion animate
- Add support for storing multiple last frame targets for every camera in
ProgressivePlugin
- Add
CanvasRecorderPlugin.recordCamera360
to record camera 360 animation from current position, fix offset bug when starting record after any camera view animation and target center in record 360 in CanvasRecorderPlugin. - Fix color space warning in
CustomBumpMapPlugin
- Cleanup targets on screen using
DebugPlugin
- Rename
objectRef
to object
in IWidget
- Add support for passing other animation options in
animateCameraToViewSpherical
- Fix
TransformAnimationPlugin
not showing in the UI - Changes in SSBevelPass.ts, OutlinePlugin.ts, ProgressivePlugin.ts, DepthOfFieldPlugin.ts, FrameFadePlugin.ts, GBufferPlugin.ts, SSContactShadows.ts, SSRTAOPlugin.ts, TemporalAAPlugin.ts, VelocityBufferPlugin.ts, changing activeCamera to renderCamera
- Other minor fixes
0.8.9
- Fix load of 3dm files that have
InstanceReference
with multiple objects. - Add
ignoreWidgets
in RootScene.getBounds
. - Properly serialize/deserialize object, material, geometry
userData
in gltf files, useful for three.js primitives. - Add UI config for
Rhino3dmLoadPlugin
, add options for forceLayerMaterials
and hideLineMesh
in Rhino3dmLoadPlugin
and Rhino3dmLoader2
. - Add
ignoreObject
in Box3B.expandByObject
. - Increase
MaxCanvasScale
to 5
in RendererUiPlugin
. - Add
updateView
in CameraView
and its UI to update existing camera view. - Fix
enabled
getter in GenericFilterPlugin
which was always returning the initial enabled state of the plugin/pass(Fixes DepthOfFieldPlugin
, BloomPlugin
, etc). - 'Add Spot-light' in
LightsUiPlugin
. - Add right-click menu to material configurator UI with option to remove individual materials.
- Add
TransformAnimationPlugin
to save and animate to different transform states of an object. - Add
LightWidgetsPlugin
with DirectionalLightHelper2
, SpotLightHelper2
, PointLightHelper2
0.8.8
- Add refreshScene flag in scene.setDirty options(same as scene update)
- Fix crash in Reflector2 when environment background is used
- Context restore crash fix.
- Make function optional in
ThreeViewer.doOnce
. Now, to wait for end of frame simply do await viewer.doOnce('postFrame')
- Add
syncMaxDuration
in GLTFAnimationPlugin
. If set to true, the animation duration for all clips will be set to the max duration of all animations in the gltf file. - Add Ambient Light, Add Point Light in
LightsUiPlugin
- Add
defaultModes
in CoreEditorApp
which can be edited before calling setupUi
. With this all tabs and arrangement can be set in code. - Add parameter
modes
in CoreEditorApp.setupUi
, using this all modes can be set from scratch in code. CameraController.userData
now same as CameraController.cameraObject.userData
.- Fix
autoNearFar
, minNear
and maxFar
serialization for default camera in GLTF files and viewer config.
0.8.7
- Fix transmission rendering with MSAA(isAntialiased) enabled.
- Export functions from three.js
BufferGeometryUtils
- Add
env-metal-14.exr
in default presets. - Add
ObjMtlLoadPlugin
, FBXLoadPlugin
, Rhino3dmLoadPlugin
, STLLoadPlugin
, EXRLoadPlugin
, GLTFMeshOptPlugin
in addBasePlugins
. - Allow string as presets in
PresetGroup
- Add minimum duration of 10ms in
CameraViewPlugin.animateToView
- Allow loading preset groups from a json file url in
PresetLibraryPlugin.loadPresetGroups
, use json fom exportPresetGroups
0.8.6
- Set default minimum near plane in camera to 0.5
- Updates and fixes in three.js types
- Fixes for WebGL 1 rendering
- Fix runtime error when context restored on some devices.
- Add define WebGL2Context in shaders
- Minor fixes
0.8.5
animatePromise
renamed to animateAsync
.- Add
renderScale
as an alias of displayCanvasScaling
in BaseRenderer
. - Fix near plane clipping with
autoNearFar
when camera is inside a model. - Make regex match exact string in
AMaterialManager
. - Fix for tweakpane UI interfering with
colorSpace
in textures loaded from the UI. - Allow
undefined
parameter in setEnvironmentMap
and setBackgroundMap
in ViewerApp
, it has the same effect as null
0.8.4
- Add support to enable/disable bloom for each material through the UI config.
- Move
BloomPlugin
before GroundPlugin
in addBasePlugins
- Add
env-metal-gem-3
, env-metal-gem-4
environments in editor presets - Add support to export GLTFMeshGpuInstancing extension in GLTFExporter.
- Add
autoGPUInstanceMeshes
to the bundle for automatically converting meshes with same geometry and material to GPU instanced meshes. - Add
Center Geometry (keep position)
and Auto GPU instance
in Geometry and ExtrasUIPlugin. - Fix
Box3B
for instanced meshes. - Dispatch events
shadowBaking
and shadowBaked
from ShadowMapBaker - Fix outline color issue for visible/hidden objects
- Change default outline color in
OutlinePlugin
- Promises from
PopmotionPlugin.animate
and animatePromise
will reject if an error is thrown in the onStop
or onComplete
callback, which can be caught by the application. - Fix a bug in materials keeping mesh references after variation change. (in Material.copyProps)
- Add support for RegExp in
MaterialManager.findMaterialsByName
- Fix for extra hover events firing when nothing is hovering.
- Remove
waitForProgressive
from type SnipOptions
- Set default
alphaTest
to 0.01
in ShadowMapBaker when using alphaMap mode. - Add support for
displacementMap
, fix alphaMapTransform
in DepthNormalMaterial
(used in GBufferPlugin
) - Improvements in stopping other camera view animations when starting a new animation with
animateToView
in CameraViewPlugin
- Add
throwOnStop
parameter to CameraViewPlugin.animateToView
to throw an error if the animation is stopped by starting another animation. - Add support to put arbitrary
data
in IConfiguratorVariation
in VariationConfiguratorPlugin
. Includes support for traversing children and validating material type while applying materials.
0.8.3
- Fix regex match to exact match in MaterialManager.applyVariation
- Fix for Material Configurator changing other materials.
0.8.2
- Add Auto Near far to the camera UI
- Add clampMin, clampMax to OrbitControls, OrbitControls3
- Fix for export extensions not working when added before registering a file.
- Fix scroll issues with
CustomContextGrid
- Serialize
enabled
property in ParallaxMappingPlugin
- Add GPU instancing support to
DiamondMaterial
- Other minor fixes, UI tweakes and performance improvements.
0.8.1
- Fix alphaMap read, opacity in depth buffer and gbuffer pass.
- Add stepPhysics and Make bodies from root objects in
CannonPhysicsPlugin
- Add
Apply All
in Material configurator UI. - Add
colorWrite
to Unlit and Physical material UI. - Fix scrolling in custom context grid for configurators
- Add support for
alphaMapTransform
in DepthNormalPass and SSVelocityPass - Fix LUT, tonemap and flags buffer on some low-end Android devices (by using int ops)
- Material name is now preserved when converting a physical material to diamond material.
- Add recomputeOffsets debug flag in the editor for
DiamondPlugin
- Changes to auto dispose logic of material and geometries.
- Fix camera near-far calculating when panning very far from the camera target.
- Add regex support in
MaterialManager.findMaterialsByName
- Use
getOrAddPlugin
in addBasePlugins
- Fix for
onComplete
and onStop
not firing in PopmotionPlugin
- Fix for nested auto-generated UI config rendering with decorators.
0.8.0
- Fix HalfFloat and Float target export in
BaseRenderer.renderTargetToDataUrl
and BaseRenderer.renderTargetToBuffer
- Fix an infinite loop in
RendererUiPlugin
when canvas had floating point size - Add Shadow Type in
ExtrasUiPlugin
- Export utils
textureToDataUrl
, textureToCanvas
, can be used to convert any texture or data texture to a canvas or export as png/jpeg - Add
loadedBytes
, totalBytes
to importFile
event in AssetImporter
- Support string(url) input in
AssetImporter.importSingle
- Fix initial state in
AAssetManagerProcessStatePlugin
, by calling _updateMainDiv
when added to the viewer. - Add
enableRefreshTransform
in BaseGroundPlugin
to programmatically control ground plane transform refresh - Add
autoDispose
to VariationConfiguratorPlugin
. Default = true. When set to false the items will not be disposed when removed. - Improvements in
CannonPhysicsPlugin
, add support for mouse pick and add it to the editor under Animations
- Keep model hierarchy and fix model reuse after dispose, if reference is saved.
- Fix issue when progressive rendering doesn't resume after
CannonPhysicsPlugin
is disabled. - Export
CannonPhysicsPlugin
in the bundle - Fix an issue in Rhino 3DM load when layer material was not used in some cases
- Add support for reading
fadeDuration
from events sceneUpdate
, materialObject
, activeCameraChange
in FrameFadePlugin
- Add normalBias to Progressive Shadow UI (RandomizedDirectionalLight)
- Fixes in automatic near far computation when zoomed out.
- Add
texImageToCanvas
to convert any texture image including DataTexture to convert to a canvas. - Fixes in
textureToDataUrl
and textureToCanvas
for flipped textures.
0.7.9
- Fix
sheen
value not getting exported in GLTFExporter
- Add
assetManager
and dropzone
parameters to ViewerAppOptions
to automatically add the AssetManagerPlugin
and DropzonePlugin
- When adding a plugin by class, same plugin won't be added when a plugin of the same type already exists.
- Fix shader errors in
TriplanarUVMappingPlugin
- Fix background warning in
HDRiGroundPlugin
- Expose
autoAdjustTransform
property in BaseGroundPlugin
- Fix for
OutlinePlugin
when parent nodes are selected - Fix for
PickingPlugin
when invisible objects are obstructing the view. - Minor fixes related to asset manager instantiation
- Add support for
textureUpdate
event(from texture, material, object and scene) when texture.needUpdate
is set to true
- Increase bounds for Point Light UI.
- Expose
meta
in AViewerPlugin
deserialize
event. - Fix for a race condition in material deserialization in
BaseGroundPlugin
- Fix several runtime errors and warnings.
- Move Asset manager importers and exporters to non-static context to support multiple instances of
AssetManagerPlugin
on the same page - Fixes in Object uiconfig, add rotate model and autocenter options
- Add new attributes
disposeOnRemove
and autoManageViewers
to WebGiViewerElement
(webgi-viewer
). When disposeOnRemove
is set to true
, the viewer will be disposed when the element is removed from the DOM. When autoManageViewers
is set to true
, viewers will be saved globally when the element is removed from DOM and will be reused when added again or a new element is created. - Add support for
embedUrlImagePreviews
in AssetExporterPlugin
and GLTFExporter2
to embed small texture previews of remote URL images in glTF files. - Add support for
encrypt
and encryptKey
parameters in AssetExporterPlugin
and GLTFExporter2
to encrypt the exported files inside a GLB wrapper. - Fixes in tweakpane UI
Download Image
option. Fix download of images with explicit URLs and blobs. Add support to download render targets(WebGLRenderTarget
) in PNG
(for Uint8
) and EXR
(for HalfFloat
and Float
) formats.
0.7.8
- Add
ViewerApp.load
, ViewerApp.setEnvironmentMap
, ViewerApp.setBackgroundMap
to load assets, images and environment maps and add to the scene or set as the environment/background automatically. - Add
ViewerApp.assetManager
to get the attached AssetManagerPlugin
ViewerApp.getPlugin
also accepts string with PluginType- Add sync counterparts
addPluginSync
, addPluginsSync
, removePluginSync
in ViewerApp
- Add
ViewerApp.doOnce
to execute a function once after a frame or renderEvent - Dispatch events
renderEnabled
and renderDisabled
from ViewerApp
Rhino3DMLoader2
, Rhino3DMLoader
instance reference attributes, geometry name, support to disable material parse/load, check material source, str- Add support for
ILoader.transform
in AssetImporter
. - Obfuscation fix for workers of DracoLoader, Rhino3dmLoader, KTX2Loader
- Add parameter
disposeRuntimeMaterials
in AMaterialManager.dispose
- Fix Shader error in Transmission.
- Add
BaseRenderer.renderTargetToDataUrl
and BaseRenderer.renderTargetToBuffer
, RenderTarget.toJSON
- Add Geometry UI - Center Geometry, Compute vertex normals, Compute vertex tangents, Normalize normals, Convert to indexed, Convert to non-indexed, Create uv1 from uv
- Fixes in glTF transform pipeline custom extensions
- Fix import of iridescence and attenuationDistance values from blender exported glTF files.
- Add interfaces
IViewerPluginSync
and IViewerPluginASync
. - Refactor
AssetManagerPlugin
and DropzonePlugin
to implement IViewerPluginSync
. These can be added with ViewerApp.addPluginSync
- Fix
ParallaxMappingPlugin
shader errors after three.js update - Remove
ScrollableCameraViewPlugin
warning when name doesn't start with #
- Fix
SwitchNodeBasePlugin
to not show invisible objects during export, add Enabled toggle to UI. - Fix
HierarchyUiPlugin
to toggle visibility postFrame - Add
VariationConfiguratorPlugin.clearVariations
to clear the loaded variations and remove the objects from the scene - Add
number
type in TweakpaneUiPlugin, add support for generating Ui for arbitrary object and arrays
0.7.7
- Export
STLLoadPlugin
, Rhino3dmLoadPlugin
, VariationConfiguratorGridUiPlugin
, VariationConfiguratorPlugin
, serialization, ui annotations, FileTransferPlugin
, AAssetManagerProcessStatePlugin
, ScrollableCameraViewPlugin
, canvas utils in the browser viewer bundle. - Fix window bundle when not imported with type="module"
- sRGB Color space fixes in loaders for .obj, .mtl, .hdrpng files
- Allow separate uv set in UI for all maps in physical, unlit materials.
- Add support for loading state of
MaterialConfiguratorPlugin
, SwitchNodePlugin
, ThemePlugin
in AAssetManagerProcessStatePlugin
- Fix glb export with draco compression
gltf-transform
package update- Fix multiple errors in shaders and material extensions including anisotropy and thin film layer.
- Add several radial background images.
- Add UI button to prompt for file in
DropzonePlugin
. - Obfuscation fix in Draco loader by putting worker in string.
- Several minor fixes.
0.7.6 (Major changes)
- Update three.js to r152. Changes might be required only if using custom three.js code, because
ColorManagement
is enabled by default. Default color space is now SRGBColorSpace instead of LinearColorSpace. As a result, material files exported from new viewer version might not look correct in older viewer versions, but old files will look correct in new viewer versions. - Three.js toJSON asset versions updated to 4.6, which is used to determine the color space.
- Deprecate
ViewerApp.getBackground()
and ViewerApp.setBackground()
- Add
RootScene.backgroundColor
in addition to RootScene.background
to set background color. Use backgroundColor
to set colors and background
to set textures. When both are set, both are multiplied. - Deprecate
envMapBackground
, background can now be set to environment by simply setting viewer.scene.background = 'environment'
- Replace
autoReleaseTransparentTarget
(default=true
) with preserveTransparentTarget
(default=false
) in RenderPass2
- Remove
refreshEnvMapIntensity
and refreshFixedEnvMap
from RootScene
by removing the need to refresh all materials on every change. - Deprecate
controlsEnabled
in CameraController options, set controlsMode = ''
or camera.controls.enabled = false
or camera.interactionsEnabled = false
to disable controls. - Removed
viewer.backgroundIntensity
, use viewer.scene.backgroundIntensity
instead. - Removed
viewer.useLegacyLights
, use viewer.renderer.useLegacyLights
instead. - Serialize renderManager with viewer with stable noise and useLegacyLights
- Add Iridescence to physical material UI (
MeshStandardMaterial2
) - Fix black screen when using MSAA(isAntialiased), when used with depth prepass.
- Add MSAA and Depth prepass toggle to Extras in the editor UI.
- Rename
useTotalFrameCount
(in BaseRenderer
) to stableNoise
- Add
ViewerApp.getOrAddPlugin
(async) which adds the plugin if it doesn't exist. - Fix a race condition when adding plugin dependencies in the viewer.
- Add
GroundPlugin.autoBakeShadows
, set it to false
to manually control shadow baking instead of automatically baking shadows whenever anything in the scene changes. Also added GroundPlugin.bakedShadows()
to trigger shadow baking manually whenever required (eg. on model load). - Set
BaseRenderer.useLegacyLights
to false
by default.
0.7.5
- Fixes in
SSContactShadows
and add to the editor UI - Fix for 0 roughness in transmission
- Fix background intensity to be consistent with envMapIntensity when envmap is used as background.
- Add
ViewerApp.addPlugins
to add multiple plugins at once. - Introduce
CoreViewerApp
, CoreEditorApp
, addEditorPlugins
- Change
setupModesUi
to take map of extra plugins and mode instead of an array of plugins. - Export
defaultPresets
in the bundle. For PresetLibraryPlugin
- Fix serialization of some material properties.
- Dispatch 'afterRender' event from
MeshStandardMaterial2
and MeshBasicMaterial2
- Fix a bug where UI freezes in the editor while working with configurators.
- Add
CameraViewPlugin.setCurrentCameraView
to set active camera to some view without animation. - Add
cameraView
to ParallaxCameraControllerPlugin
VariationConfiguratorPlugin
Add support for loading icon files along with item files from local folder, implement fromJSON so that json can be loaded with addFromPath
or drag and drop. Add support for loading preset json files along with models. Add importPath
to import config.json by path.- Add
KTX2LoadPlugin
to the editor. - Add
processBufferViewImageBuffer
in GLTFWriter
to directly add image buffers(instead of blob) to bufferViews - Dispose scene models on scene dispose. Dispose tracked targets on renderer dispose, remove and dispose plugins, dispose scene and renderer on viewer dispose.
- Add
encodeUint16Rgbe
to gltf exporter options, AssetExporter
options and UI (Compress hdr env maps
in Asset Export -> GLB Export) to compress/encode embedded HDR environment maps with rgbe encoding. (disabled by default) - Improve and speed up serialization for embedded rgbe images in GLB. Note: This breaks compatibility for loading new files with old webgi versions. Disable
Compress hdr env maps
in the UI to export files without encoding which will load correctly in old versions (upto 0.7.4) - Support export of
ktx2
textures in the serialization pipeline. - Fix
KHR_texture_basisu
extension in GLTF exporter.
0.7.4
- Fix issue with
SSGIPlugin
introduced because of incorrect framecount from Total Frame Count option. - Use local position in camera controller for nested cameras.
- Add
Remove vertex color attribute
button in geometry UI. - Add
vertexColors
and alphaTest
to gltf material extras extension. - Fix issue where embedded images with invalid source URLs stop loading of the glb file.
- Add
attenuationDistance
and attenuationColor
to Physical material UI. Change default value of attenuationDistance
to 0
(infinite) from Infinity
MaterialManager.applyMaterial
and MaterialConfiguratorPlugin.applyMaterial
returns boolean
indicating if the material was applied or not.- Add
encode-progress
event in CanvasRecorderPlugin
to get progress of encoding when using ffmpeg.js. - Add
ObjectPicker.hoverEnabled
to enable/disable intersection check while hovering. (default: false
) - Add
worldSpace
option in CameraViewPlugin.getCurrentCameraView
to get the view in world space. (default: true
) - Fix incorrect value from
useLegacyLights
(Artistic Lighting toggle in the UI) - Fix issues with dynamic selection in
OutlinePlugin
. - Fix state issues in tweakpane image UI where set image and remove image doesn't work in some cases.
- Serialize
enabled
and enableEdit
in ParallaxCameraControllerPlugin
. - Add
autoplayOnLoad
property and fix serialization of dragAxis
in GLTFAnimationPlugin
- Fix issue in
DepthOfFieldPlugin
not working properly for cameras nested inside other objects. - Add
SwitchNodeBasePlugin
, similar to SwitchNodePlugin
but with a base class to extend from, example: https://codepen.io/repalash/pen/bGmVbZj - Set
autoLookAtTarget
to false by default in CameraController - Fix camera animation for nested cameras in imported models
OutlinePlugin
fix for non-default camera.
0.7.3
- Add
originPosition
in HDRiGroundPlugin
to move the sphere in world. - Fix
viewer.createCamera
for cameras nested inside other objects. - Fix UI crash on safari browsers.
- Several fixes in
VariationConfiguratorPlugin
. - Set
useTotalFrameCount
to true by default in TemporalAAPlugin
- Use
premultipliedAlpha
in WebGLRenderer
, this fixes issues on ios browsers. - Add
autoPullTarget
to OrbitControls
(similar to autoPushTarget
) to automatically pull the target to the camera position when the camera is moved beyond max distance. note: to make the camera work like first person view, set minDistance
, maxDistance
to very close to each other (like 1 and 1.1) and set autoPullTarget
and autoPushTarget
to true. - Add
ParallaxCameraControllerPlugin
, GryoInputDevice
, MouseInputDevice
. - Add
easing
to CameraViewControlPlugin
and ScrollableCameraViewPlugin
.
0.7.2
- Add
VariationConfiguratorPlugin
, VariationConfiguratorGridUiPlugin
and VariationConfiguratorEditorUiPlugin
for creating object and material configurations from external files. - Remove object cache from
AssetImporter
when disposed. - Add
applyMaterial
in MaterialManager
to apply a material configuration using copy. - Add
importedFile
param to ImportAssetOptions
in AssetManager
- Fix
stopped
event in FFMPEGRecorder
- Add support to exclude objects(and it's children) from being exported in glb by setting
object.userData.excludeFromExport
to true
in the object. - Fixes in
WebGiViewerElement
where scene was not cleared when src changed, fix a race condition in environment map load. - Improve
CanvasSnipper.GetBlob
to use toBlob
directly. - Fix for scene getting clipped when GLTF animations are playing. Note: to fix any clipping issue when scene is updated/animated, call
viewer.scene.refreshActiveCameraNearFar()
- add
DEBUG_DEPTH
in TonemapExtension
, and as Render Depth
in the Tonemap Plugin UI - Add support for reading
minNearPlane
and maxFarPlane
from camera.userdata, and add to the UI. Note: change minNearPlane if there are z-fighting issues even when objects are not overlapping. Remove zoom from Camera Ui - Add frustumCulled in Object UI
- Fix
useLegacyLights
not getting changed in ViewerApp
- Fix
PointerLockControls2
. - Deprecate
RootScene.minNearDistance
in favor of camera.userData.minNearPlane
0.7.1
- Rewrite
CanvasRecorderPlugin
, add support for encoding mp4 with ffmpeg.js for type video/mp4
- Add
ACanvasRecorder
, CanvasMediaRecorder
, FFMPEGRecorder
, ImageSequenceRecorder
. - Deprecate
CanvasRecorder
. - Fixes in
MaterialConfiguratorPlugin
- Fix shader compile error when SSR is toggled for some single nodes.
- Update
GLTFLoader
so that loaded textures have the same uuid
as when saving, by removing texture.clone()
in GLTFTextureTransformExtension
.
0.7.0
- Fix cache storage being overwritten in
ImageLoader
- Use lights added to scene by plugins in
PathTracingPlugin1
- Add
gammaFactor
in DiamondMaterial
- Performance optimizations in Material extension.
- Add
fixedEnvMapDirection
in RootScene
with a toggle in the UI in BackgroundEnvUiPlugin
- Fix
displacementMap
export with DRACO compression. - Multiple environment map support in
DiamondPlugin
- Fix support for rough transmissive material support (for effects like frosted glass).
- Update three.js to r150dev from r144
- Set
blurTransmissionTarget
to true
by default in RenderPass2
- Set
ViewerApp.useGbufferDepth
to true
by default and enabled in the sandbox editor. - Add support for transparent objects and
useRgbm=true
in ARPlugin
for webxr, as well as several fixes. - Add
SSGIPlugin
, NormalBufferPlugin
and SSBevelPlugin
to addBasePlugins
. (Disabled by default) - Export
TriplanarUVMappingPlugin
in bundle. - Fix
disposeSceneModels
when some scene objects are not disposed. - Fixed a bug where material extension doesn't work in production builds.
- Use pointer events instead of mouse events in
FirstPersonControls2
- Add
useLegacyLights
in ViewerApp. Set it to false
to enable physically correct lighting. Added as Artistic Lighting
in the Background/Env UI - Serialize plugin properties in
PathTracingPlugin1
- Support for
getValue
and setValue
in tweakpane image ui config generator. - Fixed an issue when loading and caching SVG files.
- Fix
onChange
decorator for multiple references to the same property. - Add
XAtlasPlugin
to bundle and sandbox editor, - Add static variables for library path
KTX2LoadPlugin.TRANSCODER_LIBRARY_PATH
, Rhino3dmLoader2.LIBRARY_PATH
, ENABLE3D_LIBRARY_PATH
and AMMOJS_LIBRARY_PATH
in AmmoPhysicsPlugin
- Add
tTransparent
uniform in CombinedPostPass (not used) - Add
autoReleaseTransparentTarget
(default=true
) in RenderPass2
0.6.9
- Add support for disabling automatic near far calculation by setting
cameraObject.userData.autoNearFar
to false in CameraController
. - Remove reference to preImported assets after dispose.
- Add
clearCache
in AssetImporter
to clear memory asset and loader cache. This does not clear the browser cache or cache storage. - Implement
dispose
in AMaterialManager
to dispose all materials. This does not remove any references to material in any scene objects. - Replace objects in AssetManagerPlugin cache storage if downloaded again.
- Fixes in
ARPlugin
to present the scene in WebXR immersive-ar
mode. Still in development. - Remove obsolete parameters in
SSAOPass
serialization. - Remove
renderToScreen
from TonemapPlugin. It's now rendered with CombinedPostPlugin
. GroundPlugin
now keeps the ground mesh rotation in z.- Change default view names in
CameraViewPlugin
to #view{id}
- Add
resumeAnimation()
in GLTFAnimationPlugin
. - Fixes in
ScrollableCameraViewPreviewPlugin
. - Fixes in
PathTracingPlugin1
. Add support for directional lights. - Add
reRender
to CombinedPostPlugin
to rerender just the screen pass with changes like outline, tonemapping etc. - Cache
blob
of loaded images in ImageLoader
.
0.6.8
- Cache 'blob' in
ImageBitmapLoader
, images referenced by URL inside GLTF files will now be cached to CacheStorage
. - Add
useTotalFrameCount
to TemporalAAPlugin
and its UI, if this is set to true, then frameCount won't be reset when the viewer is set to dirty - Fix aspect refresh for camera when activated as main.
- Download and import textures with
rootPath
in parallel in ObjectLoader2
. - Add
CameraViewControlPlugin
with setState
to interpolate the camera position, target between all camera views from CameraViewPlugin
. - Add
ScrollableCameraViewPlugin
which maps the camera views to div/sections on the HTML page and syncs the camera view with the scroll position. - Add
ScrollableCameraViewPreviewPlugin
to preview the camera views in the scrollable camera view plugin with editable HTML. - Remove SSAO disable confirm popup in
SSGIPlugin
- Add
autoIncrementTime
control in GLTFAnimationPlugin
. If set to false
, the animation time can be set manually with setTime
- Several fixes in
GLTFAnimationPlugin
related to resetting and playing animations. - Fixed
initialized
event in WebGiViewerElement
0.6.7
- Add
normalScale
to material extras during GLTF export, since it doesn't work properly in some cases. - Serialize
loop
, loopRepetitions
and timeScale
in GLTFAnimationPlugin
. - Fix
timeScale
in GLTFAnimationPlugin
to allow negative values and bound to mixer. - Better shadow-based transparency for the ground with
aoMap
mode in GroundPlugin
. - Fix unsupported encoding issue with Multi render targets.
- Add
GLTFKHRMaterialVariantsPlugin
to import and export KHR_materials_variants
extension mappings and material variants in GLTF. - Add classes
GLTFMaterialsVariantsExtensionExport
and GLTFMaterialsVariantsExtensionImport
to the bundle. - Add support for
userData.__importData
for loaders in AssetImporter
. This data can be used after the object is added to the scene. - Fix issue in
AMaterialManager.processMaterial
where non-converted materials were registered in the manager. - Add
console
property to IViewer
interface. It can be used to override the console object used by the viewer.
0.6.6
- Add
storeState
and loadState
to AViewerPlugin
. All serializable plugins have support for saving and loading their state to a storage(by default localStorage
). - Fix issues with
TweakpaneUiPlugin
UI refresh. - Serialize
exportOptions
in AssetExporterPlugin
- Add
FileTransferPlugin
with utility actions to download file(used by AssetExporterPlugin
, CanvasSnipperPlugin
, CanvasRecorderPlugin
), and can be overridden to upload files to server. - Add
downloadSceneGlb
function in AssetExporterPlugin
- Expose
storage
(cache/cache storage) in AssetManagerPlugin
- Add
AWSClientPlugin
which can connect to any S3 compatible server, interface with FileTransferPlugin
to upload files to server on export. Dispatches event 'fileUpload' on successful upload. - Prompt for filename when downloading file in
CanvasRecorderPlugin
- Add
filename
property to CanvasSnipperPlugin
to set default filename - Add 'Clear local storage' and 'Clear cache' buttons to
ExtrasUiPlugin
- Persist serializable plugins state when reload of page in webgi modes editor.
- Add
reset defaults
option in TweakpaneUiPlugin
for viewer plugins to reset values to default. - Fix loading of downloaded
LUTPlugin
preset json. - Add
exportState
and importState
functions in AViewerPlugin
to export and import (serialized) plugin state. MaterialConfiguratorBasePlugin
now creates a new material to apply if the type is mismatched.- Add
reset defaults
button in the sandbox editor. - Add
viewAdd
and viewDelete
events in CameraViewPlugin
. - Fix
resetOnEnd
in GLTFAnimationPlugin.playAnimation
.
0.6.5
- Fix issues with floating point scale and render target size.
- Serialize and save geometry offsets after being prepared by
DiamondPlugin
. Fixes issue when geometry is modified due to DRACO compression. - Fix diamond shader rendering after context loss and restore.
- Remove
confirm
dialog box when enabling SSBevelPlugin
- Disable
scale
in UI when mode === 'custom'
in RendererUiPlugin
- Fix
PickingPlugin
autoFocus
to fit object in view. - Add
CameraViewPlugin.animateToFitObject
and alias ViewerApp.fitToView
to animate camera and fit an object/scene to the view. - Add 'Fit Scene/Object' option in modes ui bottom bar.
0.6.4
- Add 360 turntable camera animation recording option in CanvasRecorderPlugin UI
- Add
record
function in CanvasRecorderPlugin
which takes an action and executes it between start
and stop
recording calls. - Add
dracoOptions
of type EncoderOptions
to AssetExporterPlugin.exportOptions
- Fix Diamond rendering after context loss and restore.
- Emit events 'contextRestored' and 'contextLost' from
BaseRenderer
(viewer.renderer
) - Fixed bug with memory caching of offset matrices in diamond plugin.
- Serialize geometry offsets(eigen vectors) matrices in gltf to read in the viewer.
0.6.3
- Add
DiamondMaterial
support for ThinFilmLayerPlugin
- Add
FragmentClippingExtensionPlugin
- Automatically dispose Cube Normal Maps when all attached geometries are disposed. Can be disabled by setting
CubeNormalsCaptureHelper.AutoDisposeTargets
to false
. - Add functions
disposeCacheMap
and disposeAllCacheMaps
to DiamondPlugin
to dispose maps based on cacheKey
. - Add
'materialChanged'
event to IScene
and RootScene
to notify when a material is changed on any mesh in the scene. - Automatically prepare Diamond meshes when
DiamondMaterial
is set on a mesh using setMaterial
. - Add
animateOnDrag
to GLTFAnimationPlugin
to seek animation playback with pointer drag over canvas. - Add
PointerDragHelper
for easier pointer drag event subscription. - Rewrite
RendererUiPlugin
for easier resolution setting with automatic scale calculation and full
(container fill) mode. - Fix aspect ratio in
FragmentClippingExtensionPlugin
0.6.2
- Add
caching
flag in options for setupCoreWebGiViewer
- Export
setupModesUi
and setupModesStyles
in bundle. - Add
useTotalFrameCount
and totalFrameCount
in BaseRenderer
. - Add
envMapRotationOffset
in DiamondMaterial
- Add
contrast
and saturation
to TonemappingPlugin
- Fixed issues in
OutlinePlugin
0.6.1
- Fix for material bump map, when SSBevel is on.
- Separate OutlineRenderPass, removed redraw in
GBufferRenderPass
, Changes in outline shader to render visible/hidden parts differently. - Add vertexColors to the UI
- Export
PresetGroup
and subclasses in the viewer bundle. - Fix
GBufferPlugin
on webgl1 devices. - Add 9 new environment map presets.
- Export
CustomAnimationHelper
and CustomAnimationHelperPlugin
in the bundle to interface with three.js animations by code.
0.6.0
- Add
AShaderMaterial2
aith API to create materials types with custom shaders and apply them on objects. - Add support for custom material extensions in
MeshBasicMaterial2
and DiamondMaterial
. - Add
textAnchor
in SimpleTextPlugin
- Read
autoLookAtTarget
from userData in CameraController
. - Fixed
PickingPlugin
to properly pick objects inside another. - Fix promises returned from
playAnimation
, playClip
with convergeMode, pausing in GLTFAnimationPlugin
. - Bind button
value
function in tweakpane buttons to config so that this
works. - Add
smoothShadow
to GroundPlugin
to smooth baked shadow edges. - Disabled
Outline
extension by default, can be enabled from the UI. - Fixes in
LUTPlugin
. - Several build improvements.
0.5.9
0.5.8
- Add
renderOrder
to Object UI. Add polygonOffset
, polygonOffsetFactor
and polygonOffsetUnits
to Physical Material UI. - Add
OutlinePlugin
to the sandbox editor to show outline on selected objects. It depends on PickingPlugin
Disabling it enables the bounding-box selection behaviour from PickingPlugin
- Add
IGBufferUpdater
interface. LUTPlugin
, SSBevelPlugin
, TonemapPlugin
, OutlinePlugin
implement it for updating GBuffer flag data - Add
addGBufferUpdater
function to DepthNormalPass
. LUTPlugin
now supports upto 3 LUT Textures. Old files with LUT textures will be incompatible with this change.- Fix for Unexpected exception while loading some old files.
- Fix for post-processing plugins not updating properties properly on
setDirty
call. - Add support for adding material extensions to
DiamondMaterial
.
0.5.7
- Update
rhino3dm
to 7.15.0
- Fix error while importing raw text files with
AssetImporter
- Fix rendering issue in
ContactShadowGroundPlugin
where colors were inverted. - Clear GLTF Animations on plugin remove.
- Export Combined post plugins in the viewer bundle.
- Add Record GLTF Animation button in Canvas Recorder UI
- Add events
checkpointBegin
and checkpointEnd
to GLTFAnimationPlugin
, fired when animation reaches the start position and the end. - Fix
GLTFAnimationPlugin.playAnimation
to return promise that resolves properly when using convergeMode
in CanvasRecorderPlugin
- Change signature of
exportViewerConfig
, add parameter binary
which can be set to false when exporting json config, this will encode all array buffers in resources to base64 strings. - Fix issues with de-serialization of LUT files in config json.
- Apply rotation to imported 3dm files (-Pi/2 in x) to keep orientation consistent with Rhino.
0.5.6
- Set
depthTonemap
to true
by default in setupCoreWebGiViewer
- Set
importPopup
to false
by default in setupCoreWebGiViewer
- Add
AAssetManagerProcessStatePlugin
as helper to access the current state/progress while importing/exporting files through the AssetManagerPlugin
- Add
AssetManagerLoadingBarPlugin
, to show top loading bar while importing and exporting files, added by default in setupCoreWebGiViewer
- Export
SSBevelPlugin
and NormalBufferPlugin
in bundle. autoScale
will now also scale the object position to work properly with autoCenter
- Enable
autoCenter
instead of pseudoCenter
in Dropzone options. - Add 'panel' as alternative to 'folder' in
UiObjectConfig
. RendererUiPlugin
: width
and height
are not serialized when its more than the canvas container size(at export time).- Implement serialization of LUT Cube texture files as embedded blobs in viewer config resources while exporting GLB files.
0.5.5
- Add
WEBGI_materials_displacementmap
as GLTF extension to export displacement map, scale and bias in GLTF. - Fixed a bug when exporting
lightMap
with WEBGI_materials_lightmap
extension. - Fix refresh of camera UI objects in
CameraUiPlugin
. - Rename
SerializableOrbitControls
to OrbitControls3
- Add
setControlsCtor
and setControlsCtor
in CameraController
to add custom camera controls with mode. - Add abstract class
ACameraControlsPlugin
to attach new camera controls to the viewer cameras. - Add
DeviceOrientationControlsPlugin
ts version of DeviceOrientationControls
with added features, using ACameraControlsPlugin
. - Add
FirstPersonControls2
, ts version of FirstPersonControls
with added features, using ACameraControlsPlugin
. - Add
PointerLockControls2
, ts version of PointerLockControls
with added features, using ACameraControlsPlugin
. - Removed
DeviceOrientationPlugin
. - Fix signature of
RootScene.addEventListener
to get event types in autocomplete. - Add
IMaterial.dispose()
(dev) - this will automatically dispose all the Texture
objects on the material that are not used by any other material in MaterialManager
, unless texture.userData.disposeOnIdle
is false
. The material must be registered with MaterialManager
(which happens during load from AssetManagerPlugin
), and it is automatically unregistered on dispose. - Rename
material.userData.appliedMeshes
to material.userData.__appliedMeshes
. - Rename
geometry.userData.appliedMeshes
to geometry.userData.__appliedMeshes
. - Add
viewer.createMaterial()
to create new materials. (similar to viewer.createPhysicalMaterial
with ability to create any material type). - Add
CSS3DRendererPlugin
to editor UI and export class in bundle. - Add
forcedLinearDepth
support in GbufferPlugin
in material userData. - Fix issue with alpha map clearing scene on rendering in
GbufferPlugin
. - Fix material indexing for multi-materials in
CSGPluginBSP
.
0.5.4
- Add
CSGPluginBVH
and CSGPluginBSP
- Add
deviceOrientation
to controlsMode
in ICamera
. - Improve
CameraController
to support different types of controls. - Add
DeviceOrientationPlugin
(alpha) - Add support to import/export
polygonOffset
parameters in gltf material extras extension. - Allow negative values in
offset
and repeat
in texture sampler UI config. - Export class
SSGIPlugin
in bundle. (beta) - Change
DropzonePlugin
default import options with pseudoCenter: true
and autoCenter: false
- Export class
EllipseCurve3D
in bundle. - Fix parameters refresh on deserialize in
RendererUiPlugin
. Add RendererUiPlugin.refreshSize()
to trigger setSize
manually. - Add support for loading
.cube
files in Tweakpane Image UI. - Edit
ViewerApp.setBackgroundColor
to return void
instead of Promise<void>
- Add
SSBevelPlugin
(alpha) - Add
CombinedPostPlugin
for combining all screen post-processing in a single pass - Add abstract class
GenericExtensionPlugin
for post-processing extensions to be added in CombinedPostPlugin
- Add
ChromaticAberrationPlugin
, FilmicGrainPlugin
, GammaCorrectionPlugin
, LUTPlugin
, VignettePlugin
- Add
ChromaticAberrationExtension
, FilmicGrainExtension
, GammaCorrectionExtension
, LUTExtension
, VignetteExtension
, TonemapExtension
all implementing MaterialExtension
- Update
TonemapPlugin
to use CombinedPostPlugin
. Add TonemapExtension
to implement tonemap postprocessing. Use viewer.getPlugin(TonemapPlugin).config
instead of viewer.getPlugin(TonemapPlugin).pass.passObject
. GLTFExporter
will convert all BufferGeometry
attributes to non-normalized and export.- Fixed import of
Material.side
in gltf material extras extension. - Automatic Gamma correction removed from the viewer, add
GammaCorrectionPlugin
to get the same look.
0.5.3
- In
AssetImporter
, importing disposed models again by path will automatically reimport the objects, unless reimportDisposed
is set to false
in import options. - Fix error when importing
Line
objects in 3dm files. - Add
depthFunc
to gltf in WEBGI_material_extras
extension - When importing assets with
AssetManagerPlugin
, all meshes with no material will be assigned a default standard material. - Add mipmap filtering options to texture UI config.
- Add
depthFunc
and depthTest
to physical material UI config. - Prevent scene update in
SelectionWidget
visibility change. - Add
alert
, confirm
and prompt
to ViewerApp
and IUiObjectConfig
- Export
ClearcoatTintPlugin
, PresetLibraryPlugin
, SceneLoopPlugin
- Add
WindowiseDialogPlugin
to editor for better alert
, confirm
and prompt
. by overriding in viewer - Fixed UX issue where it's not possible to set image by url without setting a load one first.
- Add
makeDiamondMesh
in DiamondPlugin
to convert only a single mesh to diamond. (Make Diamond in the UI now prompts the user to convert all or just the selected mesh) - Fix SVG serialization and deserialization in GLB files as image source.
- Update three.js to r143.
0.5.2
depthTonemap
is true
by default in TonemapPlugin
- Add
dollyZoom
to OrbitControls
, CameraController
- Fix issues with
clipBackground
and non-tonemapped objects - Reimporting materials with the same url or asset with
addFromPath
, importSinglePath
, importAsset
etc will not create new materials, instead instances created earlier will be returned. - Fix issues with depth rendering in
Reflector2
(used with GroundPlugin
) - Add types for options passed to AssetImporter, AssetExporter, AssetManagerPlugin, RootScene
- Add
autoCenter
in Object3DModel
and import options, to center the imported model by changing its location according to bounding box. This is an alternative to pseudoCenter
which creates a new parent. - Moved
setMaterial
, setGeometry
, setDirty
and dispose
to IModel
interface from its userData(along with types in IModel
interface). So instead of calling object.modelObject.userData.setDirty()
you can call object.setDirty()
directly. - Deprecation warning for setter functions in
userData
for Object3D
and Mesh
- Fixed bug where environment map intensity is not synced multiple materials on a single mesh.
- Add
SceneCamerasUiPlugin
for listing cameras in the scene, with camera UI options to set to the active camera or copy view settings to the current active camera. - Add event handling for
setView
and activateMain
events. Dispatch these events on cameras to change the main camera or copy view settings to the current active camera like: camera.dispatchEvent({type: 'setView', camera: camera})
- Moved
material.userData.setDirty()
to material.setDirty()
- Add
uuid
, visible
and userData
to IModel
interface. limitCameraAboveGround
in BaseGroundPlugin
set to false
by default as it can interfere with serialization of custom maxPolarAngle
value in SerializableOrbitControls
.- Fix issue with SSR and AO multiplication when applied to the same object.
0.5.1
- Disposing an object with
object.modelObject.userData.dispose()
will dispose all children as well. - Add
progress
parameter for download progress (computed based on downloaded bytes) in importFile
event of AssetImporter
hierarchyChanged
parameter added to sceneUpdate
event in RootScene
, fired when some object is added or removed from the scene's model root.- Add
traverseSceneObjects
to ViewerApp
to traverse all objects added to the scene model root. - Rewrite LightsUiPlugin to update with scene.
- Fix noise with high roughness in
Reflector2
- Fix issues when deserializing default camera options.
0.5.0
- Removed
processors
from RootScene - Convert
setBackground
and setEnvironment
functions to sync. (in ViewerApp
and RootScene
) - Add support for MSAA with
isAntialiased
parameter in ViewerApp
constructor. - Fixed issues with serialization of large
DataTexture
s. - Add
blurTransmissionTarget
in RenderPass2
- Changed defaults for
GroundPlugin
- Shadow type set to
PCFSoftShadowMap
by default. It can be changed by setting viewer.renderer.rendererObject.shadowMap.type
- Add support for Unlit materials with
MeshBasicMaterial2
- Add
autoPushTarget
with minDistance
in OrbitControls
- Fixed issues when importing empty scenes with viewer configurations.
- Fixed read of
normalMapBias
when importing lights. - Several other fixes and UI tweaks.
- Add
CameraUiPlugin
and RendererUiPlugin
- Export
LightsUiPlugin
in webgi bundle.