Jump to content

  • Log In with Google      Sign In   
  • Create Account

Collision Detection


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
5 replies to this topic

#1 Dino   Members   -  Reputation: 172

Like
Likes
Like

Posted 11 September 1999 - 10:09 AM

First off, I would like to give Tanstaafl a round of applause. Please, Tanstaafl, stand up and take a bow...

Now onto the question at hand:
I am working on an isometric engine and was wondering if anyone tried to implement a psuedo-3d collision detection. What I mean is that in isometric games, all objects are 2D. When collision is being calculated, it is usually calculated on a flat 2D plane. For example: If you run into another person, all you normally have to do to move around them is move up 1 pixel and then you will walk behind them. This is an easy way to do collision detection, but it's not realistic enough for me.

What I would like to implement is collision detection based on occupied space. Normal sprites are bounded by a rectangle... I want a 3D cube to bound my sprite but not have a true 3D object. This was a pseudo-3D collision detection can take place.

Has anyone every try this or is this idea way too stupid to even attempt?

Thanks for the feedback.



Sponsor:

#2 Niels   Members   -  Reputation: 122

Like
Likes
Like

Posted 10 September 1999 - 11:30 AM

Yes, I have... As I noted in another thread earlier today, I have an isometric engine that sees the world internally in 3D. The only two places I deal with 2D is when rendering (mapping Isometric 3D space to 2D) and when grapping mouse input (mapping 2D screen coord to 3D space).

I do not use cubes though, I use spheres since they are a lot easier to deal with and requires less space to define.

/NJ


#3 TANSTAAFL   Moderators   -  Reputation: 1152

Like
Likes
Like

Posted 11 September 1999 - 01:21 AM

hey, dino. glad you could make it to my little forum.

:::bows and waves to the crowd:::

i've been playing with a couple of ideas along the lines of collision detection in iso.

what i've come up with so far has been a combination of anchor points, bounding rectangles, low and high altitude of the object (which makes the bounding rect into a bounding 3d box), and a monochrome bitmap average cross section.

the anchor point is where a perpendicular line from the center point(or other reference point) of the object to the plane of the floor is.

the bounding rectangle is to encompass a shadow of the object in relation to this anchor, as though the object were flattened into the 2d plane of the tiles.

the bounding rectangle should have coordinates that treat the anchor as if it were (0,0), so that determining the world coordinates of the rect is easy.

the shadow(the mono bmp) fits within this bounding rect, and represents the average horizontal (perp to the z axis) cross section of the object. this wont be perfect, but i'm trying to go for simplicity and therefore speed here.

so, to do the actual collision detection, you first compare the lower and upper extents of the objects altitude. if there is an intersection in this range, then an actual collision may have occured(and you can check the shadow to determine the extent of the collision), otherwise, one object may be above another object, and again, you can check the bounding boxes to see how much.

my ideas on this topic, at this time, are still a little confusing, as i havent had time to refine them or test them.



#4 Jim Adams   Members   -  Reputation: 440

Like
Likes
Like

Posted 11 September 1999 - 06:41 AM

I use a bounding box method myself.
For every frame of animation, I put
a custom sized bounding box around each
sprite, with a width, depth, height
at two points to create 3d coordinates.

When I need to, I can do a quick check
against other sprites, or even against
my heightmapping to see if a collision
occured. It's very fast to check,
just as you would in 2d.

First check in 2d if they collide, then
do that last check if too far above or
below.

------------------
Jim Adams
Co-Designer 'The Light Befallen'
tcm@pobox.com
http://www.lightbefallen.com


#5 Jim Adams   Members   -  Reputation: 440

Like
Likes
Like

Posted 11 September 1999 - 06:42 AM

I use a bounding box method myself.
For every frame of animation, I put
a custom sized bounding box around each
sprite, with a width, depth, height
at two points to create 3d coordinates.

When I need to, I can do a quick check
against other sprites, or even against
my heightmapping to see if a collision
occured. It's very fast to check,
just as you would in 2d.

First check in 2d if they collide, then
do that last check if too far above or
below.

------------------
Jim Adams
Co-Designer 'The Light Befallen'
tcm@pobox.com
http://www.lightbefallen.com


#6 Dino   Members   -  Reputation: 172

Like
Likes
Like

Posted 11 September 1999 - 10:09 AM

Ok... looks like the bounding cube wins. Thanks everyone.

------------------
Dino M. Gambone
http://www.xyphus.com/users/dino

Good judgement is gained through experience. Experience, however, is gained through bad judgement.







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