Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@cognite/3d-viewer

Package Overview
Dependencies
Maintainers
13
Versions
104
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@cognite/3d-viewer

> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).

  • 2.2.3
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
46
increased by12.2%
Maintainers
13
Weekly downloads
 
Created
Source

Cognite's 3D Viewer

Visualize Cognite's 3D models in a web browser with WebGL.

Table of Contents

Install

$ npm install @cognite/3d-viewer

Usage

With import

import { Cognite3DViewer } from '@cognite/3d-viewer';
const viewer = new Cognite3DViewer();

With script tag

<script src="{path to this folder}/lib/cognite.bundle.js"></script> // Now you have 'cognite' as a global object
<script>
  var viewer = new cognite.Cognite3DViewer();
</script>

Sample code

const viewer = new Cognite3DViewer();

// The viewer will render to a canvas.
// Add this canvas to your DOM
document.body.appendChild(viewer.canvas);

// start rendering
viewer.start();

// At this point you will only see a black canvas.

// So let's add a 3D model:
const options = {
  projectName, // Project name (tenant) in Cognite's Data Platform
  modelId,     // 3D model id (has to be under the same project)
  revisionId,  // The model's revision id
};
viewer.addModel(options).then(function(model) {
  // Move camera to look at the model
  viewer.fitCameraToModel(model, 0);
});

Note: you may need additional styling to the canvas to make it fit your use-case

canvas {
  width: 100%;
  height: 100%;
}
Add progress listeners
function onProgress(progress) {
  console.log(progress);
}

function onComplete() {
  console.log('Model loaded');
}

const options = {
  projectName,
  modelId,
  revisionId,
  onProgress, // optional
  onComplete, // optional
};
viewer.addModel(options)...
Make the model clickable
viewer.on('click', function(event) {
  const { offsetX, offsetY } = event;
  const nodeId = model.getNodeIdFromPixel(viewer.camera, viewer.renderer, offsetX, offsetY);
  if (nodeId != null) {
    // highlight the object
    model.selectNode(nodeId);
    // make the camera zoom to the object
    const boundingBox = model.getBoundingBox(nodeId);
    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec
  } else {
    // Clicked outside the 3D model
  }
});

API Reference

Table of Contents

Cognite3DViewer

Cognite3DViewer is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.

Parameters
  • options Object (optional, default {})
    • options.noBackground boolean -- Transparent background or not (optional, default false)
    • options.antialias boolean -- If antialias on rendering should be enabled. On big 3D models this option will have negative effect on performance. (optional, default false)
Examples
const viewer = new Cognite3DViewer({
  noBackground: true,
  antialias: false,
});
start

Start viewer, or resume after calling stop().

Examples
viewer.start();
stop

Stop the viewer. When stopped, the viewer will not do work, but it's state will be kept so it can restart immediately after start() is called.

Examples
viewer.stop();
on

Add event listener to the viewer call off to remove an event listener

Parameters
  • type "click"
  • func function (event:MouseEvent) -- The callback function
Examples
const onClick = event => { ... };
viewer.on('click', onClick);
off

Remove event listener from the viewer call on to add an event listener

Parameters
  • type ("click")
  • func function -- The callback function used in on
Examples
viewer.off('click', onClick);
addModel

Add a new 3D model to the viewer. call fitCameraToModel to see the model after the model has loaded

Parameters
  • options Object
    • options.projectName string -- The Cognite project the 3D model belongs to
    • options.modelId number -- The model's id
    • options.revisionId number -- The model's revision id
    • options.sceneId string -- Default to the latest scene (optional, default 'latest')
    • options.onProgress function (progress: Object)? -- Callback for progress events
    • options.onComplete function? -- Callback when the model is fully loaded
Examples
const options = {
  projectName: 'COGNITE_TENANT_NAME',
  modelId:     'COGNITE_3D_MODEL_ID',
  revisionId:  'COGNITE_3D_REVISION_ID',
};
viewer.addModel(options).then(model => {
  viewer.fitCameraToModel(model, 0);
});

Returns Promise<Cognite3DModel>

fitCameraToBoundingBox

Move camera to a place where the content of a bounding box is visible to the camera

Parameters
  • box THREE.Box3 -- The bounding box
  • duration number? -- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.
  • radiusFactor number? -- The the ratio of the distance from camera to center of box and radius of the box (optional, default 4)
