फाइल अगर मैं सही ढंग मुद्दे को समझने है:
- आप एक फ़ाइल जो आपको एक ज्यामिति के रूप में लोड करना चाहते है (obj, एसटीएल, आदि।)।
- आप इस फ़ाइल को वेबवर्कर में लोड करना चाहते हैं।
- फिर आप ज्यामिति को मुख्य स्क्रिप्ट पर वापस भेजना चाहते हैं।
- तो आप फ़ाइलों को जेएसओएन के रूप में मुख्य थ्रेड पर भेजने के बारे में सोच रहे हैं, क्योंकि ऑब्जेक्ट भेजने से समर्थित नहीं है।
- फिर आप जेसन को मुख्य धागे पर एक ज्यामिति में परिवर्तित कर देंगे।
इस के साथ समस्या यह है कि JSON स्ट्रिंग से एक ज्यामिति में कनवर्ट एक और लोड हो रहा है ऑपरेशन है (जिसके कारण वहाँ JSONLoader है), तो यह है कि बिंदु पर आप के साथ-साथ बस लोड हो रहा है मुख्य थ्रेड पर किया गया हो सकता है।
जिस दृष्टिकोण का मैंने उपयोग किया है वह फ़ाइल को कोष्ठक और मानक के फ्लैट सरणी में लोड करना है, फिर मैं उन्हें वापस बफर जीमेट्री में जोड़ने के लिए मुख्य थ्रेड पर भेजता हूं। आप कुछ और गति प्राप्त करने के लिए स्थानांतरण योग्य वस्तुओं का भी उपयोग कर सकते हैं।
// 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.
};
आप दस्तावेज में लोडर वर्गों के आसपास देखना चाहिए संदर्भ/लोडर/ऑब्जेक्ट लोडर – nemesv
@nemesv: मैंने देखा है, और देखा है। उन वर्गों का उपयोग 'toJSON()' आउटपुट को 'ज्यामिति' में बदलने के लिए नहीं किया जा सकता है। सिद्धांत रूप में, मैं उनके सभी स्रोत-कोड को समझने की कोशिश कर सकता हूं, और स्क्रैच से एक पूर्ण समाधान लिख सकता हूं, लेकिन इसमें बहुत समय लगेगा। अधिकतर, मैं विश्वास नहीं कर सकता कि एक क्रमिकरण विधि 'toJSON()' deserialize के बिना, मौजूद है। : -/ – mhelvens
देखें कि यह मदद करता है: http://stackoverflow.com/questions/27992147/three-js-include-mesh-data-in-code/27996338#27996338 – WestLangley