位置: 编程技术 - 正文

three.js中文文档学习之创建场景(three.js 文档)

编辑:rootadmin

推荐整理分享three.js中文文档学习之创建场景(three.js 文档),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:threejs document,three.js中文网,three.js bim,three.js bim,threejs中文文档pdf,three.js中文教程,three.js中文教程,three.js中文网,内容如对您有帮助,希望把文章链接给更多的朋友!

什么是Three.js?

如果你正在读这篇文章,你可能对Three.js有一定的了解,那我们来简单地介绍下Three.js是什么.Three.js是一个库,使得WebGL的3D效果在浏览器中运用很容易。而在原始的WebGL中一个简单的立方体会变成数百Javascript和着色器代码的行,而一个Three.js只需要一点点代码.

本节目标是为 three.js 做简介。我们从使用旋转立方体来搭建场景开始。如果遇到困难需要帮助,页面底部有可参考的源码。

一个场景至少需要的三种类型组件

相机/决定哪些东西将在屏幕上渲染 光源/他们会对材质如何显示,以及生成阴影时材质如何使用产生影响 物体/他们是在相机透视图里主要的渲染队形:方块、球体等

开始前

在计算机中保存如下 HTML 代码,并在 js 目录下包含 three.js,然后在浏览器中打开

接下来的代码都会下载 script 标签中

创建示例场景

为了利用three.js来进行展示,我们需要三种元素:场景,摄像机,渲染器,以便来渲染摄像机中的场景。

让我们花点时间来解释发生了什么。我们现在创建了场景,摄像机和渲染器。

在 three.js 中有几种摄像机。我们暂时用的是 PerspectiveCamera (透视摄像机)

它的第一个属性是视图角(FOV),它 是能看见的视图范围,其值表示角度大小。

第二个属性是宽高比。大多数情况你想要使用被高除过之后的宽度,不然会发生像在宽屏电视上放旧电影的情况 —— 图像看起来被压扁了。

后面两个属性是近景面和远景面。只会渲染这两个面之间的区域。目前你不必关心这些,使用这些参数能提高性能。

接下来谈谈渲染器。这便是神奇之处。除了我们这里用的 WebGLRenderer 外, three.js 还提供一些渲染器用在不支持 WebGL 的老旧浏览器上。

three.js中文文档学习之创建场景(three.js 文档)

除了创建渲染器实例,我们也需要设置应用渲染的尺寸。推荐使用填充整个应用的宽高 —— 本例中是浏览器窗口的宽高。对于性能优先的应用,你能使用 setSize 来设置更小的值,比如 window.innerHeight/2, window.innerWidth/2,会渲染一半的尺寸。

如果你想低分辨率地渲染整个尺寸,你可以设置 setSize 的第三个参数 — uodateStyle 为 <font color="#FF">false</font> ,如果 canvas 元素宽高都为 %,则会以 1/2 分辨率渲染应用。

再尔,我们需要在 HTML 中添加被渲染的元素。渲染器通过 canvas 来给我们展示场景。

“都很好,但之前说的立方体呢” 让我们现在添加。

我们需要 BoxGeometry来创建立方体。这个对象包含立方体所有的点(顶点)和填充(面)。我们以后会讨论。

除了几何体外,我们还需要材质为其上色。three.js 提供了一些材质,但我们暂且使用 MeshBasicMaterial。所有材质接受并应用一个包含所有属性的对象。为简单起见,我们仅仅提供一个颜色属性: 绿色 —— <font color="#ff">0xff</font> 。和 CSS 和 PS 里的一样采用十六进制的颜色。

我们需要的第三个要素是 Mesh。 mesh 是一个将材质应用到几何体上的对象,然后我们能将其放入场景中,并自由移动。

当我们调用 scene.add() ,我们添加的会默认显示在坐标(0,0,0,)处。这会导致摄像机和立方体内部重叠。为了避免这点,我们简单地把摄像机往外移一点。

渲染场景

如果你在 HTML 文件中复制了如上代码,屏幕不会显示东西。因为我们还没渲染场景。所以我们需要调用渲染器或者动画循环。

这会创建一个让渲染器每秒绘制一帧的循环。如果你对网页游戏编程不了解,你可能会说“为什么不 写setInterval 函数呢?”事实上,我们可以,但是 requestAnimationFrame 好处更多。最重要的好处是当浏览器切换到另一个标签页时,requestAnimationFrame 会暂停渲染,因此不会浪费宝贵的处理能力和电池寿命。

