CSS3渲染器CSS3DRenderer.js和CSS3模型

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

郭隆邦老师threejs教程学习笔记

通过CSS3渲染器和模型可以把HTML元素像Threejs的网格模型Mesh或精灵模型Sprite一样去渲染。

CSS3技术,对HTML元素进行旋转缩放平移:CSS 3D 转换

Threejs渲染精灵模型Sprite的时候和网格模型的区别:

旋转三维场景的时候,如果通过相机控件OrbitControls旋转测试,Sprite矩形平面始终平行于canvas画布或屏幕,而矩形平面Mesh的姿态角度会跟着旋转,不一定平行于canvas画布。

扩展库CSS3DRenderer.js

threejs扩展库CSS3DRenderer.js提供了三个构造函数CSS3渲染器CSS3DRenderer、CSS3模型对象CSS3DObject、CSS3精灵模型CSS3DSprite

<!-- 引入threejs扩展库CSS3DRenderer.js -->
import { CSS3DRenderer, CSS3DObject, CSS3DSprite } from "three/examples/jsm/renderers/CSS3DRenderer.js";

CSS3渲染器CSS3DRenderer

CSS3渲染器CSS3DRenderer和常用的WebGL渲染器WebGLRenderer一样都是渲染器,只是渲染技术不同,WebGL渲染器WebGLRenderer解析渲染threejs模型对象的时候会调用底层的WebGL API,CSS3渲染器CSS3DRenderer解析渲染模型对象的时候不会调用底层的WebGL API,而是通过CSS3技术渲染对应的模型对象,CSS3DRenderer对应的模型对象本质上是HTML元素。

CSS3渲染器.setSize().render()等方法和属性功能和WebGL渲染器相同。webgl渲染器的部分属性和方法CSS3渲染是不具备的,比如设置背景颜色的方法.setClearColor()

// 创建CSS3渲染器
const CSS3Renderer = new CSS3DRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.getElementById('webgl').appendChild( renderer.domElement );
...
renderer.render( scene, camera );

CSS3对象模型CSS3DObject和CSS3精灵模型CSS3DSprite

CSS3渲染器CSS3DRenderer不能渲染Threejs的网格模型Mesh、精灵模型Sprite、线模型Line等。CSS3渲染器CSS3DRenderer能够渲染的模型对象是CSS3对象模型CSS3DObject、CSS3精灵模型CSS3DSprite

CSS3对象模型CSS3DObject的渲染方式类似threejs平面网格模型,CSS3精灵模型CSS3DSprite渲染方式类似threejs中精灵模型对象Sprite

tagFun(boxMesh,'tan');
tagFun(boxMesh2,'tan2');
tagFun(boxMesh3,'tan3');

function tagFun(mesh,id) {
  // 获得HTML元素创建的UI界面
  const tag = document.getElementById(id);
  // 把div元素包装为CSS3DObject模型
  const obj= new CSS3DObject(tag);
  // 把HTML元素包装为CSS3精灵模型CSS3DSprite
  // CSS3对象模型CSS3DObject插入到场景中
  scene.add(obj)
  obj.position.copy(mesh.position)
  obj.position.y += 80
  obj.position.x += 10
  //缩放CSS3DObject模型对象
  obj.scale.set(0.3, 0.3, 0.3)
}
// 把HTML元素包装为CSS3精灵模型CSS3DSprite
const CSS3DSprite = new CSS3DSprite( div );

与WebGL渲染器组合

可以在threejs代码中同时使用CSS3渲染器CSS3DRenderer和WebGL渲染器WebGLRenderer,通过WebGL渲染器WebGLRenderer渲染threejs的网格模型,然后通过CSS3渲染器CSS3DRenderer渲染HTML元素创建的UI界面作为threejs网格模型对象的标签,比如在物联网3D可视化项目中显示该网格模型的相关数据信息。

