Week 3
- Improved API between solver and Blender to reduce redundant copies. Also fixed a bug where some vertices (that are a part of the tet mesh and not surface mesh) were not being cached properly. Still some issues related to starting/restarting sims and the model xform, but I’ll work those out soon.
- Updated lattice generation. Right now it is a grid of variable length that fully encloses the surface mesh, each grid cell makes up 5 tets. This can be improved in the future to by subdividing certain grid cells.
- Before implementing cell subdivision, we’ll want to review metrics for determining if a grid cell should be subdivided. There is related literature on this.
- Using a grid/lattice this way has some benefit. In particular it allows animators/users to directly increase resolution in areas of interest (e.g. surface of the mesh), and reduce resolution where it is less important (e.g. interior of the mesh). Though if there are any animators reading this that have other thoughts and opinions, I would be happy to hear them!
- Implemented a basic AABB tree with a generic interface for traversal. It is currently being used in the lattice generation to remove unnecessary cells, and will also be used in collision detection. I’ll be making use of the kernels in BLI_math_geom.h for a lot of this.
- Attached is an example of the Suzanne colliding with a ground plane. The lattice is not visible. Not that interesting or a good stress test, but shows that things are behaving as expected.
Next week
- Self collisions and collisions with other objects in the scene.
- Interface with “goal positions” to allow scripted motion.
- Some more interesting test cases.