Got a problem with objects in 3D world...

Started by
3 comments, last by Bucket_Head 24 years ago
Alright, so far, I have three game objects: The world, (terrain) the camera, and a ship (floating triangle). I had gotten the terrain working just fine, and I can spend all day flying around my little world. However, when I try to show a third object, which most everything else in the game(s) I intend to make would be, things don''t show up in the right place. I commented out the code for rotating the object according to its roll pitch and yaw, and the object showed up fine EXCEPT for that, so I know the problem is in the rotation, not the translation. See, when rotation is activated, things get screwy...I think I am doing matrix operations out of order or something. This is what I have got, in pseudo code... push_matrix Rotate (croll, cpitch, cyaw) Translate(-camx, -camy, -camz) render_scene() push_matrix translate(camx, camy, camz) rotate(oroll, opitch, oyaw) //line A translate(ox, oy, oz) translate(-camx, -camy, -camz) render_object() pop_matrix pop_matrix What am I doing wrong? Once again, when I comment out line A, things are translated fine, but not rotated (triangle always facing north) but when I uncomment it, things are...strange. Please help, thank you for your time. - Hai, watashi no chichi no kuruma ga oishii deshita! ...or, in other words, "Yes, my dad's car was deliscious!"
- Hai, watashi no chichi no kuruma ga oishikatta desu!...or, in other words, "Yes, my dad's car was delicious!"
Advertisement
Sorry, I can''t help you with your problem; I just wanted to say that I like your sig at the bottom of the post!

Martin
______________Martin EstevaolpSoftware
Argh...well, thanks, heh...I''m currently taking my second semester of Japanese, it''s pretty nifty.

Anyways, I rewrote some of the code (not deleting the old code, however) and what I have NOW is something like this...

push_matrix
Rotate (croll, cpitch, cyaw)
Translate(-camx, -camy, -camz)
render_scene()
pop_matrix

push_matrix
Rotate (croll, cpitch, cyaw)
Translate(objx-camx, objy-camy, objz-camz)
render_object()

...Once again, this is working perfectly translating-wise, but the object is not being rotated. When I try to put in code to rotate it, it gets funky. I''ve tried a number of different things, and I haven''t gotten anything to work yet. Please help me! Thank you for your time.

- Hai, watashi no chichi no kuruma ga oishii deshita!
...or, in other words, "Yes, my dad's car was deliscious!"
- Hai, watashi no chichi no kuruma ga oishikatta desu!...or, in other words, "Yes, my dad's car was delicious!"
Howdy Bucket_Head,

I think I have an idea why everything is screwy... you seem to be pushing and popping matrices in the wrong places.

What you should be doing when rendering a frame (in logical steps) is 1) apply the viewing transformation, 2) then, for each object in your scene, save the viewing matrix, apply transformations and draw, then restore the viewing matrix...
(well, at least this is how I do it, and it works )

so try this:
glPushMatrix()// APPLY VIEWING TRANSFORMATION (ie camera)//do your rotations around each axis. NOTE: i have found order does matter(maybe its just me?)glRotate(...)glRotate(...)glRotate(...) glTranslate(...)//NOW DRAW YOUR OBJECTSglPushMatrix()   //save matrix staterender_terrain()glPopMatrix()    //restore matrix stateglPushMatrix()   //save matrix stateglRotate(...)    //do object rotationsglTranslate(...) //do object translationrender_object()glPopMatrix()    //restore matrix stateglPopMatrix()  


Hope that is helpful.
thankyoubye


-------------
squirrels are a remarkable source of protein...

Edited by - Bad Monkey on 4/3/00 7:19:15 PM
Your mistake is a rather simple one that can make things seem completely messed up: You need to translate first, then rotate. If you have already tried this and it still doesn''t work then I don''t know what''s going on (beyond what others have already mentioned).

AirMouse

This topic is closed to new replies.

Advertisement