Jump to content

  • Log In with Google      Sign In   
  • Create Account


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.

  • You cannot reply to this topic
4 replies to this topic

#1 Bucket_Head   Members   -  Reputation: 308

Like
Likes
Like

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

Sponsor:

#2 lpsoftware   Members   -  Reputation: 122

Like
Likes
Like

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

#3 Bucket_Head   Members   -  Reputation: 308

Like
Likes
Like

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

#4 Bad Monkey   Members   -  Reputation: 145

Like
Likes
Like

Posted 03 April 2000 - 01:12 PM

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 OBJECTS
glPushMatrix() //save matrix state
render_terrain()
glPopMatrix() //restore matrix state


glPushMatrix() //save matrix state
glRotate(...) //do object rotations
glTranslate(...) //do object translation
render_object()
glPopMatrix() //restore matrix state


glPopMatrix()


Hope that is helpful.
thankyoubye


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

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

#5 Anonymous Poster_Anonymous Poster_*   Guests   -  Reputation:

Likes

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.



PARTNERS