1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Open Inventor -"Animation" Neuzeichnen des Fensters ??

Discussion in 'Programmieren' started by simon251, Oct 14, 2005.

Thread Status:
Not open for further replies.
  1. simon251

    simon251 ROM

    Hallo zusammen - ich hoffe, ihr koennt mir weiterhelfen:

    ich programmiere in Open Inventor eine ganz einfache Sache: in einem Fenster muss eine Kugel zu bestimmten Zeitpunkten die Position aendern und das Fenster muss neu gezeichnet werden. Und genau das ist das Problem: eigentlich wird alles richtig gemacht, nur wird die aktuelle Position nicht neu gezeichnet, denn wenn ich mit der Maus ueber das Fenster fahre, erst dann wird neugezeichnet und die Veraenderung der Position ist zu sehen !
    Ich hatte mal was aehnliches mit OpenGl programmiert, da habe ich LoadIdentity, PopMatrix, glFlush, swapbuffer usw.. verwendet..dann ging es, aber bei Open Inventor habe ich noch immer keine Loesung gefunden:

    hier der Code

    in der Main:


    Widget myWindow = SoXt::init("Test");
    if (myWindow == NULL) exit(1);
    SoXtExaminerViewer *myViewer = new SoXtExaminerViewer(myWindow);
    myViewer->setTitle("Test");
    SbColor backgroundColor(0,0,0);
    myViewer->setBackgroundColor(backgroundColor);
    SoGroup *root = new SoGroup();
    root->ref();


    // Erzeugen der Sphere
    SoSeparator *pSphereSep = new SoSeparator();
    pSphereSep->setName("Sphere");
    pSphereSep->ref();
    SoSphere *pSphere = new SoSphere();
    SoTransform *pSphereTransform = new SoTransform;
    pSphere->radius =0.5;
    pSphereSep->addChild(pSphereTransform);
    pSphereSep->addChild(pSphere);
    root->addChild(pSphereSep);

    myViewer->setSceneGraph(root);
    myViewer->show();
    SoXt::show(myWindow); // Display main window
    SoXt::mainLoop(); // Main Inventor event loop


    In einem anderen Thread, der vor der SoXt:mainLoop gestartet wird, werden die Positionen definiert:


    udStruct->pSphereTransform->translation.setValue(-9,0,1);
    sleep(1);
    udStruct->pSphereTransform->translation.setValue(-5,2,1);
    usw....


    Hatte versucht, mit
    soXtExaminerViewer->render() das Fenster zu aktualisieren, aber fuehrte nur zum Absturz der Anwendung.

    Also Thread funktioniert einwandfrei, prinzipiell muesste alles funktionieren, wenn ich jetzt nur noch den Befehl zum Neuzeichnen des Fensters wuesste. Aber ich finde da nichts... Redraw, Refresh, Repaint Render ???
    Vielleicht hat mir jemand einen Tip.

    Vielen Dank.
    Simon
     
Thread Status:
Not open for further replies.

Share This Page