当前位置: 首页 > news >正文

threejs 添加css3d标签 vue3

如图所示,给收费站标注标签。步骤如下:

一、引入

import {CSS3DRenderer,CSS3DObject,
} from "three/examples/jsm/renderers/CSS3DRenderer";

二、

//一、申明css3渲染器
const label3DRenderer = ref()//二、创建css3d渲染器--将渲染器加入body
const css3dRenderer = () => {label3DRenderer.value = new CSS3DRenderer();label3DRenderer.value.setSize(window.innerWidth, window.innerHeight);label3DRenderer.value.domElement.style.position = "absolute";// 相对标签原位置位置偏移大小label3DRenderer.value.domElement.style.top = "0px";label3DRenderer.value.domElement.style.left = "0px";//设置.pointerEvents=none,以免模型标签HTML元素遮挡鼠标选择场景模型label3DRenderer.value.domElement.style.pointerEvents = "none";document.body.appendChild(label3DRenderer.value.domElement);
};
//三、创建一个函数返回一个div标签
const tag = (name) => {// 创建div元素(作为标签)var div = document.createElement("div");div.innerHTML = name;div.classList.add("tag");//div元素包装为CSS3模型对象CSS3DObjectvar label = new CSS3DObject(div);div.style.pointerEvents = "none"; //避免HTML标签遮挡三维场景的鼠标事件// 设置HTML元素标签在three.js世界坐标中位置// label.position.set(x, y, z);//缩放CSS3DObject模型对象label.scale.set(0.02, 0.02, 0.02); //根据相机渲染范围控制HTML 3D标签尺寸// label.rotateY(Math.PI / 2); //控制HTML标签CSS3对象姿态角度// label.rotateX(-Math.PI/2);return label; //返回CSS3模型标签
};//四、加载模型以后获取每个标签的位置把标签添加进senceloader.load("./收费站.glb", (gltf) => {isShowLoding.value = falsescene.add(gltf.scene)let group = gltf.scene.getObjectByName("车道中间标注2");group.children.map(item => {const label = tag(item.name)var pos = new THREE.Vector3();item.getWorldPosition(pos); //获取obj世界坐标、label.position.copy(pos);scene.add(label)})}, (xhr) => {});五、别忘记调用之前封装的函数(创建css3渲染器)css3dRenderer()

http://www.xdnf.cn/news/337069.html

相关文章:

  • [数据处理] 6. 数据可视化
  • 商业中的人工智能 (AI) 是什么?
  • 从0到1:用Lask/Django框架搭建个人博客系统(4/10)
  • 每日学习:DAY24
  • 第三节第一部分:Static修饰类变量、成员变量
  • pip下载tmp不够
  • ASP.NET Core 中实现 Markdown 渲染中间件
  • 信创生态核心技术栈:数据库与中间件
  • 《智能网联汽车 自动驾驶功能场地试验方法及要求》 GB/T 41798-2022——解读
  • Mac 平台 字体Unicode范围分析器
  • 使用迁移学习的自动驾驶汽车信息物理系统安全策略
  • MySQL数据库创建、删除、修改
  • Android NDK版本迭代与FFmpeg交叉编译完全指南
  • ubuntu24.04安装anaconda
  • SwiftData 数据持久化解决方案
  • 如何使用极狐GitLab 软件包仓库功能托管 python?
  • git设置tabsize
  • Kubernetes client-go 客户端类型与初始化指南
  • 驱动开发硬核特训 · Day 30(上篇):深入理解 I2C 总线驱动模型(以 at24 EEPROM 为例)
  • Dynamic Causal Modeling在医疗AI领域的编程案例与应用研究
  • 〖 Linux 〗解决 VS Code 远程连接服务器的常见问题
  • iPhone手机连接WiFi异常解决方法
  • 【hadoop】案例:Sqoop迁移仓库数据
  • 5、开放式PLC梯形图编程组件 - /自动化与控制组件/open-plc-programming
  • Lua学习笔记
  • 无刷电机控制算法策略
  • AI驱动的制造工艺:系统化探索与创新
  • 【hadoop】Hbase java api 案例
  • 【嵌入式开发-CAN】
  • 美化IDEA注释:Idea 中快捷键 Ctrl + / 自动注释的缩进(避免添加注释自动到行首)以及 Ctrl + Alt + l 全局格式化代码的注释缩进