Three.js: Como criar uma nova geometria 'morphing' se eu tiver todos os buffers necessários?

Estou usando um trabalhador da Web para carregar um.json arquivo de um modelo 3D animado. Para cada uma das grandes matrizes (vértices, normais, etc.), estou transferindo umFloat32Array buffer de volta ao segmento da interface do usuário. Como esses buffers sãoobjetos transferíveis, isso levará (quase)tempo zero.

Agora, verifica-se que o WebGL (e, portanto, o Three.js) usaFloat32Array tampões internamente também. Isso significa que eu provavelmente poderia carregar esta animação 3D sem copiar nada, gastando quase zero tempo no thread principal. Isso não é legal?

Mas não está claro como fazer essa parte: no thread principal, temos buffers de matriz disponíveis para os vértices, normais (os principais e os 'morph') e faces. Como faço para criar um trabalhoGeometry (ouBufferGeometry), sem traduzir ou copiar os dados?

var scene,
    vertices, normals, faces,
    morphVertices, morphNormals; // <-- we have all these as typed arrays

var geometry = ...; // <-- insert code here

var material = new THREE.MeshLambertMaterial({ morphTargets: true });
var object3D = new THREE.MorphAnimMesh(geometry, material);
scene.add(object3D);

Esta resposta dá uma dica, mas apenas o ponto 7 parece relevante, parte do pressuposto de que já existeGeometry instância, e ele não lida com alvos de metamorfose.

questionAnswers(1)

yourAnswerToTheQuestion