【three.js】CSS3DRenderer创建的标签怎么控制其角度?

如下图所示:
我想实现的是,点击一个构件的时候,标签弹窗会出现在构件上方,与构件是在一个平面上;如果我转到模型的另一面,再点击一个构件,也是在一个平面上,跟构件一个朝向。

想要的效果是这样:
image.png

但是,实际上,总是会出现各种角度偏转:
image.pngimage.pngimage.png

实在是搞不懂怎么实现了...

之前是用2D去实现的,但是会出现缩放的时候,弹窗大小比例不正确、弹窗与构件之间的距离有误等问题,所以,尝试多次后还是决定用3D来实现,没想到碰到这个问题,这如何解决?

补充问题:
lookAt的方法我是使用过的,但是会出现这样的奇葩情况
image.png
弹窗下面的指示线乱指,标签的角度也是很奇怪...

阅读 3.1k
2 个回答
✓ 已被采纳

你的需求其实就是面相摄像机,
在 update 里不断地 lookAt 摄像机即可。

用lookAt:

function onClickComponent(component) {
  label.position.copy(component.position);
  const cameraPosition = camera.position.clone();
  label.lookAt(cameraPosition);
  scene.add(label);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题