Skip to contentChangelog - WebGi SDK v0
0.17.0 LTS
- Add new extensions in GLTFLoader
- Deprecate webgi bump map gltf extension in favor of khr bump map extension
- Fixes in DiamondPlugin and GemRefractionPlugin
- Other minor UI/UX fixes and improvements
0.16.1
- Minor fix in
MaterialConfiguratorBasePlugin where first character in name mapping is escaped by regex. - Fix lag in
MaterialConfiguratorBasePlugin on selection change even when the UI is hidden.
0.16.0
- Support playback of viewer animations(animation object) when recording turntable camera.
- Fix for watch hands plugin that prevents canvas recorder to start in converge mode.
- Hide ijewel3d evaluation version watermark
- Improve UI Config in
MaterialConfiguratorBasePlugin, add support for showing all variation groups. - Add
regex parameter to variation groups in MaterialConfiguratorBasePlugin. (default true) - Change usage of
innerHTML which could lead to XSS bugs.
0.15.4
- Fix for some image blobs not being saved in glTF when imported with tweakpane UI.
- Fix animation duplication when exporting glTF files.
- Minor cleanup in
TransformAnimationPlugin userData - Preserve animation extras as
AnimationClip userData in glTF
0.15.3
- Animate camera target along spline when using Camera View animation
- Add
VideoTextureLoader - Fix for
roughnessMap, metalnessMap serialization in glTF files when loaded with AssetImporter
0.15.2
- Fix for shadows not being correct when SwitchNodePlugin is used
0.15.1
- Add
SwitchNodeBasePlugin.selectNode and SwitchNodeBasePlugin.updateSceneOnSelectionChange - Fix for
SSAA never converging in some files.
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_fragmentencodings_pars_fragment -> colorspace_pars_fragmentoutput_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
DataTextures. - 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.