找回密码
 立即注册
首页 业界区 业界 ThreeJs-14HTML混合3D渲染

ThreeJs-14HTML混合3D渲染

幽淆 前天 19:17
一.css渲染器基本使用

使用场景:经常在一些3D物体左右还会跟随一些文字等,实际都是标签,应用场景非常广泛
1.png

先完成基本的3D,月球围绕地球转,这里就是给月球加了sin函数
2.png

3.gif

然后现在就先创建一个标签体出来
4.png

2D渲染器出了暴露出来一个渲染器还有一个对象器
5.png

6.png

但是到这里并不会显示出来,还要创建2D渲染器跟渲染器差不多
7.png

这样就是出来两个一样大小的元素,但是需要重叠一下
8.png

设置固定定位,并且跟随render一起渲染
9.png

10.png

如果发现此时由于2D渲染器在上面,导致3D的缩放旋转等不生效
11.png

12.png

二.添加多个元素标签跟随物体移动

首先添加月球div
13.png

给月球添加上后会自动跟着球体走
14.gif

再在地球上标注中国
这里需要注意一下,如果想字跟着转动走,需要设置xyz轴,特别是z轴
15.png

16.gif

三.使用射线碰撞来检测标签显示隐藏

在刚才的案例中有两个问题
一个是当我们调整浏览器视图尺寸,文字的定位就出现问题了
17.png

这个需要在不断运动中,重新计算2D渲染器尺寸就可以了
18.png

第二个是,当我们移动到美洲这边,中国都被挡住了,但是文字还在
这里的思路是这样的
从中国两个字和摄像机打一条射线过去,通过穿过的物体来判断,先判断有没有,如果没有就要显示,因为穿过去没有物体只有两种情况
一个是中国在最左边,一个是在最右边此时射线穿过去,是没有物体的,但是这个时候中国已经出来了所以要显示
19.png

然后是有的情况下,有的情况下,文字在前和在后,射线穿过去都会有,这个时候我们通过文字到摄像机的距离和物体到摄像机的距离判断,如果物体到摄像机的距离比文字还要小,说明文字在背后去了不显示,这里注意3D物体有个方法可以计算到某一个点的距离
实例化射线
20.png

21.png

22.gif


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册