const renderer = new THREE.WebGLRenderer();
renderer.setSize(width, height);
renderer.setClearColor(0x222222, 1);
//WebGL渲染器输出的canvas画布绝对定位,以免影响CSS3渲染的HTML元素显示
renderer.domElement.style.position = 'absolute';
document.body.appendChild(renderer.domElement);
// 创建CSS3渲染器
const CSS3Renderer = new THREE.CSS3DRenderer();
CSS3Renderer.setSize(width, height);
document.body.appendChild(CSS3Renderer.domElement);
// 渲染函数
function render() {
  // 渲染threejs场景中的网格模型Mesh等对象
  renderer.render(scene, camera);
   // 渲染`CSS3DSprite`或`CSS3DObject`模型对象包装的HTML元素
  CSS3Renderer.render(scene, camera);
  requestAnimationFrame(render);
}

CSS3DObject表示的模型标签和threejs平面网格模型表示的模型标签效果一样,CSS3DSprite表示的模型标签和threejs精灵模型Sprite渲染效果一样。

通过空间OrbitControls旋转缩放threejs三维场景中的时候,CSS3DSpriteCSS3DObject包装的HTML元素同样会跟随对应的三维场景Scene旋转缩放。

const controls = new OrbitControls(camera,renderer.domElement);

效果图:

Threejs进阶之七:使用CSS3DRenderer渲染HTML标签 通过案例详细介绍了CSS3DRenderer渲染HTML标签的方法注意事项,包括CSS3DObjectCSS3DSprite的用法特点 阅读详情

相关推荐

Threejs进阶之十三:CSS3DRenderer与Tween.js实现粒子小球按规律变化

CSS3DRenderer结合tween.js实现粒子小球的各种变化效果

九仞山的专栏 1301

Three.js前端3D开发:使用CSS3DRenderer渲染全景图

使用 CSS3DRenderer 渲染全景图

Threejs进阶之五:使用CSS2DRenderer模型添加HTML标签

详细介绍了CSS2DRenderer的使用,结合模型Raycaster光线投射,实现了选中模型弹出标签显示信息的效果

九仞山的专栏 3861

threejs CSS3DRenderer添加标签并设置朝向摄像机

CSS3D标签不面向摄像机的解决方法

weixin_42674490的博客 2646

THREE.JS 使用CSS2DRenderer/CSS3DRenderer模型增加标签

THREE.JS提供的方式是在标签DOM上另外套了一个DOM,通过对这个外面DOM进行操作从而影响我们的标签。从页面效果来看,两者最大的区别就是:CSS2Drender不会随着模型的缩放而改变,而CSS3Drender相反。

qq_44426236的博客 7434

threejs元素周期表-CSS3DRenderer

threejs元素周期表-CSS3DRenderer

qq_43157227的博客 2473

在Three.js中使用CSS3DRendererCSS3DSprite实现模型标签文字+指示线

在`Three.js`中,使用`CSS3DRenderer``CSS3DSprite`可以轻松地实现模型标签文字的效果,为场景中的模型提供更直观的信息展示。本文将介绍如何使用这两个工具来实现模型标签文字,并提供相应的代码示例。

前端开发工程师 3820

Three.js开发必备:场景标注标签信息最全详解包含案例

通过CSS2DRenderer将HTML元素作为标签添加到3D场景中,引入扩展库、创建HTML标签、转换为CSS2模型对象及配置CSS2DRenderer等基础步骤详解,分析了利用CSS3DRenderer渲染HTML标签的方法,以及如何解决背面显示标签偏移等问题。此外,还介绍了使用CSS3DSprite进行精灵模型标签标注的技术,包括设置精灵模型、缩放定位批量创建标签,使用Sprite作为标签时,如何从canvas画布创建纹理对象并应用于场景标注,提供了处理外部图片资源的方案...

前端开发工程师 2052

2023-05-25

threejs引入CSS3Dobject模型后,显示不出来的问题 df adf adfasdf asdfs

qq_27741607的博客 1134

three.js(使用总结一)

three.js使用总结 1、引入需要 的文件 <script src="./build/three.min.js"></script> <!-- 此处引入threejs基础类 --> <script src="CSS3DRenderer.js"></script> <!-- 此处引入CSS3Drenderer.js类 --> <!-- 以上两个文件,在下载threejs的时候就有的,引入就好 --> 2、要在前端页面中展

qq_52054730的博客 1126

