粗略看完了geometry,那么接下来看geometry的上一层,objects吧,一般是geometry和material两者组成了一个object,然后添加到场景中。Objects的结构还是比较清楚的,类似geometry,所以接下来就看objects吧。
renderer这个最硬核的东西,留到之后好好看!
这么多文件,这么多类型的object,看文件结构是平行关系,不过还是有点区别的。
- Group:相当于一个虚拟objet,用于组合多个object
- Mesh:最基础也是最常使用的,也就是将geometry和material组合起来,用来表示使用最广泛的三角面片mesh
- InstancedMesh:如其名称,是Mesh的instanced版本
- Bone,Skeleton,SkinnedMesh是一系列的
- Line,Line Loop,LineGeometry,这三个一系列,是为了表示line的对象,跟WebGL对应
- LOD:特殊对象,Level of Detail,还是很高级的,看demo的话很酷,实现也要好好看下
- Points:区别于Mesh,LineXXX的第三种普通对象
- Sprite:特殊对象,展示始终面向屏幕的对象,在许多场合还是很必要的
没了~
所以还是可以的,逐个看起来~~
其中许多的对象,其实只是为了标识,或者说一个name alias,功能上跟Object3D差不多,比如:
- Group
Mesh
对于具体的Mesh,接收了geometry和material的参数
除此之外,有关于morph的两个属性以及相关的操作:
this.morphTargetInfluences = [];this.morphTargetDictionary = {};
对此,完全摸不着头脑,因为文档中也没有具体的体现,之后看到使用的时候再说吧,TODO
raycast
首先是,判断boundingSphere和boundingBox是否相交,这个一个快速拒绝的步骤
这里有个小细节,boundingSphere是在世界坐标系下判断,boundingBox在物体坐标系下判断,个人感觉有些冗余,不够优雅
checkIntersection
判断一个三角面是否与array相交
啊啊啊啊啊,跟material相关的好多,感觉,可能还是看完geometry之后看material比较好,之前可能自己都忽略了材质的重要性
大大的TODO
