5 gltf:buffer缓存、bufferView视窗、accesors访问器

总目录 >> threejs入门进阶到实战(目前已更新入门篇、基础篇和进阶篇)

5 buffer缓存、bufferView视窗、accesors访问器

buffer, bufferView,和 accessor 对象已经在**3、最小GLTF文件 **提到,本节将会详细解释它们的含义。

Buffers 缓存

缓冲区buffer表示原始二进制数据块,没有内在的结构或含义。缓冲区使用其uri引用此数据。这个URI可以指向外部文件,也可以是直接在JSON文件中编码二进制数据的数据URI。最小的glTF文件包含一个缓冲区示例,其中包含44字节的数据,编码在数据URI中:

"buffers" : [
    {
   
      "uri" : "data:application/octet-stream;base64,AAABAAIAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAA=",
      "byteLength" : 44
    }
  ],


图5a: 缓冲区数据,包括44字节

buffer缓冲区的部分数据可能作为顶点属性或索引传递给渲染器,或者数据可能包含蒙皮信息或动画关键帧。为了能够使用此数据,需要有关此数据的结构和类型的其他信息。

BufferViews 缓冲区视图

从缓冲区buffer构造数据的第一步是使用bufferView对象。bufferView表示一个缓冲区的数据的“切片”。此切片使用偏移量和长度定义(以字节为计量单位)。最小的glTF文件定义了两个bufferView对象:



"bufferViews" : [
    {
   
      "buffer" : 0,
      "byteOffset" : 0,
      "byteLength" : 6,
      "target" : 34963
    },
    {
   
      "buffer" : 0,
      "byteOffset" : 8,
      "byteLength" : 36,
      "target" : 34962
    }
  ],

第一个bufferView指向的 是缓冲区数据的前6个字节。第二个指向的是36字节的缓冲区,偏移量为8字节,如图所示:

图 5b: buffer views缓冲区视图, 指向缓冲区的各部分

浅灰色显示的字节(有2个字节的位置,也就是6-8)是正确对齐访问器accesors所需的填充字节,如下所述。
每个bufferView还包含一个目标target属性。渲染器程序可以稍后使用此属性对缓冲区视图引用的数据的类型或性质进行分类。目标target可以是一个常量,表示数据用于顶点属性(34962,表示数组缓冲区ARRAY_BUFFER),或数据用于顶点索引(34963,表示元素数组缓冲区ELEMENT_ARRAY_BUFFER)。
此时,buffer缓冲区数据被划分为了多个部分,每个部分由一个bufferView描述。但是为了在渲染器中真正使用这些数据,需要有关数据类型和布局的其他信息。

Accessors访问器

访问器accessor对象指向bufferView并包含定义此bufferView的数据类型和布局的属性。

Data type 数据类型

访问器数据的类型在typecomponentType属性中被编码。type属性的值是一个字符串,表示数据元素是标量、向量还是矩阵。例如,对于标量值,使用"SCALAR";对于三维向量,该值可以是"VEC3";对于4×4矩阵,该值可以是"MAT4"
componentType指定这些数据元素的组件的类型。这是一个GL常量,可以是5126FLOAT)或5123UNSIGNED_SHORT),以指示元素分别具有FLOATUNSIGNED SHORT组件。
这些属性的不同组合可用于描述任意数据类型。例如,最小的glTF文件包含两个访问器:

"accessors" : [
    {
   
      "bufferView" : 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值