简述BufferGeometry

作者:桑榆
QQ:934440653
有问题,评论留言,或qq联系

还未完成,待续…

1、BufferGeometry与Geometry的区别

BufferGeometry和Geometry可以实现同样的功能,在功能上并没有很大的区别;主要的区别在对象的数据结构不同。
BufferGeometry高效的秘诀:奖数据放在一个连续的内存空间中,和geometry一样,它存储了顶点,面索引,法线,颜色,纹理坐标和自定义的一些数据。连续的存储空间能够节省传递数据到CPU的时间。

通过以下代码进行比较:

var geometry = new THREE.BoxGeometry(10, 8, 9);
console.log('几何体数据结构',geometry);
console.log('顶点位置数据',geometry.vertices);
console.log('顶点纹理坐标',geometry.faceVertexUvs);
console.log('几何体三角形信息',geometry.faces);
var geometry = new THREE.BoxBufferGeometry(7, 6, 8);
console.log('几何体数据结构',geometry);
console.log('顶点位置、法向量、UV、颜色顶点等数据集合',geometry.attributes);
console.log('顶点位置数据',geometry.attributes.position);
console.log('顶点索引数据',geometry.index);

创建一个BufferGeometry对象

在vertices 这个数组中有18条数据,每3个为一组数据(即一个顶点),共计6组顶点数据。
:在threejs中不论是二维数组,或者一维数组,最终都会转化为一个数组。

var geometry = new THREE.BufferGeometry();
var vertices = new Float32Array( [
	-1.0, -1.0,  1.0,
	 1.0, -1.0,  1.0,
	 1.0,  1.0,  1.0,

	 1.0,  1.0,  1.0,
	-1.0,  1.0,  1.0,
	-1.0, -1.0,  1.0
] );
geometry.addAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) ); //查看下方,方法文档
var material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
var mesh = new THREE.Mesh( geometry, material );

方法

1、addAttribute ( name : String, attribute : BufferAttribute ) 给Geometry添加属性

name :给Geometry添加的属性名;attribute:该属性的参数
BufferAttribute与BufferGeometry联合使用BufferAttribute(array,itemSize)。array数组,itemSize表示数组中的几个数为一组(顶点或其它)。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值