[ODE] Heightfield / Collision.

gl gl at ntlworld.com
Wed Feb 19 00:41:03 2003


This is a multi-part message in MIME format.

------=_NextPart_000_0078_01C2D7E9.016EDDF0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit


> Hello,

Hi Fabian,

>     /--\
>     |  |  sphere
>     \__/
>      /\<-edge of two triangles
>     /  \
>    /    \<-triangle face
>   /      \
> /terrain \
>
> One thing is contact normals:
> In this case we had just two possible normals: one to the upper
> right, the other to the upper left. But you would the sphere expect
> to bounce upwards. This is the sphere-edge collision.

This is exactly the case I was thinking of, so let me attach a rough (hand
drawn) picture.  I'm thinking that if the two resulting face contact normals
(green and blue) are combined, you do get the right resulting normal, right?

My reasoning is that you simply determine by how much the sphere is
penetrating the plane of a particular face (assuming it intersects the
triangle of course).  You then simply scale this penetration by the face's
normal, and move onto the next face.  You ultimately average all the
resulting vectors out.

As I said, I haven't done collision before (other than raycasting over
heightfields), so I may be wrong, but it'd be fun to be right : ).  Let's
see...
--
gl

------=_NextPart_000_0078_01C2D7E9.016EDDF0
Content-Type: image/jpeg;
	name="Untitled-1.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="Untitled-1.jpg"

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

------=_NextPart_000_0078_01C2D7E9.016EDDF0--