View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

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

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

4 replies to this topic

Posted 31 March 2000 - 03:39 PM

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!"

### #2lpsoftware  Members

Posted 31 March 2000 - 03:55 PM

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

Posted 31 March 2000 - 06:43 PM

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!"

Posted 03 April 2000 - 01:12 PM

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()

thankyoubye

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

Edited by - Bad Monkey on 4/3/00 7:19:15 PM

### #5Anonymous Poster_Anonymous Poster_*  Guests

Posted 03 April 2000 - 02:19 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

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.