Open Inventor -"Animation" Neuzeichnen des Fensters ??

Dieses Thema im Forum "Programmieren" wurde erstellt von simon251, 14. Oktober 2005.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. simon251

    simon251 ROM

    Registriert seit:
    14. Oktober 2005
    Beiträge:
    1
    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
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen