基于vue与three.js给模型添加标签(CSS2DRenderer与CSS2DObject)

第一步,引入

import {
  CSS2DRenderer,
  CSS2DObject,
} from "three/examples/jsm/renderers/CSS2DRenderer.js";

第二步,创建渲染器

this.tagRenderer = new CSS2DRenderer();
      this.tagRenderer.setSize(this.w, this.h);
      this.tagRenderer.domElement.style.position = "absolute";
      this.tagRenderer.domElement.style.zIndex = 9999999;
      this.tagRenderer.domElement.style.top = "0px";
      this.tagRenderer.domElement.style.pointerEvents = "none";
      this.$refs.three_container.appendChild(this.tagRenderer.domElement);

this.$refs.three_container为3D渲染的容器,注意zindex必须足够高

animate方法:

 animate() {
      if (!this.renderer) {
        return;
      }
      requestAnimationFrame(this.animate);
      this.controls.update(); // 更新控制器状态
      TWEEN.update();
      this.renderer.render(this.scene, this.camera);
      if (!this.tagRenderer) {
        return;
      }
      this.tagRenderer.render(this.scene, this.camera);
    },

第三步,创建dom

 this.options.forEach((item) => {
        if (item.position) {
          let domEle = document.createElement("div");
          domEle.className = "tag";
          domEle.innerHTML = `<div>${item.label}</div>
          <div>今日电耗:1892.01kwh</div>
          `;
          let domEleObj = new CSS2DObject(domEle);
          domEleObj.position.set(
            item.position.x,
            item.position.y,
            item.position.z
          );

          this.scene.add(domEleObj);
        }
      });
::v-deep .tag {
  box-shadow: 0 0 2px #00ffff inset;
  background: linear-gradient(#00ffff, #00ffff) left top;
  background-repeat: no-repeat;
  background-size: 1px 6px, 6px 1px;
  background-color: rgba(0, 0, 0, 0.8);
  color: #ffffff;
  font-size: 12px;
  padding: 4px 10px;
  position: absolute;
  z-index: 9;
  display: inline;

}

得用deep,不然容易不生效 

相关推荐

  1. Threejs使用CSS2DRenderer后OrbitControls控制器不能用了

    2023-12-21 16:26:02       12 阅读
  2. CSS2DObject 形成3D模型二维屏幕平面label

    2023-12-21 16:26:02       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-21 16:26:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-21 16:26:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-21 16:26:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-21 16:26:02       20 阅读

热门阅读

  1. C++初阶-反向迭代器的模拟实现

    2023-12-21 16:26:02       34 阅读
  2. c++打怪游戏(1.1.0)

    2023-12-21 16:26:02       29 阅读
  3. vue封装全局获取焦点指令

    2023-12-21 16:26:02       41 阅读
  4. 超实用的Kafka集群搭建(有zk版)

    2023-12-21 16:26:02       48 阅读
  5. 阿里云数据传输服务DTS

    2023-12-21 16:26:02       33 阅读
  6. Qt qlistwidget自绘,隔行换色

    2023-12-21 16:26:02       35 阅读
  7. Linux 命令备忘录

    2023-12-21 16:26:02       29 阅读
  8. React中如何避免不必要的render?

    2023-12-21 16:26:02       33 阅读