当前位置: 首页 > news >正文

three.js入门系列之视角和辅助线

假设你已经创建好了three.js的开发环境(我是写在vue项目中的),那么接下来,从头开始演示是如何用three.js来构建3D图形的。(笔记本写的代码,屏幕小,所以为了能够整屏看到完整代码,就将字体缩小了,如果觉得看不清的,可以另行放大)

一、页面DOM结构

image.png

正如你所见,这就是一个vue的模板页面,一个简单的dom,我们的3D图形都是渲染在这个名为container的div中的,接下来,开始吧。

二、初始化三要素

场景、相机、渲染器,将绘好的场景渲染到渲染器中,将渲染器通过相机的视角传达给用户;

image.png

三、往场景中添加mesh模型以及其他

你应该看到上面中间有一个函数是添加mesh的,那我们具体来看看这个函数:

image.png

在这里,只向场景中添加了辅助线和一个立方体;

注意这个立方体的添加过程,第一句是声明立方体的形状(怎样的立方体),第二句是立方体的材质(材质决定最终看到的物体样子,可能会因为色差的原因,导致物体不见了)。

这里我的物体是法向量网孔材料(MeshNormalMaterial)的盒状立方体(BoxGeometry),立方体的位置也会决定我们看到的最终效果。

四、最终效果

image.png

五、camera以及辅助线

我用的是three.js的r99版本,所以API上的有些代码直接拿来用是会出现错误的。

image.png

这里用的是透视相机、除此之外还有立方体相机和正交相机,但是透视相机更符合人类看物体的视角,所以后面也会一直使用透视相机;

相机的x,y,z这就不用多说了,上面那个150其实和z效果差不多,都是用来决定相机的远近(间接决定所见物体的远近/大小),如有兴趣,可以自己调试各种值,r99版本中,x、y、z调试的时候,一次+1,突然加多了,你就发现物体不见了(TT)

image.png

上面的代码是立方体的一些参数,包括形状和材质,x、y、z轴偏移量;

尤其注意,r99版本中有很多值都是以1为上限,比如立方体的大小(长宽高),1就等于渲染器的大小,0.5表示渲染器大小的一半,物体的3轴偏移量也是以0.1为步长改变,所以老版本可能(是以像素为单位)动辄加减个几百的,到r99版本上,直接就看不到图形了,这点切记。



转载于:https://www.cnblogs.com/eco-just/p/10068815.html

相关文章:

  • elementui 走马灯图片自适应
  • CSS浮动(一)---Float
  • mode_w
  • war包
  • Js获取操作系统版本 获得浏览器版本
  • [USACO12MAR]摩天大楼里的奶牛Cows in a Skyscraper
  • Alpha阶段个人总结
  • BZOJ5091: [Lydsy1711月赛]摘苹果【期望DP】
  • RDIFramework.NET V3.3 Web版新增报表管理功能模块-重量级实用功能
  • /etc/skel 目录作用
  • [逆向工程] 二进制拆弹Binary Bombs 快乐拆弹 详解
  • 软工 · BETA 版冲刺前准备(团队)
  • [源码和文档分享]基于C语言的PL0编译器
  • 图-连通性-有向图的强连通分量
  • 第四次作业
  • 分享一款快速APP功能测试工具
  • Docker 笔记(2):Dockerfile
  • github指令
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • PAT A1017 优先队列
  • QQ浏览器x5内核的兼容性问题
  • Xmanager 远程桌面 CentOS 7
  • 笨办法学C 练习34:动态数组
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 关于 Cirru Editor 存储格式
  • 精彩代码 vue.js
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 学习ES6 变量的解构赋值
  • 学习HTTP相关知识笔记
  • 一个完整Java Web项目背后的密码
  • 一些css基础学习笔记
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (4)Elastix图像配准:3D图像
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (Java数据结构)ArrayList
  • (JS基础)String 类型
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (万字长文)Spring的核心知识尽揽其中
  • (五)关系数据库标准语言SQL
  • (小白学Java)Java简介和基本配置
  • *上位机的定义
  • ./configure,make,make install的作用
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .net framework 4.0中如何 输出 form 的name属性。
  • .net framework profiles /.net framework 配置
  • .net 调用php,php 调用.net com组件 --
  • .NET 依赖注入和配置系统
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...