ThreeJs-14HTML混合3D渲染
一.css渲染器基本使用
使用场景:经常在一些3D物体左右还会跟随一些文字等,实际都是标签,应用场景非常广泛

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


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

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


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

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

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


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


二.添加多个元素标签跟随物体移动
首先添加月球div

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

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


三.使用射线碰撞来检测标签显示隐藏
在刚才的案例中有两个问题
一个是当我们调整浏览器视图尺寸,文字的定位就出现问题了

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

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

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



ThreeJs-14HTML混合3D渲染的更多相关文章
- 初探Stage3D(一) 3D渲染基础原理
		关于本文 本文主要想介绍一下3D渲染的基本流程,及怎样把一个三角形(0,1,0),(1,0,1),(0,0,1)最终渲染到屏幕上来.文章的目的是对3D渲染流程做一个简单的介绍,其中不涉及任何语言的AP ... 
- Threejs 使用的3D格式
		3D格式你可以通过任意软件导出(.3ds,dae等),但是threejs 无法使用, 1,http://www.blender.org/ 下载这款开源的3d软件 2,https://github.co ... 
- threejs 组成的3d管道,寻最短路径问题
		threejs 里面的3d管道的每个节点ID是唯一的,且对应x,y,z坐标.那么当需要从A点到B点的时候,可能出现有多条路径可走,此时便需要求出最短行走路径,因此用到一个寻路径算法.我们将问题简化如下 ... 
- 基于 HTML5 Canvas 的 3D 渲染引擎构建生产管控系统
		前言 大家好,老郑我又回来了.这一期为大家带来一个非常好玩的 demo,我们制作一套自己的 3D 管道控制系统,运用了( http://www.hightopo.com )HT 的 Graph3dVi ... 
- 基于 HTML5 Canvas 的 3D 渲染引擎构建机架式服务器
		前言 今天找到了 HT 的官网里的 Demo 网站( http://www.hightopo.com/demos/index.html ),看的我眼花缭乱,目不暇接. 而且 HT 的用户手册,将例子和 ... 
- 3D渲染集群,你了解多少?
		摘要:渲染是批处理运行模式,那能不能使用Docker容器技术,做大规模的渲染集群呢? 我们先说说3D渲染涉及哪些领域: 1.什么是3D渲染 简单粗暴的讲:就是将虚拟世界里的3D模型,变为(人眼看到)平 ... 
- 【实时渲染】实时3D渲染如何加速汽车线上体验应用推广
		在过去,一支优秀的广告片足以让消费者对一辆汽车产生兴趣.完美的底盘线条或引擎的轰鸣声便会让潜在买家跑到经销商那里试驾.现在,广告还是和往常一样,并没有失去其特性,但86%的买家在与销售交流之前会在网上 ... 
- 3D渲染
		3d渲染的本质是在三维坐标系中绘制很三角形,用三角形拼成物体,然后投影到二维图像上,所以做渲染就是画好这些三角形;3d渲染输入的是很多三角形的3个顶点和属性,输出的是一张2d图.画好三角形要研究给三角 ... 
- 从《BLAME!》说开去——新一代生产级卡通真实感混合的渲染方案
		<BLAME!>是Polygon Pictures Inc.(以下简称PPI)创业33周年以来制作的第一部CG剧场电影,故事来自于贰瓶勉的同名漫画作品(中文译名为<探索者>或者 ... 
- Flash3D学习计划(一)——3D渲染的一般管线流程
		一:什么是渲染管线 渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的并行处理单元.一个流水线是一序列可以并行和按照固定顺序进行的阶段.每个阶段都从它的前一阶段接收输入,然后把输出发给随后 ... 
随机推荐
- MyBatis源码研究-缓存
			在学习Hibernate中,经常有看到一级缓存和二级缓存的概念,并且有了解到,一级缓存是session级别的缓存一般缓存在内存中,二级缓存是指sessionfactory级别的缓存,一般缓存在内存或者 ... 
- Apache+JK+Tomcat 负载平衡配置
			网 上关于 Apache + JK + Tomcat 的集群配置例子很多,按着例子配置下来,基本都能运行,不过,在一些重要的地方却没有进一步的说明.这次公司一个产品就是采用Apache+JK+Tomc ... 
- Postgresql之基础
			Postgresql: https://www.postgresql.org/ [安装] 删除已经存在的pg: yum remove -y postgresql* && rm -rf ... 
- Docker可视化容器管理工具之Portainer
			官网:https://www.portainer.io/ 仓库地址:https://hub.docker.com/r/portainer/ Portainer 是一个轻量级的管理 UI ,可让你轻松管 ... 
- nginx之常见错误
			在此只介绍源码安装nginx的时候,发生的一些常见的错误 1. nginx访问出现File not found 1) php-fpm找不到SCRIPT_FILENAME中执行的PHP文件 更改配置文件 ... 
- ShellProgressBar控制台中漂亮的显示进度条
			ShellProgressBar控制台中漂亮的显示进度条 ShellProgressBar库的使用 控制台程序有时也需要进度条来显示任务执行的详细进度,最近就发现了一个第三方的类库叫ShellProg ... 
- 在 .NET 下使用 Pdfium 渲染和打印 PDF
			在 .NET 下使用 Pdfium 渲染和打印 PDF 大家可能已经看到这条 新闻,Google最近又新推出一个开源项目,名叫 PDFium,将成为Chrome浏览器的PDF渲染引擎组件.与已有的开源 ... 
- docker-compose安装mongo
			创建目录 [root@localhost tools]# mkdir -p /root/tools/mongo/{data,conf,init} 创建初始化用户脚本 [root@localhost m ... 
- 解决httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0
			httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for Se ... 
- @EnableWebMvc 注解会让Swagger无效访问的问题
			在工作中,通过Swagger2对项目的controller进行配置,以便于用户测试restful服务接口提高开发效率. 但是今天却出现了一个让我匪夷所思的问题就是在配置类里面加上@EnableWebM ... 
