three.js中添加html跟随模型移动

  利用CSS2DRenderer+CSS2DObject

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

//再创建 

		var cont = document.getElementById('box');//放three场景的div
		
		var labelRenderer = new CSS2DRenderer(); //使用HTML渲染器
		    labelRenderer.setSize(window.innerWidth, window.innerHeight);
			cont.appendChild(labelRenderer.domElement)
			labelRenderer.domElement.style.position = 'fixed';
			labelRenderer.domElement.style.top = '0px';
			labelRenderer.domElement.style.left = '0px';
			labelRenderer.domElement.style.zIndex = '0';//设置层级

//如果使用了轨道OrbitControls  那么就要换成labelRenderer.domElement 否则轨道会失效
//controls = new OrbitControls(camera, renderer.domElement);
  controls =new OrbitControls(camera, labelRenderer.domElement);

//然后再创建html  添加到场景中
    const chinaDiv = document.createElement('div');
				chinaDiv.className = "pop-box";
				chinaDiv.innerHTML = `
					<div class="monitor_tips_content">
                    <div class=""><span>编号:WD-001</span></div>
                    <div class=""><span>类型:温度</span></div>
                    <div class=""><span>位置:桥梁缝隙</span></div>
                    </div>  `;
				var chinaLabel = new CSS2DObject(chinaDiv);
				chinaLabel.position.set(-66.34389224464286,13.52034541273466,4.487919201971682);//三维位置xyz
                scene.add(chinaLabel)


//最后再添加labelRenderer.render(scene, camera);到 animate中
    function animate() {
					requestAnimationFrame(animate);
					controls.update();
					renderer.render(scene, camera);
					labelRenderer.render(scene, camera);
				}
				animate();

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值