7 Stimmen

Kann man Meshes zwischen three.js Scenes austauschen?

Ist es möglich, Meshes oder Geometrie zwischen Szenen zu teilen?

Ich habe mehrere Szenen, die die gleichen, großen, Meshes sollten, aber wenn ich versuche, Meshes zwischen ihnen zu teilen, bekomme ich WebGL-Kontextfehler. Ich vermute, dass einige Variablen auf die Meshes oder Geometrie gesetzt werden, wenn sie zu einer Szene hinzugefügt werden, so dass sie nicht in einer anderen Szene wiederverwendet werden können.

EDITAR:

Genauer gesagt, versuche ich, Geometrie, die mit dem JSONLoader geladen wurde, zwischen verschiedenen Szenen zu teilen. D.h. in diesem Beispiel ist "apps" ein Array von Apps mit Szenen:

var loader = new THREE.JSONLoader();
loader.load('obj/tree/tree.js', function(geometry) {
    apps.map(function(app) {
        var material = new THREE.MeshBasicMaterial({color: 0xff0000, opacity: 1.0}); 
        var mesh = new THREE.Mesh(geometry, geometry.materials[0]);
        app.scene.add(mesh);
    });
});

Vollständige Quelle hier: https://github.com/bjnortier/three.js/blob/multiple_canvasses_with_json_loader/examples/webgl_multiple_canvases_grid.html

Dieses Beispiel erzeugt WebGL-Fehler:

WebGL: INVALID_OPERATION: useProgram: Objekt nicht aus diesem Kontext
WebGL: INVALID_OPERATION: uniformMatrix4fv: Ort ist nicht vom aktuellen Programm
WebGL: INVALID_OPERATION: uniform3f: Standort nicht für das aktuelle Programm
WebGL: INVALID_OPERATION: uniform1f: Standort nicht für das aktuelle Programm
usw...

17voto

mrdoob Punkte 18788

Sie können Geometrie entlang verschiedener Szenen teilen.
Sie können keine Meshes entlang verschiedener Szenen teilen.
Sie können (noch) keine Geometrie/Meshes/Szenen mit verschiedenen Renderern teilen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X