<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-gb">
	<link rel="self" type="application/atom+xml" href="https://pybullet.org/Bullet/phpBB3/app.php/feed/topic/11591" />

	<title>Real-Time Physics Simulation Forum</title>
	
	<link href="https://pybullet.org/Bullet/phpBB3/index.php" />
	<updated>2017-04-14T17:14:26+00:00</updated>

	<author><name><![CDATA[Real-Time Physics Simulation Forum]]></name></author>
	<id>https://pybullet.org/Bullet/phpBB3/app.php/feed/topic/11591</id>

		<entry>
		<author><name><![CDATA[RandyGaul]]></name></author>
		<updated>2017-04-14T17:14:26+00:00</updated>

		<published>2017-04-14T17:14:26+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39170#p39170</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39170#p39170"/>
		<title type="html"><![CDATA[Re: Continuous GJK]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39170#p39170"><![CDATA[
Yes, the problem is the axis flips. It can flip when the axis goes from penetrating to non-penetrating, and can also flip as the two vectors rotate relative to one another: <a href="https://en.wikipedia.org/wiki/Cross_product#/media/File:Cross_product.gif" class="postlink">https://en.wikipedia.org/wiki/Cross_pro ... roduct.gif</a><p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=10235">RandyGaul</a> — Fri Apr 14, 2017 5:14 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[bone]]></name></author>
		<updated>2017-04-11T13:51:09+00:00</updated>

		<published>2017-04-11T13:51:09+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39147#p39147</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39147#p39147"/>
		<title type="html"><![CDATA[Re: Continuous GJK]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39147#p39147"><![CDATA[
I'm not enough of a mathematician to figure out what is meant by Dirk there, but in practice it is incredibly difficult to get accurate CCD for the 3D edge-edge case, even if you assume the 4 vertices are linearly moving through space. The normal you speak of often twists around in space between time steps.<p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=1626">bone</a> — Tue Apr 11, 2017 1:51 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[RandyGaul]]></name></author>
		<updated>2017-04-10T19:09:42+00:00</updated>

		<published>2017-04-10T19:09:42+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39143#p39143</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39143#p39143"/>
		<title type="html"><![CDATA[Re: Continuous GJK]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39143#p39143"><![CDATA[
Convexity <a href="https://en.wikipedia.org/wiki/Convex_function" class="postlink">https://en.wikipedia.org/wiki/Convex_function</a><p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=10235">RandyGaul</a> — Mon Apr 10, 2017 7:09 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[RandyGaul]]></name></author>
		<updated>2017-04-07T20:01:53+00:00</updated>

		<published>2017-04-07T20:01:53+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39137#p39137</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39137#p39137"/>
		<title type="html"><![CDATA[Re: Continuous GJK]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39137#p39137"><![CDATA[
<blockquote class="uncited"><div>We use this technique in Source 2 and it works great. It is not trivial to extend to 3d due to the non-convexity of the edge-edge case though.</div></blockquote>Would it be possible to elaborate on what the "non-convexity" of edge-edge is? After studying Box2D, it seems like an approach could be to form a plane with the normal as Cross( n0, n1 ) where n0 and n1 are the edge directions, and use that as a plane (and a vert from one of the edges) to perform a bilateral advancement.<p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=10235">RandyGaul</a> — Fri Apr 07, 2017 8:01 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Dirk Gregorius]]></name></author>
		<updated>2017-03-23T19:07:33+00:00</updated>

		<published>2017-03-23T19:07:33+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39063#p39063</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39063#p39063"/>
		<title type="html"><![CDATA[Re: Continuous GJK]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39063#p39063"><![CDATA[
You can maybe think of it this way. Say you sweep two spheres. The swept volumes would be capsules. If you compute the overlap of these capsules with GJK it still wouldn't give you the TOI.<br><br>CCD is a root finding problem. So I think your intuition for binary searching is good. For linear time of impact (no rotation) using conservative advancement is a simple choice. You can look into Gino's paper I posted earlier for an optimization. For non-linear time of impact (with rotations) you can look into conservative advancement. I would't use it in practice though as it has a couple of problems which Erin explained and solved in his excellent presentation here:<br><br><a href="http://box2d.org/files/GDC2013/ErinCatto_GDC2013.zip" class="postlink">http://box2d.org/files/GDC2013/ErinCatto_GDC2013.zip</a><br><br>We use this technique in Source 2 and it works great. It is not trivial to extend to 3d due to the non-convexity of the edge-edge case though.<p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=14">Dirk Gregorius</a> — Thu Mar 23, 2017 7:07 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[boble]]></name></author>
		<updated>2017-03-23T16:02:03+00:00</updated>

		<published>2017-03-23T16:02:03+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39062#p39062</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39062#p39062"/>
		<title type="html"><![CDATA[Re: Continuous GJK]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39062#p39062"><![CDATA[
Thanks for the answer! My intuition was that using GJK on 4d objects, built from the combined vertices of 3d objects at times t and t+1, would determine whether a collision occurs within that time interval or not. I can't think of a simple way of getting minimum distance or penetration depth though, so I guess the application of that would be limited to binary searching for finding the collision time?<br><br>The advantage of this over simply using the 3D swept volumes is that sometimes swept volumes can intersect when there is really no collision and these false positives would be avoided. Not sure if there's any application where it's worth it, though.<p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=12109">boble</a> — Thu Mar 23, 2017 4:02 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Dirk Gregorius]]></name></author>
		<updated>2017-03-22T18:21:11+00:00</updated>

		<published>2017-03-22T18:21:11+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39057#p39057</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39057#p39057"/>
		<title type="html"><![CDATA[Re: Continuous GJK]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39057#p39057"><![CDATA[
Interesting question. Here is how I see it. Say we have two initially disjoint shapes which move through time. At each moment in time there will be two closest points cp2(t) and cp1(t). We need to track these closest points until the distance becomes zero. Hence:<br><br>d(t) = ( cp2(t) - cp1(t) ) * n(t) = 0 (here n is the current contact normal pointing from shape1 towards shape2)<br><br>I don't see how a 4d GJK will solve this equation. <br><br>Regarding other references Gino wrote about raycasting against the CSO here:<br><a href="http://dtecta.com/papers/jgt04raycast.pdf" class="postlink">http://dtecta.com/papers/jgt04raycast.pdf</a><br><br>This is a nice optimization for linear conservative advancement by combining the outer CA and inner GJK loop. At Valve my colleague Jay Stelly wrote an algorithm which uses raycasts backwards to get out of the CSO to solve for the TOI. This is similar to Minkowski Portal Refinement (MPR) which Gary Snethen wrote about in Game Programming Gems.<br><br>HTH,<br>-Dirk<p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=14">Dirk Gregorius</a> — Wed Mar 22, 2017 6:21 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[boble]]></name></author>
		<updated>2017-03-22T16:30:29+00:00</updated>

		<published>2017-03-22T16:30:29+00:00</published>
		<id>https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39056#p39056</id>
		<link href="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39056#p39056"/>
		<title type="html"><![CDATA[Continuous GJK]]></title>

		
		<content type="html" xml:base="https://pybullet.org/Bullet/phpBB3/viewtopic.php?p=39056#p39056"><![CDATA[
I have been researching how to use GJK for continuous collision detection and I feel like I must be missing something because I don't understand why no implementation simply uses a generalized GJK in 4D to include the time dimension. Instead I can only find adaptations of the 3D GJK. Can anyone shed some light on why that is?<p>Statistics: Posted by <a href="https://pybullet.org/Bullet/phpBB3/memberlist.php?mode=viewprofile&amp;u=12109">boble</a> — Wed Mar 22, 2017 4:30 pm</p><hr />
]]></content>
	</entry>
	</feed>
