feat(board): 添加机场模型标签渲染功能

- 在 AirportModel 组件中添加了 CSS2DRenderer用于渲染 HTML 标签
- 创建了 CSS2DObject 对象并添加到场景中,用于显示模型信息
- 调整了标签的位置并设置了相关样式- 在渲染循环中添加了标签渲染逻辑
boardTest
zch 8 months ago
parent 6577b3ac0c
commit 74bcc37ad5

@ -1,7 +1,9 @@
<template>
<div ref="modelContainer" class="model-container"
></div>
<div ref="modelContainer" class="model-container">
<div ref="modelInfo" class="model" style="display: inline-block">
DEMO展示<!-- TODO-->
</div>
</div>
</template>
@ -11,8 +13,8 @@ import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader';
import { MTLLoader } from 'three/examples/jsm/loaders/MTLLoader';
import {OrbitControls} from "three/examples/jsm/controls/OrbitControls";
import { CSS2DRenderer } from 'three/examples/jsm/renderers/CSS2DRenderer'// CSS2DRendererThree.jsCSS
import { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer'// CSS2DObjectCSSThree.js
import { CSS2DRenderer } from 'three/examples/jsm/renderers/CSS2DRenderer';// CSS2DRendererThree.jsCSS
import { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer';// CSS2DObjectCSSThree.js
export default {
name: 'AirportModel',
@ -28,7 +30,6 @@ export default {
initThree() {
//
const container = this.$refs.modelContainer;
// Three.js
const scene = new THREE.Scene();
//
@ -39,7 +40,7 @@ export default {
renderer.setSize(container.clientWidth, container.clientHeight);
// DOM
container.appendChild(renderer.domElement);
const labelRenderer = new CSS2DRenderer() // CSS2D3DHTML
// 0xffffff1
const light = new THREE.DirectionalLight(0xffffff, 1);
// 0xffffff1
@ -50,9 +51,23 @@ export default {
scene.add(light);
scene.add(ambient);
//
labelRenderer.setSize(window.innerWidth, window.innerHeight)
//
labelRenderer.domElement.style.position = 'absolute'
// 0
labelRenderer.domElement.style.top = '0'
//
labelRenderer.domElement.style.pointerEvents = 'none'
//
document.body.appendChild(labelRenderer.domElement);
let css2DObject = new CSS2DObject(this.$refs.modelInfo);
//TODO:
css2DObject.position.set(-430.7033258028898, 302.2550016498,-220.19044239352576);
scene.add(css2DObject);
// OrbitControls
const controls = new OrbitControls(camera, renderer.domElement);
//
controls.enablePan = true;
/* //是否自动旋转
@ -61,7 +76,6 @@ export default {
controls.enableZoom = true;
/* // 使动画循环使用时阻尼或自转 意思是否有惯性
controls.enableDamping = true;*/
// OrbitControls
controls.target = new THREE.Vector3(-433, 300, -217);
// OrbitControls使
@ -99,6 +113,8 @@ export default {
console.log(camera);*/
//
renderer.render(scene, camera);
//
labelRenderer.render(scene, camera);
};
//
animate();

Loading…
Cancel
Save