Fragen zu OpenSG



  • Hallo, habe ein paar Fragen zum OpenSG

    wisst ihr gute Foren ect, in denen über die Scenegraph API
    diskutiert wird?
    Hat von euch jemand ne Ahnung davon
    sind nur 3 kleine Fragen
    wenn ich darf poste ich sie auch hier!

    Gruß Matthias



  • Hi,
    Ich arbeite ein wenig mit OpenSG (nicht OpenSceneGraph).
    Stelle deine Fragen einfach...
    Foren gibts keine, aber die Doxygendokumentation sowie die Mailinglisten sind eine gute Quelle...



  • Hallo, es geht dabei um viel Geometrie z.b. Legosteine
    möchte es irgnendwie hinbringen, dass er mir nicht bei
    2000 Steinen mit den Fps in den Keller geht
    lässt sich die Geometrie im Baum refferenzieren?
    Die Geometrie setzt sich aus Quads und Triangles zusammen
    gibt es Algorithmen die nur Triangles drauf machen?
    Wie lässt sich das am Besten realisieren?



  • Aus wieviel Quads/ Dreiecken bestehen denn deine Legosteine? Sind die Geometrien alle identisch? Dann könnte man diese nur einmal instanziieren und die Referenz an verschiedenen Stellen im Szenegraph einfügen. Ist im Geometriekern die Benutzung von VBO / Displaylisten aktiviert?

    Ein bisschen Quelltext macht die Sache auch ein wenig einfacher 😉



  • Die Geometrie setzt sich aus Quads und Triangles zusammen
    gibt es Algorithmen die nur Triangles drauf machen?

    Ein gegebenes (konvexes) Quad mit den Eckpunkten v0..v3 kannst Du auf genau zwei Arten in zwei Dreiecke A,B zerlegen:
    1: A=v0,v1,v2 B=v0,v2,v3
    2: A=v0,v1,v3 B=v1,v2,v3

    Quad    Tri(1)   Tri(2)
    0----3   0----3   0----3
    |    |   |\   |   |   /|   
    |    |   | \  |   |  / |   
    |    |   |  \ |   | /  |   
    |    |   |   \|   |/   |   
    1----2   1----2   1----2
    

    Das wird aber keine Auswirkungen auf Deine Performance haben.



  • Aus wieviel Quads/ Dreiecken bestehen denn deine Legosteine?

    ca 700 bei einem 2x4 er Stein

    Sind die Geometrien alle identisch?

    pro Stein schon, also wenn ich 2 gleiche Steine einfügen möchte.

    Dann könnte man diese nur einmal instanziieren und die Referenz an verschiedenen Stellen im Szenegraph einfügen.

    ja das wollte ich weis aber den Befehl nicht wie das geht
    und finde leider keine so rechte Doku dazu

    Ist im Geometriekern die Benutzung von VBO / Displaylisten aktiviert?

    das würde ich auch gerne machen nur weis ich au ned wie das geht
    habs mal mit ->clone() probiert... aber ob das die Referenz ist?

    Ein bisschen Quelltext macht die Sache auch ein wenig einfacher

    kann ich dir geben bitte schreib mir doch mal eine pm



  • GeometryPtr lego = ...; 
    NodePtr groupNode = makeCoredNode<Group>();
    
    for(int i = 0; i < anzahlSteine; ++i)
    {
       TransformPtr trans = Transform::create();
       Matrix m = ....
       beginEditCP(trans);
          trans->setMatrix(m);
       endEditCP(trans);
       NodePtr transNode = makeCoredNode<Transform>(trans);
       NodePtr geoNode = Node::create();
       beginEditCP(geoNode);
          geoNode->setCore(lego);
       endEditCP(geoNode);
       beginEditCP(groupNode)
          groupNode->addChild(transNode);
       endEditCP(groupNode)
       beginEditCP(transNode);
          transNode->addChild(geoNode);
       endEditCP(transNode);
    }
    

    Damit befindet sich nur eine Referenz der Geometrie in jedem Blatt des Teilbaumes. Mit den unterschiedlichen Transformationen kannst du dann die Position und Orientierung festlegen.


Anmelden zum Antworten