mirror of
https://github.com/CesiumGS/obj2gltf.git
synced 2025-02-07 07:22:51 -05:00
Better buffer handling
This commit is contained in:
parent
998dcfe649
commit
cf27c8b69d
24
lib/gltf.js
24
lib/gltf.js
@ -144,9 +144,9 @@ function createGltf(objData) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var vertexBuffers = [];
|
var vertexBuffers = [];
|
||||||
var vertexByteOffset = 0;
|
var vertexBufferByteOffset = 0;
|
||||||
var indexBuffers = [];
|
var indexBuffers = [];
|
||||||
var indexBuffersByteOffset = 0;
|
var indexBufferByteOffset = 0;
|
||||||
var accessorCount = 0;
|
var accessorCount = 0;
|
||||||
|
|
||||||
function addVertexAttribute(array, components) {
|
function addVertexAttribute(array, components) {
|
||||||
@ -157,7 +157,7 @@ function createGltf(objData) {
|
|||||||
var type = (components === 3 ? 'VEC3' : 'VEC2');
|
var type = (components === 3 ? 'VEC3' : 'VEC2');
|
||||||
var accessor = {
|
var accessor = {
|
||||||
bufferView : vertexBufferViewId,
|
bufferView : vertexBufferViewId,
|
||||||
byteOffset : vertexByteOffset,
|
byteOffset : vertexBufferByteOffset,
|
||||||
byteStride : 0,
|
byteStride : 0,
|
||||||
componentType : WebGLConstants.FLOAT,
|
componentType : WebGLConstants.FLOAT,
|
||||||
count : count,
|
count : count,
|
||||||
@ -166,7 +166,7 @@ function createGltf(objData) {
|
|||||||
type : type
|
type : type
|
||||||
};
|
};
|
||||||
|
|
||||||
vertexByteOffset += buffer.length;
|
vertexBufferByteOffset += buffer.length;
|
||||||
vertexBuffers.push(buffer);
|
vertexBuffers.push(buffer);
|
||||||
var accessorId = 'accessor_' + accessorCount++;
|
var accessorId = 'accessor_' + accessorCount++;
|
||||||
gltf.accessors[accessorId] = accessor;
|
gltf.accessors[accessorId] = accessor;
|
||||||
@ -180,7 +180,7 @@ function createGltf(objData) {
|
|||||||
var minMax = array.getMinMax(1);
|
var minMax = array.getMinMax(1);
|
||||||
var accessor = {
|
var accessor = {
|
||||||
bufferView : indexBufferViewId,
|
bufferView : indexBufferViewId,
|
||||||
byteOffset : indexBuffersByteOffset,
|
byteOffset : indexBufferByteOffset,
|
||||||
byteStride : 0,
|
byteStride : 0,
|
||||||
componentType : componentType,
|
componentType : componentType,
|
||||||
count : length,
|
count : length,
|
||||||
@ -189,7 +189,7 @@ function createGltf(objData) {
|
|||||||
type : 'SCALAR'
|
type : 'SCALAR'
|
||||||
};
|
};
|
||||||
|
|
||||||
indexBuffersByteOffset += buffer.length;
|
indexBufferByteOffset += buffer.length;
|
||||||
indexBuffers.push(buffer);
|
indexBuffers.push(buffer);
|
||||||
|
|
||||||
var accessorId = 'accessor_' + accessorCount++;
|
var accessorId = 'accessor_' + accessorCount++;
|
||||||
@ -300,9 +300,9 @@ function createGltf(objData) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var vertexBuffer = Buffer.concat(vertexBuffers);
|
var buffers = [];
|
||||||
var indexBuffer = Buffer.concat(indexBuffers);
|
buffers = buffers.concat(vertexBuffers, indexBuffers);
|
||||||
var buffer = Buffer.concat([vertexBuffer, indexBuffer]);
|
var buffer = Buffer.concat(buffers);
|
||||||
|
|
||||||
// Buffers larger than ~192MB cannot be base64 encoded due to a NodeJS limitation. Source: https://github.com/nodejs/node/issues/4266
|
// Buffers larger than ~192MB cannot be base64 encoded due to a NodeJS limitation. Source: https://github.com/nodejs/node/issues/4266
|
||||||
var bufferUri;
|
var bufferUri;
|
||||||
@ -317,15 +317,15 @@ function createGltf(objData) {
|
|||||||
|
|
||||||
gltf.bufferViews[vertexBufferViewId] = {
|
gltf.bufferViews[vertexBufferViewId] = {
|
||||||
buffer : bufferId,
|
buffer : bufferId,
|
||||||
byteLength : vertexBuffer.length,
|
byteLength : vertexBufferByteOffset,
|
||||||
byteOffset : 0,
|
byteOffset : 0,
|
||||||
target : WebGLConstants.ARRAY_BUFFER
|
target : WebGLConstants.ARRAY_BUFFER
|
||||||
};
|
};
|
||||||
|
|
||||||
gltf.bufferViews[indexBufferViewId] = {
|
gltf.bufferViews[indexBufferViewId] = {
|
||||||
buffer : bufferId,
|
buffer : bufferId,
|
||||||
byteLength : indexBuffer.length,
|
byteLength : indexBufferByteOffset,
|
||||||
byteOffset : vertexBuffer.length,
|
byteOffset : vertexBufferByteOffset,
|
||||||
target : WebGLConstants.ELEMENT_ARRAY_BUFFER
|
target : WebGLConstants.ELEMENT_ARRAY_BUFFER
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user