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

CSS2DRenderer调用方法:

import * as THREE from 'three'
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'
import { CSS2DRenderer, CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer'
this.labelRenderer = new CSS2DRenderer()
this.labelRenderer.setSize(window.innerWidth, window.innerHeight)
this.labelRenderer.domElement.style.position = 'absolute'
this.labelRenderer.domElement.style.top = '0px'
this.$refs.container && this.$refs.container.appendChild(this.labelRenderer.domElement)

// 调用元素为CSS2DObject
const text = document.getElementById("cityBox");
const cityText = new CSS2DObject(text);
cityText.name = "城市列表";
this.scene.add(cityText);
//渲染
animate() {
    requestAnimationFrame(this.animate)
    this.renderer && this.renderer.render(this.scene, this.camera)
    this.labelRenderer && this.labelRenderer.render(this.scene, this.camera)
    this.controls.update()
}

问题:

按住鼠标左键旋转整个场景,发现控制器OrbitControls操作没有效果,使用F12定位查看,发现CSS2DObject覆盖了整个浏览器顶层,遮挡了渲染场景

解决办法:

添加下面一行代码,可以解决以上问题,但是CSS2DObject的内容则不能交互,如点击等

this.labelRenderer.domElement.style.pointerEvents = 'none'

最后,经验证只需将控制器this.renderer.domElement改为this.labelRenderer.domElement即可释放出OrbitControls控制器。

this.controls = new OrbitControls(this.camera, this.renderer.domElement)

改成如下:

this.controls = new OrbitControls(this.camera, this.labelRenderer.domElement)

既解决了OrbitControls控制器不能使用的问题,同时CSS2DObject元素也可以交互

相关推荐

  1. Threejs使用CSS2DRendererOrbitControls控制器不能

    2024-04-28 18:56:03       35 阅读
  2. CSS3DRenderer, CSS3DSprite API 使用案例demo

    2024-04-28 18:56:03       41 阅读
  3. Threejs API——`OrbitControls`相机控件

    2024-04-28 18:56:03       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-28 18:56:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-28 18:56:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-28 18:56:03       82 阅读
  4. Python语言-面向对象

    2024-04-28 18:56:03       91 阅读

热门阅读

  1. 使用uniapp开发iOS应用有哪些优势和劣势

    2024-04-28 18:56:03       28 阅读
  2. 2024年水利水电安全员题库及答案

    2024-04-28 18:56:03       33 阅读
  3. Windows 11 轻量简单的美化方案

    2024-04-28 18:56:03       35 阅读
  4. C++的原子变量作用

    2024-04-28 18:56:03       33 阅读
  5. Docker-04 Docker镜像命令

    2024-04-28 18:56:03       30 阅读
  6. 微信小程序:7.页面渲染

    2024-04-28 18:56:03       32 阅读
  7. 缺陷管理(规范要求)

    2024-04-28 18:56:03       30 阅读
  8. 上海计算机学会2020年5月月赛C++丙组T4增长与翻倍

    2024-04-28 18:56:03       29 阅读