Three.js 中3D 物体 都继承于 Object3D;
而构造一个3D 物体 需要 提供两个对象 即Gemotry 几何体 和 Material 材质。
Gemotry 中 vertices 决定定点的 列表, face 决定面的构成, faceVertexUv 决定 纹理坐标
而Material 不同类型将会采用不同类型的shader 来绘制, 通过 设定Material 的某些材质来开启默认shader的一些属性:例如map 属性将会开启纹理功能
WebGL 中任何的绘制都需要提供shader, Three 自身提供了一些shader 模板, 这些模板和 Three提供的材质类型 以及3D 对象的类型相关;
例如一个Mesh 类型的3D 对象, 通过PlaneGemotry 和 MeshBasicMaterial 来构造, 则 会采用编号为basic的shader
在WebGlRender 这个文件中汇集了绘制的基本逻辑, 而 在ShaderUtil 文件中集中了shader 模板。
一个场景的构成:
Scene Camera Object
Scene 中一个数组存储了所有Object , 同时其通过继承 Object3D , 将整个场景也构成了一棵树。
所有任何3d对象在加入到场景中时, 都会将入到最终的Scene对象的 内部数组中。
在WebGLRender 中将会对Scene的这个数组进行遍历用于初始化 Shader 和 GPU 中的vertexBuffer texture.
WebGL Render 中的Render函数, 接受 scene 和 camera 作为参数。
首先初始化scene中的所有3d对象的shader 和 buffer,
initWebGLObjects
场景初次初始化WebglObject:
&n

本文介绍了Three.js中3D物体的构造,包括Geometry几何体和Material材质的使用。详细讨论了vertices、face和faceVertexUv在几何体中的作用,以及Material如何通过不同类型的shader来呈现效果。文章还阐述了WebGL中shader的重要性,以及Three.js内置的模板和基本绘制流程。在WebGLRender中,初始化和更新对象的过程被详细解析,包括Scene、Camera、Object的关系,以及如何处理添加、删除和更新的3D对象。
最低0.47元/天 解锁文章
1137

被折叠的 条评论
为什么被折叠?



