# Readme of the IG.GFX Web Viewer

The IG.GFX Web Viewer is an embeddable 3D Viewer based on WebGL, used for display of interactive IG.GFX data. In case of updates, please reset the browser cache for the corresponding applications, such as the IG.Creator.

The IG.GFX Web Viewer supports IGXC and OpenConfiguration scenes.

The IG.GFX Web Viewer was formerly known as SingleViewer.

## History

### Build 2026-05-08

- make treeview wider for big windows
- set rotation center for F-key focus


### Build 2026-05-07

- add brightness agnostic lights as default

### Build 2026-05-05

- add brightness adoption
- fix material debug diffuse color handling

### Build 2026-04-24

- add homogenous light setup
- support 4x2 random tiling
- support webp and glb
- update libraries

### Build 2026-03-30

- improve wireframe colors
- update libraries

### Build 2026-03-17

- improve keyboard navigation
- fix Drag & Drop of folders/zips with +100 entries in chromium
- update libraries

### Build 2026-01-27

- update libraries

### Build 2026-01-08

- add HDR light with dynamic lights

### Build 2026-01-06

- reorganize HDR light

### Build 2025-12-17

- reorganize HDR light
- update libraries

### Build 2025-09-26

- material editor:
    - fix color picker
    - enable texture preview for drag and dropped textures/scenes
    - add debug tiling option for all kinds of maps. Helpful for visualizing texture mapping
- rename modif -> mod for geometry and material names in node viewer
- fix drag and drop of directories with deeply nested scene.json
- fix drag and drop of macOS created oc.zip with deeply nested scene.json

### Build 2025-09-05

- update libraries
- add bright hdri bz lights

### Build 2025-07-18

- update libraries
- support lightsetup with lightingmap + lights

### Build 2025-06-11

- fix interactor parameters not working for super deformations

### Build 2025-06-04

- fix zoom with active selection
- fix accidental position change on reconfiguration

### Build 2025-05-28

- fix thick scrollbars covering up the tree view
- fix graphics click sometimes not triggering scroll to the corresponding node in the node view
- fix visibility button click not working on the first time
- clicking on exclamation mark shows the logs that caused it
    - by default shows logs of log level "Warning" and higher but can be set to show other log levels as well
- add settings modal with features:
    - toggle performance display
    - toggle debug mode
    - show problems (logs)
    - set console log level
- use fallback geo normal map

### Build 2025-05-20

- revert new scroll behaviour
- change blending geo normal maps

### Build 2025-05-16

- initial support for blending geonormalmaps on glb
- button for hiding every scenegraph part except selected one #20621

### Build 2025-04-24

- update ig.gfx.core to fix #20474

### Build 2025-04-23

- fix loading of 2D shapes
- improve rotated snapping

### Build 2025-04-04

- fix geometry mapping with deltamaps
- support exr IBL

### Build 2025-03-06

- load unified sheen map from OC
- fix attach point selection

### Build 2025-02-28

- load sheen and sheenRoughness map from OC
- fix view submenu

### Build 2025-02-07

- add tooltips and use for menu entries
- reorganize some menu entries
- make some menu entries to radio buttons
- make menu dropdown scrollable for small windows

### Build 2025-02-03

- don't call interactorMan.intialize when embedded

### Build 2025-01-31

- rename "RAW" mode to "Show Alpha Stripes"
- update ig.gfx.threejs 4.0.1

### Build 2024-11-19

- fix selection from below floor
- add Raw setting to disable alphamaps and overlay settings

### Build 2024-06-03

- send ComMoved messages when products are moved through the client

### Build 2024-02-24

- support StartTime / EndTime interactor parameters

### Build 2024-02-21

- hide padding toggle button if treeview is invisible
- fix #18168 exception after deletion

### Build 2024-02-15

- keep postprocessing enabledness in localstorage
- additional ?texture=leather
- hide 2D top views from shadow
- added padding toggle button for treeview

### Build 2024-02-07

- load product transform also if in "." node

### Build 2024-02-01

- improve drag and drop in Firefox
- add quaternion handling to SetRootTransforms

### Build 2024-01-29

- fix loading oc with multiple com ids

### Build 2023-12-18

- fix zip drag and drop with JS and hashes

### Build 2023-12-11

- add CadMode from UI

### Build 2023-12-08

- add CadMode=true url parameter

### Build 2023-11-06

