|
@@ -1,7 +1,7 @@
|
|
<template>
|
|
<template>
|
|
<div>
|
|
<div>
|
|
<div>
|
|
<div>
|
|
- <button @click="increment">Count is: {{ count }}</button>
|
|
|
|
|
|
+ <!--button @click="increment">Count is: {{ count }}</button-->
|
|
|
|
|
|
</div>
|
|
</div>
|
|
<div id="vtkContainer" />
|
|
<div id="vtkContainer" />
|
|
@@ -52,7 +52,7 @@
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="itemlist">
|
|
<div class="itemlist">
|
|
- <div class="item" @click="play(3000)">播 放</div>
|
|
|
|
|
|
+ <div class="item" @click="play(500)">播 放</div>
|
|
<div class="item" @click="suspend">暂 停</div>
|
|
<div class="item" @click="suspend">暂 停</div>
|
|
<div class="item" @click="Prev" >上一分钟</div>
|
|
<div class="item" @click="Prev" >上一分钟</div>
|
|
<div class="item" @click="increment">下一分钟</div>
|
|
<div class="item" @click="increment">下一分钟</div>
|
|
@@ -81,6 +81,8 @@ import { formatDefaultLocale } from 'd3-format';
|
|
import { ref,onMounted,reactive } from 'vue';
|
|
import { ref,onMounted,reactive } from 'vue';
|
|
import '@kitware/vtk.js/Rendering/Profiles/Geometry';
|
|
import '@kitware/vtk.js/Rendering/Profiles/Geometry';
|
|
import vtkRenderWindowWithControlBar from '@kitware/vtk.js/Rendering/Misc/RenderWindowWithControlBar';
|
|
import vtkRenderWindowWithControlBar from '@kitware/vtk.js/Rendering/Misc/RenderWindowWithControlBar';
|
|
|
|
+import vtkFullScreenRenderWindow from '@kitware/vtk.js/Rendering/Misc/FullScreenRenderWindow';
|
|
|
|
+
|
|
import vtkActor from '@kitware/vtk.js/Rendering/Core/Actor';
|
|
import vtkActor from '@kitware/vtk.js/Rendering/Core/Actor';
|
|
import vtkMapper from '@kitware/vtk.js/Rendering/Core/Mapper';
|
|
import vtkMapper from '@kitware/vtk.js/Rendering/Core/Mapper';
|
|
import vtkUnstructuredDataReader from '../reader/UnstructuredDataReader.js';
|
|
import vtkUnstructuredDataReader from '../reader/UnstructuredDataReader.js';
|
|
@@ -102,7 +104,7 @@ let starttime=ref(1);
|
|
let endtime=ref(60);
|
|
let endtime=ref(60);
|
|
let timenum=ref(2)
|
|
let timenum=ref(2)
|
|
let isstop=ref(false)
|
|
let isstop=ref(false)
|
|
-let arrvalue=reactive(['fire', 'Temperature'])
|
|
|
|
|
|
+let arrvalue=reactive(['Water', 'Height'])
|
|
let options=reactive( [
|
|
let options=reactive( [
|
|
{
|
|
{
|
|
value: 'fire',
|
|
value: 'fire',
|
|
@@ -138,8 +140,8 @@ function add(id){
|
|
// 响应式状态
|
|
// 响应式状态
|
|
const count = ref(0);
|
|
const count = ref(0);
|
|
const opacity = ref(0.1);
|
|
const opacity = ref(0.1);
|
|
-const min=ref(0.0);
|
|
|
|
-const max=ref(1.0);
|
|
|
|
|
|
+const min=ref(0);
|
|
|
|
+const max=ref(1);
|
|
const scalarFAll = ref([]);//火灾标量
|
|
const scalarFAll = ref([]);//火灾标量
|
|
const scalarWAll = ref([]);//水灾标量
|
|
const scalarWAll = ref([]);//水灾标量
|
|
/*
|
|
/*
|
|
@@ -150,13 +152,13 @@ CO2:CO2
|
|
Height:水位高度
|
|
Height:水位高度
|
|
*/
|
|
*/
|
|
// const scalarName = ref("CO2");
|
|
// const scalarName = ref("CO2");
|
|
- const filedir =ref("data/Fire/");
|
|
|
|
|
|
+// const filedir =ref("data/Fire/");
|
|
//const scalarName = ref("Height");
|
|
//const scalarName = ref("Height");
|
|
-// filedir =ref("data/Water/");
|
|
|
|
-const renderWindowWith = vtkRenderWindowWithControlBar.newInstance({
|
|
|
|
- controlSize: 11,
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
|
|
+const filedir =ref("data/Water/");
|
|
|
|
+// const renderWindowWith = vtkRenderWindowWithControlBar.newInstance({
|
|
|
|
+// controlSize: 11,
|
|
|
|
+// });
|
|
|
|
+const renderWindowWith= vtkFullScreenRenderWindow.newInstance();
|
|
const renderer = renderWindowWith.getRenderer();
|
|
const renderer = renderWindowWith.getRenderer();
|
|
// renderer.setBackground([0.1,0.2,0]);
|
|
// renderer.setBackground([0.1,0.2,0]);
|
|
const renderWindow = renderWindowWith.getRenderWindow();
|
|
const renderWindow = renderWindowWith.getRenderWindow();
|
|
@@ -196,17 +198,12 @@ function sleep(numberMillis) {
|
|
console.log(exitTime);
|
|
console.log(exitTime);
|
|
}
|
|
}
|
|
//联级选择
|
|
//联级选择
|
|
-function handleChange(val){
|
|
|
|
-// console.log(val[0])
|
|
|
|
-// if(val[0]=='fire'){
|
|
|
|
-// let fireval=val[1];
|
|
|
|
-// let scalarName = ref(fireval);
|
|
|
|
-// let filedir =ref("data/Fire/");
|
|
|
|
-// }else{
|
|
|
|
-// let scalarName = ref("Height");
|
|
|
|
-// let filedir =ref("data/Water/");
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
|
|
+function handleChange(val){// console.log(val[0])
|
|
|
|
+ arrvalue=val;
|
|
|
|
+ console.log("arrvalue",arrvalue);
|
|
|
|
+ min.value=0.0;
|
|
|
|
+ max.value=1.0;
|
|
|
|
+ changeScalar();
|
|
}
|
|
}
|
|
//暂停
|
|
//暂停
|
|
function suspend(){
|
|
function suspend(){
|
|
@@ -216,77 +213,41 @@ function suspend(){
|
|
//滑块
|
|
//滑块
|
|
function sliderchange(val){
|
|
function sliderchange(val){
|
|
console.log(val);
|
|
console.log(val);
|
|
-
|
|
|
|
|
|
+ changeScalar()
|
|
}
|
|
}
|
|
|
|
|
|
//播放
|
|
//播放
|
|
function play(time){
|
|
function play(time){
|
|
- isstop.value=true;
|
|
|
|
- const sleep = (timeout = time) =>
|
|
|
|
- new Promise((resolve, reject) => {
|
|
|
|
- setTimeout(resolve, timeout);
|
|
|
|
- });
|
|
|
|
- let timer = async (timeout) => {
|
|
|
|
- for (let i = 0;i <endtime.value; i++) {
|
|
|
|
- if( isstop.value==true){
|
|
|
|
- await sleep(time);
|
|
|
|
- count.value++;
|
|
|
|
- var scalars;
|
|
|
|
- if(arrvalue[0]=='fire'){
|
|
|
|
- scalars=scalarFAll.value[count.value];
|
|
|
|
- }else {
|
|
|
|
- scalars=scalarWAll.value[count.value];
|
|
|
|
- }
|
|
|
|
- const polydata = mapper.getInputData();
|
|
|
|
- const scalarArray=scalars.get(arrvalue[1]);
|
|
|
|
- // console.log("scalarArray:",scalarArray);
|
|
|
|
- const dataArray = vtkDataArray.newInstance({
|
|
|
|
- name:arrvalue[1],
|
|
|
|
- size:polydata.getNumberOfPoints()
|
|
|
|
- });
|
|
|
|
- dataArray.setData(scalarArray);
|
|
|
|
- polydata.getPointData().setScalars(dataArray);
|
|
|
|
-
|
|
|
|
- mapper.clearColorArrays();//强制重建颜色
|
|
|
|
- actor.getProperty().setOpacity(count.value);//设置错误的透明度使得页面重新加载 不设置不刷新页面
|
|
|
|
- renderWindow.render();
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ isstop.value=true;
|
|
|
|
+ const sleep = (timeout = time) =>
|
|
|
|
+ new Promise((resolve, reject) => {
|
|
|
|
+ setTimeout(resolve, timeout);
|
|
|
|
+ });
|
|
|
|
+ let timer = async (timeout) => {
|
|
|
|
+ for (let i = 0;i <endtime.value; i++) {
|
|
|
|
+ if( isstop.value==true){
|
|
|
|
+ await sleep(time);
|
|
|
|
+ count.value++;
|
|
|
|
+ changeScalar();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- timer(time);
|
|
|
|
|
|
+ }
|
|
|
|
+ timer(time);
|
|
}
|
|
}
|
|
//回到上一页
|
|
//回到上一页
|
|
function Prev(){
|
|
function Prev(){
|
|
- isstop.value=false;
|
|
|
|
- count.value--;
|
|
|
|
- var scalars;
|
|
|
|
- if(arrvalue[0]=='fire'){
|
|
|
|
- scalars=scalarFAll.value[count.value];
|
|
|
|
- }else {
|
|
|
|
- scalars=scalarWAll.value[count.value];
|
|
|
|
- }
|
|
|
|
- const polydata = mapper.getInputData();
|
|
|
|
- const scalarArray=scalars.get(arrvalue[1]);
|
|
|
|
- // console.log("scalarArray:",scalarArray);
|
|
|
|
- const dataArray = vtkDataArray.newInstance({
|
|
|
|
- name:arrvalue[1],
|
|
|
|
- size:polydata.getNumberOfPoints()
|
|
|
|
- });
|
|
|
|
- dataArray.setData(scalarArray);
|
|
|
|
- polydata.getPointData().setScalars(dataArray);
|
|
|
|
-
|
|
|
|
- mapper.clearColorArrays();//强制重建颜色
|
|
|
|
- actor.getProperty().setOpacity(count.value);//设置错误的透明度使得页面重新加载 不设置不刷新页面
|
|
|
|
- renderWindow.render();
|
|
|
|
|
|
+ isstop.value=false;
|
|
|
|
+ count.value--;
|
|
|
|
+ changeScalar();
|
|
}
|
|
}
|
|
// 用来修改状态、触发更新的函数
|
|
// 用来修改状态、触发更新的函数
|
|
function increment() {
|
|
function increment() {
|
|
-
|
|
|
|
- console.log(arrvalue);
|
|
|
|
- isstop.value=false;
|
|
|
|
|
|
+ isstop.value=false;
|
|
count.value++;
|
|
count.value++;
|
|
- var scalars;
|
|
|
|
|
|
+ changeScalar();
|
|
|
|
+}
|
|
|
|
+function changeScalar(){
|
|
|
|
+ var scalars;
|
|
if(arrvalue[0]=='fire'){
|
|
if(arrvalue[0]=='fire'){
|
|
scalars=scalarFAll.value[count.value];
|
|
scalars=scalarFAll.value[count.value];
|
|
}else {
|
|
}else {
|
|
@@ -294,14 +255,15 @@ function increment() {
|
|
}
|
|
}
|
|
const polydata = mapper.getInputData();
|
|
const polydata = mapper.getInputData();
|
|
const scalarArray=scalars.get(arrvalue[1]);
|
|
const scalarArray=scalars.get(arrvalue[1]);
|
|
- // console.log("scalarArray:",scalarArray);
|
|
|
|
|
|
+ console.log("scalarArray:",scalarArray);
|
|
const dataArray = vtkDataArray.newInstance({
|
|
const dataArray = vtkDataArray.newInstance({
|
|
name:arrvalue[1],
|
|
name:arrvalue[1],
|
|
size:polydata.getNumberOfPoints()
|
|
size:polydata.getNumberOfPoints()
|
|
});
|
|
});
|
|
dataArray.setData(scalarArray);
|
|
dataArray.setData(scalarArray);
|
|
|
|
+ getMinMax(scalarArray);
|
|
|
|
+ mapper.setScalarRange(min.value,max.value);//设置范围
|
|
polydata.getPointData().setScalars(dataArray);
|
|
polydata.getPointData().setScalars(dataArray);
|
|
-
|
|
|
|
mapper.clearColorArrays();//强制重建颜色
|
|
mapper.clearColorArrays();//强制重建颜色
|
|
actor.getProperty().setOpacity(count.value);//设置错误的透明度使得页面重新加载 不设置不刷新页面
|
|
actor.getProperty().setOpacity(count.value);//设置错误的透明度使得页面重新加载 不设置不刷新页面
|
|
renderWindow.render();
|
|
renderWindow.render();
|
|
@@ -354,13 +316,13 @@ function generateTicks(numberOfTicks) {
|
|
//安装时
|
|
//安装时
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
//div 绑定
|
|
//div 绑定
|
|
- const rootContainer =document.getElementById("vtkContainer");
|
|
|
|
- rootContainer.style.position = 'relative';
|
|
|
|
- rootContainer.style.width = '1000px';
|
|
|
|
- rootContainer.style.height = '500px';
|
|
|
|
- console.log("rootContainer:",rootContainer);
|
|
|
|
|
|
+ // const rootContainer =document.getElementById("vtkContainer");
|
|
|
|
+ // rootContainer.style.position = 'relative';
|
|
|
|
+ // rootContainer.style.width = '1000px';
|
|
|
|
+ // rootContainer.style.height = '500px';
|
|
|
|
+ // console.log("rootContainer:",rootContainer);
|
|
|
|
|
|
- renderWindowWith.setContainer(rootContainer);
|
|
|
|
|
|
+ // renderWindowWith.setContainer(rootContainer);
|
|
// fullScreenRenderer.setBackground([0,0,0]);
|
|
// fullScreenRenderer.setBackground([0,0,0]);
|
|
|
|
|
|
// const fullScreenRenderer = vtkFullScreenRenderWindow.newInstance();
|
|
// const fullScreenRenderer = vtkFullScreenRenderWindow.newInstance();
|