enableKeyboardNavigation

Enables camera navigation with the keyboard.

disableKeyboardNavigation

Disables camera navigation with the keyboard.

fitCameraToModel

Move camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls fitCameraToBoundingBox

Parameters

Cognite3DModel

Extends THREE.Object3D

Cognite3DModel is the class represeting a Cognite 3D model and it's state

getBoundingBox

Get bounding box of a node

Parameters
  • nodeId number -- The node's id
  • box THREE.Box3? -- Optional target. Specify this to increase performance if the box can be reused.
Examples
const box = model.getBoundingBox(nodeId);
const reusableBox = new THREE.Box3();
const box = model.getBoundingBox(nodeId, reusableBox);
// box === reusableBox

Returns THREE.Box3

getNodeIdFromPixel

Raycasting for nodes

Parameters
  • camera THREE.Camera -- The camera to project from
  • renderer THREE.WebGLRenderer -- A renderer. The raycaster will render an image to memory for efficiency.
  • x number -- X coordinate in pixels
  • y number -- Y coordinate in pixels
Examples
const box = model.getBoundingBox(nodeId);
const reusableBox = new THREE.Box3();
const box = model.getBoundingBox(nodeId, reusableBox);
// box === reusableBox

Returns (number | null) -- If there was a hit then returns the node id

getNodeColor

Return the color on a node

Parameters
  • nodeId number -- The node's id

Returns {r: number, g: number, b: number, a: number}

setNodeColor

Set the color on a node

Parameters
  • nodeId number -- The node's id
  • r number -- The red color value (0-255)
  • g number -- The green color value (0-255)
  • b number -- The blue color value (0-255)
  • a number -- The alpha value (0-255) (optional, default 255)
selectNode

Mark a node as selected

Parameters
  • nodeId number -- The node's id
deselectNode

Mark a node as deselected

Parameters
  • nodeId number -- The node's id
deselectAllNodes

Mark all selected nodes as deselected

getAssetInfoFromNodeId

Get asset id assosiated with a node id in a Cognite 3D model.

Parameters
  • projectName string -- The Cognite project the 3D model belongs to
  • modelId number -- The model's id
  • revisionId number -- The model's revision id
  • nodeId number -- The node's id
Examples
getAssetInfoFromNodeId(projectName, modelId, revisionId, nodeId).then(result => {
  if (result !== null) {
    // result.assetId
    // result.nodeId
  }
});

Returns Promise<({nodeId: number, assetId: number} | null)>

getNodeIdsFromAssetId

Get all node id's assosiated with an asset id in a Cognite 3D model

Parameters
  • projectName string -- The Cognite project the 3D model belongs to
  • modelId number -- The model's id
  • revisionId number -- The model's revision id
  • assetId number -- The asset id
Examples
getNodeIdsFromAssetId(projectName, modelId, revisionId, assetId).then(nodeIds => {
  nodeIds.forEach(nodeId => { ... });
});

Returns Promise<Array<number>> Array of nodeId's

Cognite3DModelLoader

Cognite3DModelLoader is the class used to load a Cognite 3D model to Three.js.

load
Parameters
  • options Object? (optional, default {})
    • options.projectName string -- The Cognite project the 3D model belongs to
    • options.modelId number -- The model's id
    • options.revisionId number -- The model's revision id
    • options.sceneId string -- Default to the latest scene (optional, default 'latest')
    • options.onProgress function (progress: Object)? -- Callback for progress events
    • options.onComplete function? -- Callback when the model is fully loaded
Examples
const options = {
  projectName: 'COGNITE_TENANT_NAME',
  modelId:     'COGNITE_3D_MODEL_ID',
  revisionId:  'COGNITE_3D_REVISION_ID',
};
Cognite3DModelLoader.load(options).then(model => {
  // if we have a THREE.Scene then:
  scene.add(model);
});

Returns Promise<Cognite3DModel>

Development Usage

How to build

  • Install yarn (npm install -g yarn).
  • Run yarn to install packages.
  • Run yarn run start and go to http://localhost:3000 where the index.html file is hosted.

Check out scripts in package.json for more commands.

How to publish

  • Run yarn publish, make sure you have bumped the version first!

FAQs

Package last updated on 09 Jul 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc