Nếu tôi hiểu đúng vấn đề là:
- Bạn có một tập tin mà bạn muốn tải như một hình học (obj, STL, v.v.)
- Bạn muốn tải tệp này trong một WebWorker.
- Sau đó, bạn muốn gửi hình học trở lại tập lệnh chính.
- Vì vậy, bạn đang nghĩ đến việc gửi tệp về chủ đề chính dưới dạng JSON, vì việc gửi các đối tượng không được hỗ trợ.
- Sau đó, bạn sẽ chuyển đổi json thành hình học trên chuỗi chính.
Vấn đề với việc chuyển đổi từ chuỗi JSON sang hình học là một thao tác tải khác (đó là lý do tại sao có JSONLoader), vì vậy tại thời điểm đó, bạn cũng có thể thực hiện tải trên chuỗi chính.
Cách tiếp cận mà tôi đã sử dụng là tải tệp vào các mảng phẳng của các đỉnh và tiêu chuẩn, sau đó tôi gửi chúng trở lại chuỗi chính để thêm vào BufferGeometry. Bạn cũng có thể sử dụng các đối tượng chuyển được để tăng thêm tốc độ.
// worker.js
var vertices = new Float32Array(faces * 3 * 3);
var normals = new Float32Array(faces * 3 * 3);
// Load your file into the arrays somehow.
var message = {
status:'complete',
vertices: vertices,
normals: normals
};
postMessage(message, [message.vertices.buffer, message.normals.buffer]);
// app.js
onmessage = function (event) {
var vertices = event.data.vertices;
var normals = event.data.normals;
var geometry = new THREE.BufferGeometry();
geometry.addAttribute('position', new THREE.BufferAttribute(vertices, 3));
geometry.addAttribute('normal', new THREE.BufferAttribute(normals, 3));
var material = new THREE.MeshPhongMaterial();
var mesh = new THREE.Mesh(geometry, material);
// Do something with it.
};
Bạn nên nhìn xung quanh lớp nạp trong tài liệu: http://threejs.org/docs/# Tham chiếu/Trình tải/ObjectLoader – nemesv
@nemesv: Tôi đã xem và nhìn. Các lớp đó không thể được sử dụng để biến đầu ra 'toJSON()' thành một 'Hình học '. Về lý thuyết, tôi có thể cố gắng hiểu tất cả các mã nguồn của họ, và viết một giải pháp đầy đủ từ đầu, nhưng điều đó sẽ mất rất nhiều thời gian. Chủ yếu, tôi không thể tin rằng một phương thức serialization 'toJSON()' tồn tại, không có cách nào để deserialize. : -/ – mhelvens
Xem liệu điều này có giúp ích không: http://stackoverflow.com/questions/27992147/three-js-include-mesh-data-in-code/27996338#27996338 – WestLangley