Home » Community » Forums » » Opposing Face Geometry
  Intel sponsors gamedev.net search:   
[Control Panel] [Register] [Bookmarks] [Who's Online] [Active Topics] [Stats] [FAQ] [Search]

Add Forum to Favorites |  Send Topic To a Friend | View Forum FAQ | Track this topic


 Last Thread Next Thread 
 Opposing Face Geometry
Post Reply 
hi there. i was very impressed by this article because it gives a solution to a problem that is still in research and because it gives me a solution to a very similar problem. i want also to make some assumptions on the fact that the algorithm could be applied only to convex obejects and a concave one may need to be split. i think about another solution, and i want to ask the author about this:

let's say we have a dynamic concave object, a human-like object, and it's a single mesh. now let's say we add some control points in critical sections, like at the top of this fingers, his head, feet, on his elbows, heaps, etc(there can't be more than 50 of some control points). then we don't compute the bounding sphere at start, we compute it at every frame, from the control points. that's assure us that there will be no intersection. then we don
t compute the closest faces to the opposite sphere center, we do it relative to the closest control point(s). i didn't tried out the alghoritm, it's just a supposition. what do u say about it.

Mihai

 User Rating: 1057   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

I was very interested in reading this article because I'm a college student interested in the applications of Computer Science to Interactive Entertainment. Although I am only a freshman, I found the article to be understandable and insightful.

In fact, it inspired me to do some thinking of my own and there may be a small (?) optimizations that can be made.

While you're going through all the vertices of the object to find the farthest one from the center to make the bounding sphere, for no added cost, you can find the vertex closest to the center. By checking whether an outer sphere intersects with an inner sphere (two checks of constant time) you can determine whether there is a trivial collision. This would be most beneficial for objects that have a large inner-sphere (example: Jigglypuff). If this isn't implemented, and it's a trivial collision, there's at least some O(n) work that's going to be done.

As a question, if your object is stored solely as a bare-bones collection of vertices, how do you determine which three-vertex combinations are faces? If we're assuming convex objects, and a vertex has stored knowledge of its neighbors, why is it better to cycle through the faces and find the closest ones to the opposing object instead of cycling through the vertices to find the vertex closest to the opposing object and considering the closest faces to be those that include this vertex?

 User Rating: 1015    Report this Post to a Moderator | Link

Nice article. The comparing only the center of a convex object to the triangles of another convex object never occured to me.

I dunno how useful performing step 6 (subset A sphere vs subset B sphere) would be. I can't imagine it early culling enough to justify its additional constant cost.


 User Rating: 1045   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

hi. finally i've managed to project an algorithm for concave objects, not like the one i've described above, and it is not tested yet, but i think is quite powerful. the algorithm is using convex hulls. so we have 2 concave objects that own a convex hull(which is precalculated at loading time). we have also some bounding spheres that are calculated every frame(like i've described in the first post). the algorithm is basicly the same with modifications: we compare the bounding spheres of the 2 convex hulls. so the objects we are working are the 2 convex hulls. parts of this hulls(convex) are the same with the original objects, and there are other parts that are covering some concavities. when we compare the lists of faces of the 2 selections, we compare the faces that are belonging to the object A and it's convex hull with the faces from object B. if we detect a collision between such a face and a face of B's bounding sphere that only covers a concavity, then we refine the concavity(something like a progressive convex hull) and test again. i don't know if u got me, but if u don't or have any comments please post them, i want to know about it. bye

 User Rating: 1057   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

Great, article. Explained very well, very accuratly with all relavent information given. Thank you very much for writing such a polished, complete, and usufull article.

Pat

 User Rating: 1012   |  Rate This User  Send Private MessageView Profile Report this Post to a Moderator | Link

quote:
Original post by Anonymous Poster
While you're going through all the vertices of the object to find the farthest one from the center to make the bounding sphere, for no added cost, you can find the vertex closest to the center. By checking whether an outer sphere intersects with an inner sphere (two checks of constant time) you can determine whether there is a trivial collision.



The distance of the vertex closest to the center is usually not an inner sphere (think of a cube, for example). If the sphere you get intersects the outer sphere of the other object, you still don't know if they intersect.



 User Rating: 1015    Report this Post to a Moderator | Link

All times are ET (US)

Post Reply
 Last Thread Next Thread 
Forum Rules:
You may not post new threads
You may post replies
You may not edit your posts
You may not use HTML in your posts
Jump To:
Administrative Options: