ThreeJs的学习:BufferGeometry的理解(3),Geometry和BufferGeometry的关系

在Three.js的这个方法中可以观察各个Geometry的转换

从目前为止的观察,所有的Geometry都会到projectObject进行转换,最后转换成BufferGeometry。

function projectObject( object, camera, groupOrder, sortObjects ) 

Geometry

Geometry转换成BufferGeometry

BoxGeometry

BoxGeometry转换成BufferGeometry

CubeGeometry

CubeGeometry转换成BufferGeometry

但有些Geometry并不会转换成BufferGeometry

XXXXBufferGeometry就是了

比如ShapeBufferGeometry和ExtrudeBufferGeometry并没有转换成BufferGeometry

ShapeBufferGeometry 

ExtrudeBufferGeometry 

比ShapeBufferGeometry多了个groups

Threejs的computeBoundingSphere方法

不管是Geometry还是BufferGeometry都有computeBoundingSphere方法,而且是初始化中必须执行。

两者的区别:BufferGeometry的方法computeBoundingSphere认为一定存在attributes,然后对attributes的一些数据进行操作。

而Geometry不管是否存在attributes,也不操作attributes的数据操作。

执行computeBoundingSphere的地方【intersectsObject: function ()】

Geometry的computeBoundingSphere方法

BufferGeometry的computeBoundingSphere方法

 

 结论

 最后结论是只要掌握好BufferGeometry的attributes以及其他属性的用法,用BufferGeometry可以全部搞定,不需要其他的Geometry。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章