Skip to content

webgi SDK v0 ​

We provide the webgi SDK v0(earlier hosted on webgi.xyz/docs) with long term support for existing customers of webgi and ijewel3d.

For new projects:

  • Checkout the new library at webgi.dev which provides a better developer experience, more features, and starts for free.
  • For Rendering Jewelery, Gem-stones, Fashion, Precious Metal, configurators, AR TryOn - iJewel3D Developer
  • The core framework used in the webgi SDK is now free and open source - Threepipe SDK.

Version ​

  • Latest version - v0.17.0 (LTS)
  • Previous versions - Changelog

Introduction ​

  • webgi v0 is a three.js framework to create 3d applications, ecommerce viewers, configurators.
  • It includes a set of plugins for rendering, lighting, materials, post-processing, and more.
  • webgi v0 requires a license to use in any commercial applications.
  • We are selling any new webgi v0 license, checkout ijewel3d and webgi.dev for new products depending on your use-case.

Examples ​

Support ​

For support and inquiries, email us at [email protected]

Installation ​

webgi Viewer setup (HTML) ​

Easiest way is to use the webgi-viewer web component with a src file (glb/gltf) and optionally an environment map (hdr/png)

html
<!--Add this script tag in the page head-->
<script src="https://releases.ijewel3d.com/webgi/runtime/viewer-0.17.0.js"> </script>
<!--Add the viewer element somewhere inside the body of the page.-->
<webgi-viewer
        id="viewer-3d"
        src="https://releases.ijewel3d.com/webgi/runtime/bundle-0.17.0.js"
        environment="https://releases.ijewel3d.com/webgi/assets/hdr/gem_2.hdr"
        style="width: 100%; height: 100%; z-index: 1; display: block;"
/>

The viewer can be accessed later in javascript to change the model, add plugins, make changes.

html
<script>
const element = document.getElementById('viewer-3d');

element.addEventListener('initialized', ()=>{
    const viewer = element.viewer; // `ViewerApp`
    console.log(viewer);
    // Use the viewer
    viewer.load("some_other_model");
    viewer.getPlugin(DepthOfFieldPlugin).enabled = true;

})

</script>

TIP

Include the complete bundle js (instead of the viewer) to access all plugins and utilities.

html
<script src="https://releases.ijewel3d.com/libs/webgi-v0/bundle-0.17.0.js"> </script>

webgi Viewer setup (JS) ​

First, include the viewer js file in the HTML (ideally in the head portion)

html
<script src="https://releases.ijewel3d.com/libs/webgi-v0/viewer-0.17.0.js"> </script>

Note

This file is already optimised and minified, no extra processing is required.

Now, add the canvas and the javascript code in any script tag to initialise the viewer in a canvas and load a model.

html
<canvas style="width:100%; height: 300px;" id="webgi-canvas"></canvas>
<script>
const viewer = new CoreViewerApp({canvas: document.getElementById('mcanvas')})
viewer.initialize({
    caching: true,
    ground: true,
    bloom: true,
    depthTonemap: true,
    enableDrop: false,
    importPopup: false,
    debug: false
}).then(()=>{
    const model = "https://demo-assets.pixotronics.com/pixo/gltf/earringScene1.glb";
    viewer.load(model);
    console.log(viewer);
}
</script>
Manually add Plugins

or by adding plugins manually and loading a model

html
<canvas style="width:100%; height: 300px;" id="webgi-canvas"></canvas>
<script>
async function setupViewer(){
    const viewer = new ViewerApp({canvas: document.getElementById('mcanvas')})
    // Add some plugins
    await viewer.addPlugin(AssetManagerPlugin);
    // Add all the important plugins at once: to see the plugins list and default settings, check: https://codepen.io/repalash/pen/JjLxGmy
    await addBasePlugins(viewer);

    // Load a 3d model.
    await viewer.load("https://releases.ijewel3d.com/webgi/assets/gltf/cube_diamond_sample.gltf");

    // Load an environment map
    await viewer.setEnvironmentMap("https://releases.ijewel3d.com/webgi/assets/hdr/gem_2.hdr.png?v=1");

}
</script>

Note

The environment map must be loaded separately if not present in the glb model. Check the editor sample below which loads the environment map.

ES6 module bundles ​

It's recommended to use module bundles to import and add just the plugins that are required for the applications to keep the size small and get good performance.

NPM module ​

The SDK can be added to package.json with module bundle and type declarations like this:

json
{
  "devDependecies": {
    "webgi": "https://releases.ijewel3d.com/webgi/runtime/bundle-0.17.0.tgz",
    "@types/webgi": "https://releases.ijewel3d.com/webgi/runtime/bundle-types-0.17.0.tgz"
  }
}

JS/TS Import ​

The complete SDK can also be imported as a ES6 module from a single JS file.

html
<script type="module">
import {ViewerApp} from "https://releases.ijewel3d.com/webgi/runtime/bundle-0.17.0.mjs";
</script>

Note: You can see the imported JS files in CodePen by going into pen settings -> JS tab -> external files.

WebGi - Photo-realism for the web