让立方体动起来

如果你插入了我们刚刚创建的代码,你应该会看见一个绿色的立方体。让它旋转起来不至于单调。

在animate 函数中的 renderer.render 上添加如下代码:

它会按帧运行(每秒帧),并赋予立方体优雅的动画。基本上,应用运行时,你想移动或改变任何元素,必须通过动画循环。你当然在此处能调用其他函数,以免animate函数上百行代码结尾。

结果

恭喜!你现在创建好了第一个 three.js 应用。很简单,但总得突破。

完整代码参考如下。琢磨一下并深刻理解其工作机理

总结

标签: three.js 文档

本文链接地址:https://www.jiuchutong.com/biancheng/369834.html 转载请保留说明!

上一篇:解读ES6中class关键字(es6中的class常见使用场景)

下一篇:JS写XSS cookie stealer来窃取密码的步骤详解

  • 税务迁移麻烦吗
  • 所得税税负率是125正常吗
  • 企业如何代扣代缴劳务报酬所得税
  • 地产企业预缴增值税政策
  • 保险费计入什么会计科目需要发票吗
  • 金税盘购买的会计分录
  • 企业转让固定资产使用权的收益应当属于
  • 定额发票可以用旧的营业执照发票章吗
  • 不动产融资租赁税率是多少
  • 企业未按规定取得发票如何处理
  • 什么情况下可要求厂商出品质保证书
  • 摊销保险费会计分录怎么写
  • 一张合同分三次收款怎么开票?
  • 调离工作岗位是什么处分
  • 一般纳税人增值税申报操作流程
  • 电商公司购买拍照违法吗
  • 主营业务利润计算
  • 公司设备租赁给客户怎么做科目
  • 会计分录是怎么样的
  • 合并报表抵消子公司当期收入,母公司费用
  • 局域网的工作模式及特点
  • 年度中间适用的预扣率高于全年综合所得年适用税率
  • 预收房租需要缴纳个税么
  • php内容修改
  • 代理进口的增值税如何入账
  • php 魔术
  • 若依前后端分离做的系统
  • 建筑工程开税票比例占到合同金额的多少
  • vue每一列内容过多自动换行
  • 低值易耗品摊销方法名称怎么选
  • php操作json文件
  • 税控机维护费抵扣分录
  • 预提费用计提的分录
  • 职工报销医药费属于什么会计科目
  • vue从入门到精通教程
  • 用友固定资产折旧方法
  • discuz论坛安装步骤
  • python变量赋值的正确方法
  • php 更新
  • php增删改查语句
  • python Timer定时器如何使用?
  • 有净残值的固定资产累计折旧怎么算
  • sql数据库聚集索引和非聚集索引的区别是什么?
  • 白酒消费税最低计税价格核定范围包括
  • 企业所得税汇算表
  • 销售货物收入指企业销售什么取得的收入
  • 销售退回的账务处理会计分录
  • 做账工资和申报工资不一样有风险吗
  • 滞留票不处理可以么
  • 甲公司控股乙公司
  • 广告制作费属于现代服务吗
  • windows提升性能
  • 安装完xp系统直接蓝屏怎么办
  • Gene6 FTP在windows 2008上面破解后无法启动解决方法
  • linux pb
  • assoc.exe=exefile什么意思
  • Mac OS X El Capitan公测版下载地址及安装教程图解
  • svaplayer.exe - svaplayer是什么进程 有何作用
  • bsd模式是什么意思
  • win7开始菜单中的程序图标修改了
  • 电脑照片应用使用不了
  • bootstrap模态框按钮无响应
  • node.js配置
  • jquery width
  • angular keyup
  • ASP小贴士/ASP Tips javascript tips可以当桌面
  • unity3d相机设置视角
  • js对象属性值
  • 怎么关闭android
  • python中redis的用法
  • 使用粗盐热敷十大危害
  • javascript的介绍
  • jquery?
  • android设计模式单例有几种
  • 个人可以免费开店的平台有哪些
  • 广西税务怎么交城乡养老保险
  • 保险代理人非公司员工
  • 破产重整期间的税收
  • 吉林省耕地占用税实施办法
  • 税务局调查巡查政策依据
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设