OpenGL | Objekt "mitnehmen"



  • Hey Leute,
    ich hab ein Problem. Und zwar versuche ich mich derzeitig an einer "Collision Detection". Die Kollisionskugeln hab ich bereits in die Würfel integriert. Mein Vorhaben liegt jetzt darin, eine Kugel als Kamera zu benutzen. Das heisst, ich möchte das diese Kugel immer "mitgenommen" wird. Also ständig mit translantiert wird. Klappt soweit auch ganz gut, ich übergebe dabei einfach die Translate und Rotationswerte, mit denen ich sogesehen die komplette Map bewege, sodass die Kugel immer mit der Kamera mitkommt. Doch mein Problem liegt jetzt darin, dass wenn ich die Rotationswerte an die Kugel übergebe, sie nicht mitrotatiert wird. Sie steht auf der Stelle und dreht sich. Wenn ich aber nach vorne oder hinten laufe, bewegt sich die Kugel sauber mit, genau wie ich es möchte. Wie also bekomme ich es hin, dass sich die Kugel immer mit dreht, wenn ich den "Kopf" schwenke? Damit man es sich besser vorstellen kann, hab ich mal einen Screenshot gemacht.
    http://www.online-programmierung.com/02.07.2008.JPG
    Die Schwarz-Lila'nen Texturen sind die Kugeln die in der Kiste sind. Diese werden hinterher berechnet, sodass "Kugel gegen Kugel" stößt und die Kugeln dann bei der Kollision am Ort wo sie zusammengestoßen sind stehen bleiben.
    Also, wäre sehr nett und dankbar wenn mir einer helfen könnte. Deswegen, vielen lieben Dank schonmal im Voraus!



  • Und ich dachte schon, Du haettest es aufgegeben...

    dass wenn ich die Rotationswerte an die Kugel übergebe, sie nicht mitrotatiert wird

    Du machst etwas falsch. Was das genau ist, kann ich Dir nicht sagen.



  • Hmm, schon gut möglich da sich etwas falsch mache^^. Ich versuche mal Code zu zeigen ohne das es zu viel wird.
    Hier soll die Kugel von den ständig geänderten Werte übergeben werden:

    void Kugel_Ich()
    {
    	glTranslatef(trans_x,trans_y,-trans_z-3.0f);
    	glRotatef(rot_x,0.0f,1.0f,0.0f);
    	GLUquadric *sphere6;
    	glBindTexture(GL_TEXTURE_2D, texture[3]);
    	sphere6 = gluNewQuadric();
    	gluQuadricTexture(sphere6, 1);
    	gluSphere(sphere6, 1.2, 100, 100);
    }
    

    Ab hier werden alle Objekte rotiert um durch die Map zu "laufen", von heir aus werden die Werte zur Kugel geshcickt damit sich diese diesen Werten entsprechend mitbewegt:

    int DrawGLScene(GLvoid)
    {
    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
    glLoadIdentity();
    
    glTranslatef(trans_x,trans_y,trans_z);
    glRotatef(rot_x,0.0f,1.0f,0.0f);
    ...
    


  • So, erstmal für diese tolle Hilfe, ich hab jetzt hinbekommen, dass sich die Kugel mitrotiert. Allerdings translantiert sie nur vor und zurück. Das heisst sie bewegt sich wieder nicht mit der Kamera.
    Hatte es vorhin so gelöst:

    void Kugel_Ich()
    {
    	glTranslatef(-rot_x/10,trans_y,-trans_z-3.0f);
    	glRotatef(rot_x,0.0f,1.0f*1.0f,0.0f);
    	GLUquadric *sphere6;
    	glBindTexture(GL_TEXTURE_2D, texture[3]);
    	sphere6 = gluNewQuadric();
    	gluQuadricTexture(sphere6, 1);
    	gluSphere(sphere6, 1.2, 100, 100);
    }
    

Anmelden zum Antworten