three.js(三):three.js的渲染结构

three.js 的渲染结构

概述

  • three.js 封装了场景、灯光、阴影、材质、纹理和三维算法,不必在直接用WebGL 开发项目,但有的时候会间接用到WebGL,比如自定义着色器。
  • three.js 在渲染三维场景时,需要创建很多对象,并将它们关联在一起。
  • 下图便是一个基本的three.js 渲染结构
  • Renderer 渲染器
    • Renderer 是three.js 的主要对象。当你将一个场景Scene 和一个摄像机Camera 传递到渲染器的渲染方法中,渲染器便会将摄像机视椎体中的三维场景渲染成一个二维图像显示在canvas 画布中。
  • Scene 场景对象
    • 场景对象是树状结构的,其中包含了三维对象Object3D 和灯光对象Light;
    • Object3D 是可以被直接渲染出来的,Object3D是网格对象Mesh和集合对象Group的基类;
    • 场景对象可以定义场景的背景色和雾效;
    • 在场景对象的树状结构中,每个对象的变换信息都是相对的。比如汽车和汽车里的人,人的位置是相对于汽车而言的,当汽车移动了,人的本地坐标位坐标位虽然不变,但其视界坐标位已经变了
  • Camera 相机对象
    • 按理说,相机对象是在场景里的,但是相机对象不在它所看的场景里,这就像我们自己看不见自己的眼睛一样。因此,相机对象可以独立于场景之外;
    • 相机对象是可以作为其它三维对象的子对象的,这样相机就会随其父对象同步变换。
  • Mesh 网格对象
    • 网格对象由几何体Geometry和材质Material两部分组成,Geometry 负责塑形,Material 负责着色;
    • Geometry 和Materia 是可以被多个Mesh 对象复用的。比如要绘制两个一模一样的立方体,那只需要实例化两个Mesh 即可,Geometry 和Materia可以使用一套。
  • Geometry 几何体对象
    • 几何体对象负责塑形,存储了与顶点相关的数据,比如顶点点位、顶点索引、uv坐标等;
    • three.js 中内置了许多基本几何体,也可以自定义几何体,或者从外部的模型文件里加载几何体。
  • Material 材质对象
    • 材质对象负责着色,绘制几何体的表面属性,比如漫反射、镜面反射、光泽度、凹凸等;
    • 材质对象的许多属性都可以用纹理贴图表示,比如漫反射贴图、凹凸贴图等。
  • Texture 纹理对象
    • 纹理对象就是一张图像。纹理图像的图像源可以是Image 图片、canvas 画布、Video 视频等。
  • Light 光源对象
    • Light 对象不像Object3D 那样依托于顶点,它更多的是像Object3D 里的材质Material 那样,作用于物体的样式。
    • Light 对象可以理解为在为几何体添加了材质后,再利用光效配合材质对几何体的样式进行二次加工。
相关推荐
qq_120840937120 小时前
Three.js 模型加载稳定性实战:从资源失败到可用发布的工程化方案
前端·javascript·vue.js·vue3·three.js
烛阴5 天前
Three.js 材质完全入门指南:让你的 3D 物体「活」起来
webgl·three.js
三维搬砖者11 天前
AI 解密大厂 Three.js 三维引擎开发 03|从经纬度到三维世界的坐标解码
webgl·three.js
一马平川的大草原19 天前
基于Vue+Three.js实现三维油藏模型解析与可视化交互切割操作
vue.js·three.js·三维油藏模型
RulerMike20 天前
three 实现简单机械臂逆运动
前端·ai编程·three.js
程序员阿峰22 天前
前端3D·Three.js一学就会系列:第二 画线
前端·three.js
程序员阿峰23 天前
前端3D·Three.js一学就会系列: 第一个3D网站
前端·three.js
烛阴23 天前
Three.js 场景完全入门指南:让你的 3D 场景不在乱成一团
webgl·three.js
ai超级个体1 个月前
前端下午茶:这 3 个网页特效建议收藏(送源码)
前端·three.js·threejs·网页设计·vibe coding·网页灵感·网页分享
codingWhat1 个月前
用 three.js 实现 3D 地图
three.js