更换模型背景
							parent
							
								
									a78535f6a7
								
							
						
					
					
						commit
						2a4b42ba0b
					
				| 
						 | 
					@ -5,7 +5,7 @@
 | 
				
			||||||
  "author": "若依",
 | 
					  "author": "若依",
 | 
				
			||||||
  "license": "MIT",
 | 
					  "license": "MIT",
 | 
				
			||||||
  "scripts": {
 | 
					  "scripts": {
 | 
				
			||||||
    "dev": "vite",
 | 
					    "dev": "vite --host=0.0.0.0",
 | 
				
			||||||
    "build:prod": "vite build",
 | 
					    "build:prod": "vite build",
 | 
				
			||||||
    "build:stage": "vite build --mode staging",
 | 
					    "build:stage": "vite build --mode staging",
 | 
				
			||||||
    "preview": "vite preview"
 | 
					    "preview": "vite preview"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,13 +6,21 @@ const bimStore = defineStore(
 | 
				
			||||||
            activateTree: {},
 | 
					            activateTree: {},
 | 
				
			||||||
            activateDevice: {},
 | 
					            activateDevice: {},
 | 
				
			||||||
            activateApplication: {},
 | 
					            activateApplication: {},
 | 
				
			||||||
            deviceNum: ''
 | 
					            deviceNum: '',
 | 
				
			||||||
 | 
					            activateMenu: {
 | 
				
			||||||
 | 
					                name: '建筑信息',
 | 
				
			||||||
 | 
					        background: '#202a60'
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }),
 | 
					        }),
 | 
				
			||||||
        actions: {
 | 
					        actions: {
 | 
				
			||||||
            // 菜单
 | 
					            // 菜单
 | 
				
			||||||
            setActivateIndex(index) {
 | 
					            setActivateIndex(index) {
 | 
				
			||||||
                this.activateIndex = index;
 | 
					                this.activateIndex = index;
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            setActivateMenu(item) {
 | 
				
			||||||
 | 
					                this.activateMenu = item;
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
            // 建筑树选中
 | 
					            // 建筑树选中
 | 
				
			||||||
            setActivateTree(item) {
 | 
					            setActivateTree(item) {
 | 
				
			||||||
                this.activateTree = item;
 | 
					                this.activateTree = item;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,21 +1,25 @@
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
    <div class="menuDiv">
 | 
					    <div class="menuDiv">
 | 
				
			||||||
        <div v-for="(item, index) of menuList" :key="index" @click="changeMenu(index)"
 | 
					        <div v-for="(item, index) of menuList" :key="index" @click="changeMenu(index, item)"
 | 
				
			||||||
            :class="{ 'activateTab': index == activateIndex }">{{ item.name }}</div>
 | 
					            :class="{ 'activateTab': index == activateIndex }">{{ item.name }}</div>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
<script setup>
 | 
					<script setup>
 | 
				
			||||||
import bimStore from '@/store/modules/bim';
 | 
					import bimStore from '@/store/modules/bim';
 | 
				
			||||||
 | 
					import { onMounted } from 'vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const menuList = [
 | 
					const menuList = [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        name: '建筑信息'
 | 
					        name: '建筑信息',
 | 
				
			||||||
 | 
					        background: '#000000'
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        name: '资产信息'
 | 
					        name: '资产信息',
 | 
				
			||||||
 | 
					        background: '#2b2f48'
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        name: 'BIM应用'
 | 
					        name: 'BIM应用',
 | 
				
			||||||
 | 
					        background: '#212b5f'
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,11 +27,16 @@ const data = reactive({
 | 
				
			||||||
    activateIndex: 0
 | 
					    activateIndex: 0
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					onMounted(() => {
 | 
				
			||||||
 | 
					    changeMenu(0, menuList[0]);
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const { activateIndex } = toRefs(data);
 | 
					const { activateIndex } = toRefs(data);
 | 
				
			||||||
const emit = defineEmits(['changeMenu'])
 | 
					const emit = defineEmits(['changeMenu'])
 | 
				
			||||||
const changeMenu = (index) => {
 | 
					const changeMenu = (index, item) => {
 | 
				
			||||||
    activateIndex.value = index;
 | 
					    activateIndex.value = index;
 | 
				
			||||||
    bimStore().setActivateIndex(index);
 | 
					    bimStore().setActivateIndex(index);
 | 
				
			||||||
 | 
					    bimStore().setActivateMenu(item);
 | 
				
			||||||
    emit('changeMenu', index)
 | 
					    emit('changeMenu', index)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
<script setup>
 | 
					<script setup>
 | 
				
			||||||
import { onMounted, ref } from 'vue';
 | 
					import { onMounted, ref,watch } from 'vue';
 | 
				
			||||||
import * as THREE from 'three';
 | 
					import * as THREE from 'three';
 | 
				
			||||||
import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js";
 | 
					import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js";
 | 
				
			||||||
import { DRACOLoader} from "three/examples/jsm/loaders/DRACOLoader.js";
 | 
					import { DRACOLoader} from "three/examples/jsm/loaders/DRACOLoader.js";
 | 
				
			||||||
| 
						 | 
					@ -80,9 +80,17 @@ Bus.on('clickApplication', e => {
 | 
				
			||||||
    console.log('clickApplication');
 | 
					    console.log('clickApplication');
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					watch(() => bimStore().activateMenu, value => {
 | 
				
			||||||
 | 
					    console.log(1,scene);
 | 
				
			||||||
 | 
					    // 更换场景颜色
 | 
				
			||||||
 | 
					    scene.background = new THREE.Color(value.background);
 | 
				
			||||||
 | 
					    toHomeView();
 | 
				
			||||||
 | 
					},{ deep: true });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const init = () => {
 | 
					const init = () => {
 | 
				
			||||||
    // 场景
 | 
					    // 场景
 | 
				
			||||||
    scene = new THREE.Scene();
 | 
					    scene = new THREE.Scene();
 | 
				
			||||||
 | 
					    scene.background = new THREE.Color(bimStore().activateMenu.background);
 | 
				
			||||||
    // 相机
 | 
					    // 相机
 | 
				
			||||||
    camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 0.1, 1000);
 | 
					    camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 0.1, 1000);
 | 
				
			||||||
    // camera.position.z = 5;  
 | 
					    // camera.position.z = 5;  
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div class="app-container">
 | 
					  <div class="app-container">
 | 
				
			||||||
    <!-- 场景模型 -->
 | 
					    <!-- 场景模型 -->
 | 
				
			||||||
    <ThreeView background="#202a60" light="0xfffafa" :sceneUrl="sceneUrl" v-if="sceneUrl !== ''"></ThreeView>
 | 
					    <ThreeView light="0xfffafa" :sceneUrl="sceneUrl" v-if="sceneUrl !== ''"></ThreeView>
 | 
				
			||||||
    <!-- <ThreeModel /> -->
 | 
					    <!-- <ThreeModel /> -->
 | 
				
			||||||
    <!-- 底部菜单 -->
 | 
					    <!-- 底部菜单 -->
 | 
				
			||||||
    <MenuTab @changeMenu="changeMenu"></MenuTab>
 | 
					    <MenuTab @changeMenu="changeMenu"></MenuTab>
 | 
				
			||||||
| 
						 | 
					@ -55,7 +55,7 @@ import DeviceDetial from './components/DeviceDetial.vue';
 | 
				
			||||||
import bimStore from '@/store/modules/bim';
 | 
					import bimStore from '@/store/modules/bim';
 | 
				
			||||||
import { computed } from 'vue';
 | 
					import { computed } from 'vue';
 | 
				
			||||||
const data = reactive({
 | 
					const data = reactive({
 | 
				
			||||||
  sceneUrl: '',
 | 
					  sceneUrl: '/jz/glb/scene.gltf',
 | 
				
			||||||
  equimentInfo: {},
 | 
					  equimentInfo: {},
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue