Development Development
Authored by casey
2006-01-19 22:10:00
by casey
Quaternion Double-cover and the Rest Pose Neighborhood

(Direct download)

Here is a video that talks about some more advanced usage of the quaternion double-cover property, and specifically how you can use this to eliminate unwanted blending problems in your animation system.

One thing to note, is that I get a little too excited in one part when I'm doing a physical demonstration of a blending glitch, and I accidentally say "extra 720 degrees" instead of "extra 360 degrees". There is never an "extra" 720 degrees so while most of the time I say "extra 360" in the video, I do slip up once so please don't let that throw you :)

Also, Dave Moore from RAD Game Tools sent me a link to this cool web page that shows how to do the belt trick I mentioned in the lecture: http://gregegan.customer.netspace.net.au/APPLETS/21/21.html.

2006-01-19 05:29:00
by casey
Implementing GJK

(Direct download)

Here is a video that describes how to quickly and efficiently implement the Gilbert Johnson Keerthi algorithm for determining whether or not two convex solids intersect (among other things).

Apologies as always for the poor quality, lack of rehearsal, etc., etc.

One thing I noticed when watching the video myself was that I failed to articulate precisely why the Minkowski difference of A and B must contain the origin in the case where A and B intersect. It is extremely simple to prove: for any point in A, if I try subtracting all the points in B, I will only get 0 if there is a point in B that exactly equals the point in A. Ai - Bj = 0 only when Ai = Bj. Thus, if the two shapes share any points, they will necessarily have some point in the Minkowski difference that equals 0, because we try subtracting all points in B from all points in A.

Now, in GJK, we are only actually operating on the convex boundary of A and B, but fortunately that doesn't matter for convex solids, because the convex boundary of the Minkowski difference will obviously still maintain that property. However, if we were to use concave solids, this would no longer be the case, which is just one of the reasons why you can't throw a concave solid at GJK and have it work.

2005-10-21 04:12:00
by casey
Designing and Evaluating Reusable Components

(Direct download)

Well, it's been almost a year since I gave this lecture, and for several months I've been trying on-and-off to get it converted to flash properly so that the MP3 of the lecture will go with the slides (they rely on eachother quite a bit). Unfortunately, no one can seem to figure out how to import the SWF from OpenOffice into Flash, because for whatever reason, it refuses to read it (even though it plays just fine in the player). So I've given up in frustration for now, and I'm posting a PDF of the slides plus the MP3, and hopefully you can sort-of follow along by playing the MP3 and manually flipping the slides.

PDF of the slides

2005-07-04 19:34:00
by casey
Immediate-Mode Graphical User Interfaces

(Direct download)

I've been long overdue to get some information out there about this technique, which I think is a much better way to write GUI code than what's currently out there.

2003-06-06 15:25:00
by casey
Discontinuous b-spline curve fitting

I did some interesting tricks to make my b-spline solver handle multi-order discontinuities. This lets it do stuff like correctly fit the motions of things that teleport, bounce, etc., without having to break the curve up into sections (you still get one nice big b-spline, that you can evaluate normally). I wrote up some notes on how I did it.

Text of e-mails

2002-10-24 01:45:00
by casey
Distance from plane to axis-aligned ellipsoid

At one point, for some unknown reason, there seemed to be some confusion as to how to find the closest point to an ellipsoid from a plane. So, I tried to dispel that confusion. Hopefully, I succeeded.

Text of post

2002-10-22 02:39:35
by casey
High-res to low-res model map projection

I wrote an extremely fast and accurate high-res to low-res mesh projection tool that I included in the exporters for Granny. It actually knew the exact worldspace quadrilateral mapping for each texel in the projecting texture maps, and would cast rays out of the resulting shape.

Text of e-mails

2002-04-01 00:00:00
by casey
Character Animation Authoring and Programming (Overview)
Site: http://mollyrocket.com/foreign/korea_2002_overview.html
2002-04-01 00:00:00
by casey
Character Animation Programming I (Art pipeline)
Site: http://mollyrocket.com/foreign/korea_2002_pipeline.html
2002-04-01 00:00:00
by casey
Character Animation Programming II (Run-time)
Site: http://mollyrocket.com/foreign/korea_2002_implementation.html