www.jpct.net

General => German corner => Topic started by: arucro on February 11, 2013, 08:47:34 pm

Title: Fliegengewicht für "Object3D"-Objekte
Post by: arucro on February 11, 2013, 08:47:34 pm
Hallo zusammen,

in meiner Anwendung möchte ich signifikant viele Objekte zur Laufzeit dynamisch hinzufügen können. (Sprich dem world-Objekt hinzufügen können)
Diese Objekte haben dabei oft das gleiche Mesh, jedoch in unterschiedlicher Orientierung und Position im Weltkoordinatensystem.

Da die Meshdaten in einem "Object3D" verpackt sind heißt das bei meiner Anwendung konkret, dass ich für jedes neue Mesh eine Kopie des jeweiligen Object3D-Objekt anlegen muss um dieses an meine gewünschte Position zu translatieren / rotieren.

Um Speicher zu sparen möchte ich Gebrauch des Fliegengewichts-Entwurfsmuster machen. (hier nachzulesen: http://en.wikipedia.org/wiki/Flyweight_pattern)

Leider weiß ich zurZeit nicht weiter, wie ich die Anzahl der "internen Objekte / Instanzen" verringern (Durch die Anwendung einer Fliegengewichtsfabrik) kann wenn jedes Objekt ein Mesh repräsentiert und ich nur damit arbeiten kann.

Was ich im Grunde konkret suche ist eine Möglichkeit das Zeichnen der Meshdaten eines Object3D mit Position und Rotation zu parametrisieren.

Gibt es in jpct diese Möglichkeit bzw. kann man sonst irgendwelche Optimierungen bezüglich meines Anwendungsfalls durchführen?

Viele Grüße,

arucro
Title: Re: Fliegengewicht für "Object3D"-Objekte
Post by: EgonOlsen on February 11, 2013, 09:26:37 pm
Es gibt mehrere Optionen:

Title: Re: Fliegengewicht für "Object3D"-Objekte
Post by: arucro on February 11, 2013, 10:11:46 pm
Hi,

mithilfe von shareCompiledData und shareTextureData lässt sich schonmal etwas flexibleres bauen. Danke!

zu 1)
Du meintest Object3D.cloneObject() und nicht cloneMesh() oder? Denn die Methode habe ich nicht in der Klasse Object3D gefunden.

Und noch eine andere Frage:

Ist es möglich Meshes (zur Laufzeit) zusammenzuführen, die die selben Vertices teilen und die selbe Textur besitzen, so wie es in Loader.setVertexOptimization() beschrieben ist?

Gruß
Title: Re: Fliegengewicht für "Object3D"-Objekte
Post by: EgonOlsen on February 11, 2013, 10:28:08 pm
Ist aber da: http://www.jpct.net/doc/com/threed/jpct/Object3D.html#cloneObject() (http://www.jpct.net/doc/com/threed/jpct/Object3D.html#cloneObject())

Meshes zur Laufzeit...naja, könnte man irgendwie machen. Würde ich aber nicht tun. Es wird nicht so wirklich effizient werden und auch ansonsten ein ziemliches Gefummel.
Title: Re: Fliegengewicht für "Object3D"-Objekte
Post by: arucro on February 11, 2013, 10:31:43 pm
Hi ja. cloneObject() hatte ich auch gefunden. Du meintest nur im 2. Post etwas von "cloneMesh()" das verwirrte mich :)

Gut ich experimentiere erstmal mit dem rum was ich habe. Danke nochmal
Title: Re: Fliegengewicht für "Object3D"-Objekte
Post by: EgonOlsen on February 11, 2013, 10:40:17 pm
Äh, ja. Das war Quatsch. cloneMesh() gibt es auch, aber nicht in Object3D. Ich habe das Posting korrigiert.