2016-08-19 2 views
2

Ich konnte meine Geometrie in die Puffergeometrie übertragen und fand ein gutes Netz mit Geometrie und Material, aber das Modell wird nicht im Fenster angezeigt.Puffergeometriemasche wird nicht geladen, wenn Web-Worker verwendet wird

Hier ist mein Code:

var myWorker = new Worker("js/respond.js"); 
myWorker.postMessage("horse.js"); 

myWorker.onmessage = function(e) { 
    geometry = new THREE.BufferGeometry(); 
    var colorattribute = new THREE.BufferAttribute(e.data.color, 3, false); 
    var uv = new THREE.BufferAttribute(e.data.uv, 3, false);//created buffer attribute with worker data 
    var normal = new THREE.BufferAttribute(e.data.normal, 3, false); 
    var position = new THREE.BufferAttribute(e.data.position, 3, false); 
    var morph = new THREE.BufferAttribute(e.data.morphAttributes, 3, false); 
    geometry.addAttribute('color', colorattribute); 
    geometry.addAttribute('uv', uv); 
    geometry.addAttribute('normal', normal); 
    geometry.addAttribute('position', position); 
    geometry.addGroup(e.data.groups[0].start, e.data.groups[0].count, e.data.groups[0].materialIndex); 
    geometry.morphAttributes.position = []; 
    geometry.morphAttributes.position.push(morph); 
    //console.log(e.data.morphAttributes); 

    // mixer = new THREE.AnimationMixer(mesh); 
    // clip = THREE.AnimationClip.CreateFromMorphTargetSequence('static', geometry.morphAttributes, 30); 
    console.log(geometry); 
    mesh = new THREE.Mesh(geometry, new THREE.MeshLambertMaterial({color: 0xffffff, morphTargets: true})); 
    console.log(mesh); 
    scene.add(mesh); 
+0

Ihre Frage enthält keine Informationen darüber, welche Bibliothek Sie für die Geomethry verwenden. Für die meisten Bibliotheken gibt es spezielle Tags und Leute, die über sie Bescheid wissen, folgen diesen Tags. Das Hinzufügen korrekter Bibliotheks-Tags ist viel wichtiger als das Hinzufügen korrekter Sprach-Tags. Ich habe mir erlaubt, korrekte Tags hinzuzufügen. Bitte beachten Sie auch, dass nur ein "." Oder drei "..." Punkte im englischen Satz gültig sind, nicht acht. –

Antwort

1

Es ist nicht möglich, Bibliotheken in Ihrem Web-Arbeiter wie Three.js zu verwenden.

Was Sie können Do ist Ihre Geometrie in einem Arbeiter zu konstruieren, und dann füttern, dass in THREE.js später. Vom Web-Worker können Sie ein Objekt mit TypedArrays von UInt32Arrays und Float32Arrays nach Bedarf zurückgeben, um alle Attribute auszufüllen.

Dies wird zu einer Leistungssteigerung führen, da die Daten bereits im Format THREE.BufferGeometry strukturiert sind.

Verwandte Themen