VIM Viewer - Isolation

by simon_vimaec

HTML

<script src="https://unpkg.com/vim-webgl-viewer@2.0.2"></script>

CSS

/* Makes full screen and remove scrollbars */
html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
  overflow: hidden;
  touch-action: none; /* This prevents touches from being eaten up by the browser. */
}

JavaScript

async function runDemo() {

	// Create a new viewer
	const viewer = new VIM.Viewer()

	// Open the vim file
  const vim = await VIM.open(
    "https://vim02.azureedge.net/samples/residence.v1.2.75.vim",
    {
        rotation: new VIM.THREE.Vector3(270, 0, 0),
    },
		(p) => console.log(`Downloading Vim (${(p.loaded / 1000).toFixed(0)} kb)`)
	)

	// Load all geometry from the vim file.
  await vim.loadAll()

	// Add loaded vim to a viewer 
  viewer.add(vim)
  viewer.camera.snap().frame(vim)

  // Hide all objects
  for (const obj of vim.getObjects()) {
    obj.visible = false
  }

	// Except our target which we select and frame.
  var obj = vim.getObjectFromElement(123)
  obj.visible = true
  viewer.selection.select(obj)
  viewer.camera.lerp(1).frame(obj)

  // Override scene material with the isolation material which shows hidden object as ghosts
  vim.scene.material = viewer.materials.isolation
  
}

runDemo()