- add PureWhite as possible background color
- disable individual placing for articles inside single OC

### Build 2023-10-20

- support ?texture=blue for whole OC zip files

### Build 2023-10-18

- make vertical FOV switchable for easier visual comparisons

### Build 2023-09-08

- dropping single glb now shows BBox without unit cube fallback

### Build 2023-08-25

- place objects without transformation through a placement decision (try to snap or next to existing objects)
- improve loading state tracking when objects are loaded as host com updates
- notify window parent on LoadComUpdate completion
- send a ComClicked message when objects with a commercial representation are clicked

### Build 2023-08-16

- update glb bboxes

### Build 2023-08-07

- update deltamap handling without base uv

### Build 2023-08-03

- update for fixed deltamap placement

### Build 2023-07-13

- detect modified material with same name and add modified one

### Build 2023-07-12

- Support displacement mapping for materials
- Fix drag and drop edge case

### Build 2023-05-24

- Drag and drop new parameters: ?Texture=blue ?Deformation=first

### Build 2023-03-27

- remove warning for multiple rotations

### Build 2023-01-11

- better bounding boxes for GLTF
- fix selection from outside
- support dynamic animations

### Build 2022-11-23

- make 2DTopView doublesided
- fall back to "Standard" for LoadAndScreenshot if not found

### Build 2022-11-21

- add "Custom" view for remote usage

### Build 2022-11-15

- add option to show collider geometries
- move deformation properties to Graphics menu
- make deformation state writable in sidebar

### Build 2022-11-09

- improve bounds of gltf meshes
- fix uninitialized RegionManager for OC with multiple products

### Build 2022-10-28

- fix missing attach spheres after scene update
- resize sidebar after menu size change

### Build 2022-10-07

- add url handling of gltf/glb
- create attachpoint spheres independent from OC
- show attachpoint sphere lines #14476
- rename to explorer, add favicon
- remove "Hide Attach Sphere" menu entry
- add "Attach Sphere" menu entry working like "Attach Points"
- fix attach sphere movement with setPoint()

### Build 2022-09-28

- add drop handling of gltf/glb
- add BBox size info to sidebar
- fix drop handling of OC with SuperDefo
- fix sidebar handling of non scoped geo
- improve handling of attachpoint spheres

### Build 2022-07-28

- refine 'LoadAndScreenshot' views
- clean up background color names

### Build 2022-07-28

- 'LoadAndScreenshot" method from remote manager now accepts views
- views are defined in assets folder

### Build 2022-07-27

- add 'LoadAndScreenshot" method to remote manager

### Build 2022-07-21

- show UV information in Geo sidebar
- enable Drag and Drop as default, use ?PreventDragDrop if needed

### Build 2022-07-15

- fix UI flickering #14056
- ignore geometry normal maps for .obj without second uv set
- generate heuristic normals for unusual .obj without any

### Build 2022-07-06

- extend node information in sidebar in 3 steps
- add tag information to sidebar
- add total scaling information to sidebar if useful
- keep object selected if camera movement is detected
- fix hiding vertex view for attach spheres
- add kinematics helper for certain tags without animation.json

### Build 2022-06-16

- rename "Triangles" to "Scene Info" and add more BBox data

### Build 2022-06-07

- add selection of darker backgrounds to improve wireframe visibility
- add drag and drop for OC zip (for standalone usage)

### Build 2022-05-11

- fix rare gltf animation not properly returning to initial position

### Build 2022-05-02

- support Animation:All for gltf deformation

### Build 2022-04-08

- fix animation without animation interactor

### Build 2022-04-06

