threejs得WebGLRenderer+CSS3DRenderer结合使用

文章目录

    • 概要
    • 1:CSS3DRenderer+WebGLRenderer出现鬼畜bug
    • 2:解决思路
    • 3:代码示例
    • 小结

概要

在使用threejs显示label发现,人家自带了CSS3DRenderer/CSS2DRenderer.

1:CSS3DRenderer+WebGLRenderer出现鬼畜bug

第一种:在二个render添加control得时候如果WebGLRenderer在最上层会出现遮盖CSS3DRenderer。
第二种:如果CSS3DRenderer在最上层会触发二个control抖动情况。

2:解决思路

二个render使用同一个camera,使用二个control(必须二个control.update()—都要跑起来)。

3:代码示例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {margin: 0;padding: 0;}.web-gl {position: absolute;width: 100%;height: 100%;}</style><script async src="https://unpkg.com/es-module-shims@1.3.6/dist/es-module-shims.js"></script><script type="importmap">{"imports": {"three": "https://unpkg.com/three@0.155/build/three.module.js","three/addons/": "https://unpkg.com/three@0.155/examples/jsm/"}}</script>
</head><body><div class="web-gl"></div><script type="module">import * as THREE from 'three'import { OrbitControls } from 'three/addons/controls/OrbitControls.js'import { CSS3DRenderer, CSS3DObject, CSS3DSprite } from 'three/addons/renderers/CSS3DRenderer.js';const scene = new THREE.Scene();scene.background = nullconst camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);const renderer = new THREE.WebGLRenderer({alpha: true});renderer.setSize(window.innerWidth, window.innerHeight);renderer.domElement.style.position = 'absolute'renderer.domElement.style.top = '0'document.querySelector('.web-gl').appendChild(renderer.domElement);const css3Renderer = new CSS3DRenderer();css3Renderer.setSize(window.innerWidth, window.innerHeight);css3Renderer.domElement.style.position = 'absolute'css3Renderer.domElement.style.top = '0'document.querySelector('.web-gl').appendChild(css3Renderer.domElement);const testDiv = document.createElement('div')testDiv.innerHTML = 'hsadasd'testDiv.style.background = 'red'const css3Object = new CSS3DSprite(testDiv)css3Object.scale.set(0.5, 0.5, 0.5)scene.add(css3Object)const light = new THREE.AmbientLight(0xffffff, 1); // soft white lightscene.add(light);const geometry = new THREE.BoxGeometry(1, 1, 1);const material = new THREE.MeshStandardMaterial({ color: 0x00ff00 });const cube = new THREE.Mesh(geometry, material);cube.rotation.x = Math.PI / 4cube.rotation.y = Math.PI / 4cube.scale.set(10, 10, 10)scene.add(cube);camera.position.z = 20;const controls = new OrbitControls(camera, renderer.domElement);const controls2 = new OrbitControls(camera, css3Renderer.domElement);function animate() {requestAnimationFrame(animate);renderer.render(scene, camera);css3Renderer.render(scene, camera)controls.update();controls2.update()};animate();</script>
</body></html>

小结

提示:这里可以添加总结

例如:

提供先进的推理,复杂的指令,更多的创造力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/67253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(10)(10.8) 固件下载

文章目录 ​​​​​​​前言 10.8.1 固件 10.8.2 Bootloader 10.8.3 APM2.x Autopilot 10.8.4 许可证 10.8.5 安全 前言 固件服务器(firmware server)可提供所有飞行器的最新固件。其中包括&#xff1a; CopterPlaneRoverAntennaTrackerSub 本页提供了一些被视为&quo…

JavaWeb | 常用的HTML(JavaWeb)标签

目录&#xff1a; HTML简介HTML的基本结构HTML的常用标签&#xff1a;“标题” 标签“换行” 标签“段落” 标签“水平线” 标签“文字” 标签“粗体” 标签“下划线” 标签“斜体” 标签“上标” 标签“下标” 标签“闪烁” 标签表示 “空格”“列表” 标签&#xff1a;无序列…

window 常用基础命令

0、起步 0-1) 获取命令的参数指引 netstat /? 0-2) 关于两个斜杠&#xff1a; window 文件路径中使用反斜杠&#xff1a;\ linux 文件路径中使用&#xff1a;/ 1、开关机类指令 shutdown /s # 关机shutdown /r # 重启shutdown /l …

java 常用 jar 包

1 Lombok 是一个 java 类库&#xff0c;它利用注解方式自动生成 java bean 中 getter、setter、equals 等方法&#xff0c;还能自动生成 logger、toString、hashCode、builder 等 日志相关变量、Object 类方法或设计模式相关的方法&#xff0c;能够让你的 代码更简洁&#xff0…

C# void 关键字学习

C#中void关键字是System.Void的别名&#xff1b; 可以将 void 用作方法&#xff08;或本地函数&#xff09;的返回类型来指定该方法不返回值&#xff1b; 如果C&#xff03;方法中没有参数&#xff0c;则不能将void用作参数&#xff1b;这是与C语言不同的&#xff0c;C语言有…

机器人制作开源方案 | 桌面级全向底盘--本体说明+驱动控制

