
A couple weeks Andrew Linden gave a talk on how Havok 4 works at SL Views. The following are my notes. If you have trouble deciphering them, post here and I'll try and answer.
The formatting might be a bit funny also - the forumware messed up my formatting and I'm trying to fix it. (Hey LL, can we we fix forums please?)
Anyways, my notes:
Andrew's Talk:
Tasks=prims
New Physics API: Can connect to havok4 or havok1 (or whatever) back end
- per prim callback currently broken
- volume detect broke
- plan to roll out havok4 on some sims first
- main goal: fix deep thinks
- goal: run-time choice on which physics engine to use (maybe not exposed to
residents)
- avatar walk/run speed may be different
- spheres actually now spheres
- llGetMass() will return the same, but underneath, everything's mass actually increased
Hopefully script energy unaffected, rez times unaffected
- New linking model - what things can link into 1 object (hopefully more consistent)
(Old one more dependent on rotation, the new one uses bounding spheres?)
- better colliding sculpties in the future (unknown time)
- TBD: objects/parcel collision test, fixing problems of people rezzing stuff that
overhangs into neighboring parcel
- no increase in #prims/physical object
- blue sky:
- - Havok has a built-in vehicle engine (SL doesn't use it - problems with UI, how to
select wheels, etc)
- targetomega could have been fixed, but chose not to because of griefing
- distance between prims? (.1m on old havok, havok4 is .1m still, but spheres
will note have a collision tolerance) "collision tolerance"
- - collisions where things are not interpenetrating are CPU cheaper
- partial phantom?
- - Hopefully eventually a way to allow you to specify your physics box (collision hints)
- - - specify that your concave object collides like a convex object
- - some phantom hopefully
- - low hanging fruit
- joints disappearing
- - Maybe come back in the future (andrew prefers to solve heirarchy first)
- Way to find out which havok?
- - Lindens can do that, we can't (in the future...)
- megaprims?
- - preview currently has anti-megaprim code
- - continued to be supported in semi-broken state
- - no >256m
- affect sim crossings?
- - no
- if physics in sim slows down, it will lower physics LOD (concave objects become convex
objects)
- - Each prim in a link set will be individually boxified
- collisions different how?
- - vehicles (esp. ground vehicles affected - friction too high, catching its nose)
- - bouncing between seams worse in havok4
- - hack fix in SL: If collision normals unusual, stick in the cached normal
- - hack fix in SL: de-rotate if detects a nose-dive
- pushobject behaves different (fixed kinda) in havok4
- - objects at a distance if you ask for astronomical amount of push
- flexiprims remain as they are (maybe do something after heirarchical stuff done)
- havok1, volume detect used the box around the object, havok4 uses the real object
- there's a tool that shows what's been LOD's (boxed), but only exposed to Lindens
(bandwidth constraints - it feeds collision data through ethernet)
- avatar stuck? Why?
- - because the avatar getting up animation would look stupid if you were still sliding
down the hill
- - feature request, independent, probably not happening
- no sim scheduler changes (45 fps)
- Everything internally broken up into triangles and spheres?
havok1: triangles & boxes
havok4: triangles, boxes, spheres, convex meshes, etc
- New optimization rules? convex better than concave etc prims better? Spheres faster
than cubes?
- - spheres cheaper than boxes now cheaper than cylinders
- No new materials now, maybe later
- - probably per-prim friction & restitution setting (sliders)
- Building limit from 768m to 1024m
- - shooting a bullet straight up - it might hit the "ceiling" and come back down
- convex hull viewer would be nice
- what's the mop?
- - A MOP is like a collection of prims into a single object, in some data
structure (like a BSP tree or a quad tree) that orders the sub-prims in a
way that it is intelligent to parse with havok. Objects with >=5 prims are
converted into MOPs
Questions I didn't get around to asking
- broadphase/narrowphase collision detection?
- floating point precision?
- universal speed limit?
Edit: s/convex/concave/
Edit: New link:
Andrew talks about simulation islands, broadphase, narrowphase collision detection here:
http://blog.secondlife.com/2007/10/04/second-life-havok4-beta-preview-temporarily-offline/#comment-491528