17. load multiple vtks with animations#
html
<template>
<!-- <div id="bg" ref="base_container" @click="getPosition"> -->
<div id="bg" ref="base_container">
<div ref="c_gui" id="gui"></div>
<div class="btn">
<button
@click="loadVtk('/copper3d_examples/nrrd/breast.vtk', 'vtk-breast1')"
>
LoadVtk-heart
</button>
</div>
</div>
</template>
<style>
#bg {
width: 100vw;
height: 100vh;
/* border: 1px solid palevioletred; */
}
.btn {
position: fixed;
left: 0;
top: 0;
}
button {
cursor: pointer;
margin: 10px;
}
#gui {
position: absolute;
top: 150px;
left: 2px;
}
</style>
config vue and copper3d
import * as Copper from "copper3d";
import * as THREE from "three";
import { getCurrentInstance, onMounted, ref } from "vue";
let refs = null;
let appRenderer: Copper.copperRenderer;
let scene: Copper.copperScene | undefined;
let bg: HTMLDivElement = ref<any>(null);
let c_gui: HTMLDivElement = ref<any>(null);
onMounted(() => {
let { $refs } = (getCurrentInstance() as any).proxy;
refs = $refs;
bg = refs.base_container;
c_gui = refs.c_gui;
appRenderer = new Copper.copperRenderer(bg, {
guiOpen: true,
camera: true,
performance: true,
light: true,
});
appRenderer.closeGui();
const defaultScene = appRenderer.getCurrentScene();
defaultScene.createDemoMesh();
appRenderer.animate();
});
loadVtks
function loadVtk(url: string, name: string) {
scene = appRenderer.getSceneByName(name) as Copper.copperScene;
const url_base =
"/copper3d_examples/surfaces_lv/model_participant_000_lv_demo_endo_0";
const url_base1 =
"/copper3d_examples/surfaces_lv/model_participant_000_lv_demo_epi_0";
let urls: string[] = [];
let urls_1: string[] = [];
if (scene == undefined) {
scene = appRenderer.createScene(name);
if (scene) {
appRenderer.setCurrentScene(scene);
for (let i = 0; i < 31; i++) {
let temp_u = "";
let temp_u_1 = "";
if (i < 10) {
temp_u = url_base + "0" + i + ".vtk";
temp_u_1 = url_base1 + "0" + i + ".vtk";
} else {
temp_u = url_base + i + ".vtk";
temp_u_1 = url_base1 + i + ".vtk";
}
urls.push(temp_u);
urls_1.push(temp_u_1);
}
/**
* Notice here, load multiple vtks
*/
scene?.loadVtks([
{ name: "heart_inner", urls },
{ name: "heart_outer", urls: urls_1 },
]);
scene.loadViewUrl("/copper3d_examples/d_heart_view.json");
allScenes.push(scene);
}
} else {
if (viewpoint) scene.updateCamera(viewpoint);
appRenderer.setCurrentScene(scene);
}
}
result: http://localhost:3999/copper3d_examples/#/example01
click loadVtk-heart button.