一、本体说明 1. 底盘概述 该底盘是一款模块化的桌面级应用型底盘&#xff0c;基于应用级软件架构设计、应用级硬件系统设计、典型应用型底盘机械系统设计。 底盘本体为一个采用半独立刚性悬挂的四驱全向底盘。 2. 软件环境介绍 操作系统&#xff1a;Ubuntu18.04系统。基于Deb…

【STM32】学习笔记(串口通信)

串口通信 通信接口硬件电路电平标准USARTUSART框图 通信接口 串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信&#…

多线程与高并发——并发编程(4)

文章目录 四、阻塞队列1 基础概念1.1 生产者消费者概念1.2 JUC阻塞队列的存取方法2 ArrayBlockingQueue2.1 ArrayBlockingQueue的基本使用2.2 生产者方法实现原理2.2.1 ArrayBlockingQueue的常见属性2.2.2 add方法2.2.3 offer方法2.2.4 offer(time,unit)方法2.2.5 put方法2.3 消…

深入浅出AXI协议(5)——数据读写结构读写响应结构

目录 一、前言 二、写选通&#xff08;Write strobes&#xff09; 三、窄传输&#xff08;Narrow transfers&#xff09; 1、示例1 2、示例2 四、字节不变性&#xff08;Byte invariance&#xff09; 五、未对齐的传输&#xff08;Unaligned transfers&#xff09; 六…

MySQL基本查询

MySQL基本查询 表的增删查改Create(增)Retrieve&#xff08;查&#xff09;select列全列查询指定列查询查询字段为表达式为查询结果指定别名结果去重 where 条件英语不及格的同学的英语成绩语文成绩在 [80, 90] 分的同学及语文成绩数学成绩是 58 或者 59 或者 98 或者 99 分的同…

React的 虚拟DOM创建

React是一个流行的JavaScript库&#xff0c;用于构建用户界面。它通过使用虚拟DOM来提高性能和渲染速度。本文将详细介绍React的虚拟DOM的创建方式、用法和案例&#xff0c;以及相关代码和解释。 虚拟DOM是什么&#xff1f; 虚拟DOM是React的一个重要概念&#xff0c;它是一个…

华为云服务

【计算】 弹性云服务器ECS 弹性云服务器&#xff08;Elastic Cloud Server&#xff0c;ECS&#xff09;是由CPU、内存、操作系统、云硬盘组成的基础的计算组件。弹性云服务器创建成功后&#xff0c;您就可以像使用自己的本地PC或物理服务器一样&#xff0c;在云上使用弹性云服…

查看 Linux 配置

目录 1. 查看 Linux 配置1.1. CPU1.2. 内存 1. 查看 Linux 配置 1.1. CPU cat proc/cpuinfolscpu1.2. 内存 freetop# htop 是 top 的一个增强版, 它提供了更多的功能和可视化界面。在终端中输入以下命令即可查看: htop; # htop 界面中, 可以看到系统中运行的进程, 以及它们占…

【C#项目实战】控制台游戏——勇士斗恶龙(1)

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;最近开始正式的步入学习游戏开发的正轨&#xff0c;想要通过写博客的方式来分享自己学到的知识和经验&#xff0c;这就是开设本专栏的目的。希望…

因为axios请求后端,接收不到token的问引出的问题

vue axios请求后端接受不到token的问题。 相关概念 什么是跨域&#xff1f; 跨域指的是在浏览器环境下&#xff0c;当发起请求的域&#xff08;或者网站&#xff09;与请求的资源所在的域之间存在协议、主机或端口中的任何一个条件不同的情况。换句话说&#xff0c;只要协议、…

ubuntu下Anaconda安装与使用教程

前言 好久没用anaconda了&#xff0c;还记得之前用anaconda的欢乐时光。pytorch和paddlepaddle(飞浆)&#xff0c;怀念&#xff0c;可生活&#xff08;换了ubuntu系统之后&#xff09;教会了我残忍&#xff08;可能很难有机会再用windows的anaconda了&#xff09;。找个时间&a…

爬虫源码---爬取小猫猫交易网站

前言&#xff1a; 本片文章主要对爬虫爬取网页数据来进行一个简单的解答&#xff0c;对与其中的数据来进行一个爬取。 一&#xff1a;环境配置 Python版本&#xff1a;3.7.3 IDE:PyCharm 所需库&#xff1a;requests &#xff0c;parsel 二&#xff1a;网站页面 我们需要…

MSSQL-2008的备份恢复操作

MSSQL2008清理log事务 ---------------------------------- USE [master] go ALTER DATABASE GTD SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE GTD SET RECOVERY SIMPLE --简单模式 GO USE GTD GO DBCC SHRINKFILE (NGTD _Log , 11, TRUNCATEO…

【LeetCode】208.实现Trie(前缀树)

题目 Trie&#xff08;发音类似 "try"&#xff09;或者说 前缀树 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动补完和拼写检查。 请你实现 Trie 类&#xff1a; Trie() 初始化前缀…

虚拟机Ubuntu18.04系统使用时所需要的便利配置选项

文章目录 一、屏幕分辨率调节二、解决虚拟机和宿主机之间无法进行复制粘贴和自由移动文件&#xff1a;三、允许使用Git指令四、可以使用Cmake进行编译五、vi编辑器查看代码文件&#xff0c;类型linux的记事本 每次配置虚拟机&#xff0c;都需要重新安装配置一些能提供便利功能的…