Three.js中的div标签跟随(模型弹框)
Three.js中的div标签跟随(模型弹框)
参考官方案例
核心渲染器
three.js-master\examples\js\renderers\CSS2DRenderer.js
用法
-
把div存为变量
var testDiv = document.getElementById('testDiv');
-
把上述div对象转化为一个CSS2DObject对象
var moonLabel = new THREE.CSS2DObject( testDiv ); //前两个参数是对于屏幕xy坐标,可以取负数 第三个不清楚,按道理应该是z轴坐标,不知道怎么体现 moonLabel.position.set( 0, 1, 0 );
-
在模型中加入该CSS2DObject对象
textObject.add( moonLabel );
-
CSS2DRenderer渲染
var labelRenderer = new THREE.CSS2DRenderer(); labelRenderer.setSize( window.innerWidth, window.innerHeight ); labelRenderer.domElement.style.position = 'absolute'; labelRenderer.domElement.style.top = 0;
-
在animate中renderer前加入该渲染
var animate = function () { requestAnimationFrame( animate ); labelRenderer.render( scene, camera ); renderer.render( scene, camera ); };
注意事项
代码加入的位置很重要
-
上面的代码放在camera / OrbitControls之后, 否则相机控制不能用
-
如果要加button等,要在这段代码之后
var moonDiv = document.getElementById('testDiv'); var moonLabel = new THREE.CSS2DObject( moonDiv ); moonLabel.position.set( 0, 0, 20 ); group.add( moonLabel ); //上面是原来加的代码 //下面是需要加的一个button var btn = document.getElementById("btn"); document.body.appendChild(btn);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现