Three.js 快速入门教程【二十一】CSS3D渲染器CSS3DRendererCSS3DObject 、CSS3DSprite)介绍,实现场景中物体标注标签信息

本文介绍了如何在Three.js中使用CSS3DRenderer渲染3D场景中的标签,并对比了CSS3DRendererCSS2DRenderer的区别。CSS3DRenderer通过CSS 3D变换渲染HTML元素,支持完整的3D变换,元素可随相机视角产生透视效果,适合需要HTML元素深度融入3D空间的场景。而CSS2DRenderer仅支持2D变换,元素始终面向屏幕,适合静态标签信息提示。文章还详细讲解了CSS3DObject的创建与使用,并提供了示例代码,展示了如何在正方体圆柱体上标注标签。

前端(全栈)、AI Agent开发技术分享 2047

3D场景标注标签信息,three.js CSS 2D渲染器CSS2DRendererCSS 3D渲染器CSS3DRenderer(结合react)

CSS2DRendererCSS3DRenderer简介说明,threejs实现标签标注的三种方式介绍,react项目中使用CSS2DRendererCSS3DRenderer模型新增标签。

weixin_44242600的博客 2150

使用CSS3DRenderer/CSS2DRenderer模型上面添加html标签的一个demo

这里有一点需要注意一下,就是添加渲染器css3dRender,他会增加一个html标签,默认会叠加到父元素canvas上面,这样就会导致鼠标缩放,模型无法缩放,所以需要设置pointerEvents属性为none,解决html标签对画布的遮盖。思路:使用css3dRender添加一个图片,然后获取的位置坐标,使用css3dRender添加一个文字标签,也设置这个位置坐标,此外z轴设置一个高度,这样就可以放在图片的正上方。

m0_73918807的博客 1382

threejs CSS2DRenderer(HTML元素作为标签)

下面给大家介绍一个threejs的扩展库,通过可以把HTML元素作为标签标注三维场景。

u014291990的博客 3482

Three.js 快速入门教程【十九】CSS2DRendererCSS2D渲染器)介绍,实现场景中物体或设备标注标签信息

在 Three.js 中构建 3D 场景时,有时我们需要为场景中的设备或对象添加标签标注,以提供更多的信息。本文将讲解如何使用 CSS2DRenderer 在 Three.js 场景中实现设备标签标注CSS2DRenderer 是 Three.js 提供的一个非常有用的工具,它允许我们使用 CSS HTML 来创建 2D 元素,并将它们渲染到 3D 场景中,使其能够跟随场景中的对象移动旋转,同时保持 2D 界面的灵活性易操作性。

前端(全栈)、AI Agent开发技术分享 2014

CSS2DRenderer—HTML元素作为模型标签

threejs扩展库CSS2渲染器,通过CSS2渲染器不需要自己再进行坐标计算变换,该模块已经封装,简而言之就是通过CSS2渲染器库很容易实现把HTML元素作为模型的标签。

OYlan_的博客 720

Three.js CSS2D/CSS3D渲染器

CSS2DRenderer 渲染器用于在 3D 场景中渲染纯 2D 的 HTML 元素。这些元素不会具有 3D 透视效果,但可以与 3D 对象一起移动旋转,非常适合用于标签、注释等需要固定显示的内容。CSS3DRenderer 渲染器用于在 3D 场景中渲染具有 3D 透视效果的 HTML 元素。相比 CSS2DRenderer,它可以让 HTML 元素更好地融入 3D 场景,具有真实的空间感。

mad970906的博客 1064

深入了解 Three.js 中的 CSS2DRenderer

CSS2DRenderer 是 Three.js 中的一种渲染器,它允许我们在 Three.js3D 场景中渲染 HTML 元素。这些 HTML 元素通常是常见的 DOM 元素,如divspanp等,可以被定位并应用 CSS 样式,而不像 WebGLRenderer 那样直接渲染 3D 图形。

qq_34820371的博客 1199

three.js标签标注、场景信息标注——系统总结,总有一款适合你

下面是具体的文字总结。

u014291990的博客 7329
上一篇: CSS2DRenderer—HTML元素作为模型标签
下一篇: 标签坐标问题—局部、世界坐标
OYlan_
博客等级 码龄4年 85粉丝 13原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值