- fix CTRL-C/V and CMD-C/V copying of sidebar values #13402
- add workaround for Safari 15.4 bug (webkit #237906)
- add optional representation for more complex kinematics
- add more colors to tree nodes depending on interactor status
  [green: AnimationInteractor,
  yellow: other Interactor,
  blue: touched by Interactor,
  red: AnimationInteractor + touched by Interactor]

### Build 2022-03-21

- add optional 1cm grid
- add optional representation for simple kinematics bones
- added green color to tree nodes with interactor

### Build 2022-03-04

- avoid edge material similar to background #13003
- fix collision edge case #12875

### Build 2022-02-08

- fix not working Deformations

### Build 2022-02-03

- add "embedded" mode for initial light from outside

### Build 2022-01-06

- add possibility to show OC TopView image

### Build 2021-12-01

- fix visibility for gltf deformations #12616

### Build 2021-11-26

- add "Geos" tab in right sidebar
- add Button to switch geo visibility always/auto/never
- strike node name if visibility is "never"
- cursive nodename if visibility is "always"
- fix selection of invisible objects

### Build 2021-11-15

- fix bounds not being updated when changing scaling of a tree node
- fix tree info crashing for unknown components

### Build 2021-11-12

- fix inverting of GLTF UV-Sets #12439
- fixes for blender like camera movement + F key
- open treeview path upon selection
- scroll in treeview upon selection
- make less used node details in treeview collapsable
- show geometry names next to nodes if treeview is wide enough

### Build 2021-10-20

- set ig.showcase lightsetup as default if nothing is set
- support Numpad shortcuts for camera movement like blender
- support GLTF with bones
- always recreate Wireframes instead of caching -> Fix for #12292
- support hiding Attach Spheres

### Build 2021-08-18

- fix position bug with 0th article in OC
- experimental support for Image Based Lighting
- upgrade libraries to use ThreeJS 130

### Build 2021-05-25

- support setpoint() child visibility
- option for bloom in menu
- initially disable Interactor in planner mode
- improve API

### Build 2021-04-22

- improve handling of deformation lattices
- improve handling of child articles moved with parent

### Build 2021-03-23

- improve robustness for igxc with stringified GeometryParameters

### Build 2021-03-18

- support Geometries with modified GeoNormalStrength parameter
- fix initial rotation for loaded multi OC
- improve logging while loading scripts

### Build 2021-02-16

- support tiled GeoNormalMaps with new NormalMapTiling parameter

### Build 2021-02-03

- missing textures no longer prevent whole article from being loaded

### Build 2020-12-10

- user-triggered ignore of glTF geometries for test purpose

### 2020-10-08

- fixed blender defo keyframe selection
- fixed attachpoint list scrolling
- support roughnessDelta and diffuseDelta maps for velvet materials
- support seam materials
- improved open configuration support

### 2020-07-31

- initial open configuration support
- improved gltf keyframe support

### 2020-07-06

- keyframe animation support via gltf/glb
- added "sceneType" url parameter with values "geometry" and "igxc"
- fixed blender defo lattice visualization
- fixed setPoint implementation

### 2020-06-19

- Improved direction indicator for Attachpoints ( Menu: Model -> Attachpoints )
- Initial Support for Roughnessmaps if using Physical Materials

### 2020-06-04

- fix: animation not always replaced after changing properties

### 2020-05-28

- save and restore Floor
- save Camera-Position with new "Save" Button (only for empty and igxc view, ignored for obj/ctm previews)
- reset and delete Camera-Position with new "Reset" Button (only for empty and igxc view, ignored for obj/ctm previews)
- experimental support for "Blender" deformations if indicated in deformation.json

### 2020-05-20

- automatic saving and restoring of selected floor
- manual saving and automatic restoring of current Camera via Camera-> Save resp. Camera->Reset
- support for BlenderDeformations (visual lattice is orange like Blender selections)

### 2020-01-28

- lighting:
    - allow lights to be placed relative to the camera position
- envMan:
    - improve initialization of scene size, leading to better initial zoom on object
    - prevent infinity loop when default lightsetup has faulty JSON
- test launcher: add last part of name if it doesn't contain "Scene."
- development mode:
    - add export light setup button in debug menu
    - light setup menu is smaller and scrollable
    - add lightsetups for relative-to-camera, for hemispere and for direction light without ambient light
    - add lights positioned relative to camera
    - material editors: check if envmap exists before showing mapping options
- ctrl+shift+click on an object now logs material, geometry and mesh to console

### 2020-01-16

- fix size of vertex normals
- restore whether to enable shadows from localStorage
- if light setup file is not found, revert to default light setup automatically
- ignore ghosts in postprocessing
- adopt treeview in height to header menu
- fix loading scripts containing ".js" in name

### 2020-01-09

- bug fixes:
    - handle model shading options correctly (issues with postprocessing)
    - objects can be moved again in planning mode
    - in vertex points mode: don't hit components with mouse
- extract showing normals as an extra option

### 2020-01-08

- update ig dependencies
- refine animation slider:
    - add label showing progress
    - change to pause icon while playing
    - continue from pause
- fix modelState not being restored
- fix loading scene when an asset is missing
- add free form deformation progress to tree node view
- add vertex points view in model menu

### 2019-12-20

- fix loading issues
- fix stability issues in node and attachpoint viewer
- node editor
    - jump to current node selected in 3D view
    - improve highlighting
    - show amount of triangles
    - allow editing of scaling
- add overall triangle counter, can be activated in model menu
- prevent postprocessing when interacting
- fix warning when super root gfx id is created

### 2019-12-10

- node editor
    - visibility of nodes can be edited
    - displayed name will now be shortened to show the last part of the name
    - display name of geoNormalMap
    - node editor is resizable now

### 2019-12-05

- node editor
    - scroll to node when clicking in 3D view
    - position and rotation input fields can be manipulated by arrow keys
- add and update light setups
- in development mode
    - MaterialEditor
        - add side (FrontSide/BackSide/DoubleSide)
        - make scrollable
    - test/launcher: sort entries case-insensitive
- postprocessing:
    - improvements
    - disable while orbitting

### 2019-11-14

- add postprocessing (temporal anti aliasing with screen space ambient occlusion)
- debugging:
    - add option for half resolution
    - add several logs while loading
    - add postprocessing editor
- add attach point viewer
- add grid planes for orientation (menu graphics -> grid planes)
- consider devicePixelRatio

### 2019-10-18

- node tree view:
    - the position and rotation of a node are editable when clicking on the entry
- move show attach points option to model menu
- improve selection by clicking on geometries
- prevent attachpoints to be displayed in tree view

### 2019-10-04

- animation control: handle left and right arrow key

### 2019-09-27

- show comId in tree node viewer for root components
- add option to disable collision checks when snapping
- show attachpoint rotation

### 2019-09-19

- add handling menu
    - enable/disable collisions
    - enable/disable interactors (also controllable with ctrl key while interacting)
- fix hiding wireframe ghost when interacting out of snapping range
- OrbitControls: fix panning for orthographic camera with zoom

### 2019-09-13

- add `selectable`, `orderNumber` in tree node viewer
- fix increasing instance counter used in remote message `LoadScene` (e.g. used in IG.Creator-Configurator)

### 2019-09-06

- removed keepFloatingObjectsFloating
- add option to show attachpoints
    - support restoring whether to show or hide from localStorage
- prevent wireframe or edges to be red (collision with red error material)
- show layer name and categories in tree node viewer
- ignore nodes with layer `AP Marker` in `API.GetBounds`

### 2019-08-22

- add remote message `SetRootTransforms()`
- show indicator for error and warning messages
- show tree node viewer
    - support restoring whether to show or hide from localStorage
- use `yarn` as package manager

### 2019-07-23

- add remote messages `GetPosition(GfxOrComId)`, `GetRotation(GfxOrComId)` and `GetRootTransforms()`

### 2019-07-10

- wireframe/edge handling for multigroup obj
- load Scene.json packages only if not also present in igxc

### 2019-05-03

- support complex envmap
- add new light setup for a more uniform lighting
- use new material pipeline (new handling for metal and plastics)

### 2019-04-30

- support simple envmap for default lighting

### 2019-04-16

- reference regular IG.GFX.\* 3.x libraries
- make Boundingbox size select- and copyable
- fix texture rotation
- fix initial loading of Deformation state
- save helpline and floor status for obj and igxc mode separately

### 2019-04-12

- move towards new major IG.GFX.\* libs
- update THREE to version 102
- WIP integrate material editor, image based lighting and tree view

### 2019-03-11

- remove deprecated remote message `LoadConfiguration`

### 2019-03-08

- fix loading updates for ig.creator planner
- support restoring model state from localStorage
- fix edges, wireframe and vertex normals helpers for root components that are not in 0|0|0
- display loading state in the upper left corner

### 2019-03-07

- update ig.gfx.threejs to 2.10.3 (IGPhongMaterial: change shininess offset to 16 and half SpecularRGB, special handling for matte materials)

### 2019-03-05

- fix initialization of orthographic camera
- add fine grid floor
- update ig.gfx.threejs to 2.10.1 (adds 32 to IGPhongMaterial shininess)

### 2019-03-01

- larger geometry bounds info
- add menu for changing light setup
- support restoring lightsetup from localStorage

### 2019-02-28

- show bounds info for simple geometries (like in 3D Preview mode triggered by creator)
- fix geoNormalMap used for two geometries
- show bounds info for CTM and OBJ files

### 2019-02-27

- set device pixel ratio to 1
- add display of selection, interactor and local bounds
- fix missing touch for mobile devices

### Release 2019-02-22

- support new texture slots for materials based on patch size
    - IGPhongMaterial
        - `Normal` - displaying structural details (now with patch size, additional to geometry sized normal maps)
        - `Specular` - allowing the display of spots from matte to shiny highlights
    - IGStandardMaterial
        - `Normal` - displaying structural details (now with patch size, additional to geometry sized normal maps)
        - `Roughness` - allowing the display of spots from matte to shiny highlights (can be considered inverse to Specular from IGPhongMaterial)
        - `Metalness` - allowing the display of metallic gloss
- fix DumpScene

### Release 2019-01-18

- execute animations independently from each other

### Release 2018-12-06

- support for Categories as stringlist (alternative to comma seperated string)

### Release 2018-12-05

- update ig.gfx libs
- snapping between child and parent without collision
- fix GetBounds() race condition

### Release 2018-12-04

- workaraound for scene urls with hashes

### Release 2018-12-03

- load all textures, normals and deformations with hash
- fix loading order of interactor scripts with vastly different sizes
- fix loading of particular standard interactors

### Release 2018-11-21

- fix loading order of packages in json file with reference to an IGXC file

### Release 2018-11-08

- add `SetPosition(rootId, x, y, z)` and `SetYRotation(rootId, yAngle)` to RemoteHandling
- fix edges and wireframe generation for all root components in scene

### Release 2018-11-01

- add option to disable interactors temporarily in planning mode (shortcut control key)
- update core libraries, refactoring, new animation handling

### Release 2018-07-24

- increase precision for free form deformation

### Release 2018-06-08

- better mouse out handling
- articles are not put on floor anymore
- visualization of free form deformation lattices reimplemented
- redraw on update from remote
- add nice looking shadows

### Release 2018-06-01

- fix comilation error
- small fix of ortho camera when not initialized correctly
- a hash is now appended to the javascript bundle, so browser cache issues should be solved

### Release 2018-05-30

- fix free form deformation implementation -> use interactors to control deformation
- load free form deformation progress value from igxc
- several camera and interaction fixes

### Release 2018-04-16

- use THREE v91
- remove mirror
- remove alert for undefined operation fired remotely (IG.Creator)

### Release 2018-03-01

- merge IG.GFX.Connector.js into SingleViewer
- fix root interactor when in planning mode
- fix orthographic camera when in wireframe mode

### Release 2018-02-12

- integrate orthographic camera orbit
- animation control like ipad version
- use StandardInteractor instead of MultiProductInteractor for movement
- Interactor actions only for left mouse button
- mirrored floor

### Release 2017-12-12

- change parts of the SingleViewer to use modules to modernize it
- integrate free form deformation
- new GUI design

### Release 2017-07-31

- load .obj and .ctm with hashes to prevent caching outdated versions

### Release 2017-07-06

- support "Active" property for animations and interactors
- fix decoding of -title parameter

### Release 2017-06-23

- fix missing Size and redraw for CTM and OBJ
- upgrade deprecated texture loaders

### Release 2017-06-19

- fix material race conditions

### Release 2017-05-23

- fix preview export

### Release 2017-04-20

- make wireframe work with moving objects and interactors
- fix CTM dimension info
- fix Ortho Orbiter
- add package json to fetch unmodified dependencies from npm
- use V2 Packages ig.gfx.core + ig.gfx.threejs

### Release 2017-03-17

- support loading IGXC containing OpenCTM geometries
- support loading OpenCTM \*.ctm files
- show Animations with "Animate" button
- FIX missing redraw
- use ThreeJS r84 (modified for different normalMap UVs)

### Release 2017-02-21

- new remote operation DumpScene
- FIX path to checkerboard texture

### Release 2017-01-27

- improve initial position of ortho camera
- add support to show wireframe / edges / surface
- add orthographic camera with various presets
- make self contained
- fork the former shared folder
- use ThreeJS r75

### Release 2017-01-26

- ThreeJS r71 support

### Release 2015-06-11

- camera control replaced (Orbiter, was TrackBall)

### Release 2014-12-19

- url: title option

### Release 2014-12-16

- url option for OBJ loading

### Release 2014-12-15

Copyright (C) 2013 - 2022 intelligentgraphics AG. All Rights Reserved.
