March 26, 2015, 13:13 (GMT) |
Updated cache reading function for the new duplilist structure. Now we store duplilists entirely inside a single alembic object for the group. This allows using all the generated duplis, which would be difficult if the alembic file had to define all the possible recursive dupli relations that Blender allows, beside straightforward Group duplis. |
March 26, 2015, 13:13 (GMT) |
Replace usage of the procedural duplilist generation by cached duplilist. |
March 26, 2015, 13:13 (GMT) |
Use a nested Object writer to store the Object ID blocks used by dupli lists. |
March 26, 2015, 13:13 (GMT) |
Removed unused code. |
March 26, 2015, 13:13 (GMT) |
Cache reading functions for constructing a nested dupligroup list based on Alembic cache data. |
March 26, 2015, 13:13 (GMT) |
Include mesh writers in the cache writers list. |
March 26, 2015, 13:13 (GMT) |
Removed current implementation of cache reading from various parts of BKE (DerivedMesh, particles, cloth). The new cache implementation will be used for constructing dupli data instead, bypassing the complexities of the modifier stack. Conflicts: source/blender/blenkernel/intern/cloth.c source/blender/blenkernel/intern/particle.c source/blender/blenkernel/intern/particle_system.c Conflicts: source/blender/blenkernel/intern/particle.c source/blender/blenkernel/intern/particle_system.c |
March 26, 2015, 13:13 (GMT) |
Fix for name collisions in compound properties when writing CustomData. This is not clearly documented for Alembic, but apparently properties inside compounds still need to be name uniquely for the whole object. This is somewhat involved for Blender's CustomData, because we have 5 different customdata elements for meshes (vert, edge, face, poly, loop) and each of these can have the same types and multiple layers of the same type ... |
March 26, 2015, 13:13 (GMT) |
Fix for particle pathcache caching: have to check the psys->renderdata pointer to figure out if we are evaluating with render settings. |
March 26, 2015, 13:13 (GMT) |
Fix for potential size issue: need 64 bits for CustomDataMask types. |
March 26, 2015, 13:13 (GMT) |
Improved edge attribute caching. Now edges should be fully restored from cache, fixing edge display. |
March 26, 2015, 13:13 (GMT) |
Ugly hack for caching code to deal with quirky modifier stack behavior. CustomData layers are pruned by the CDDM_copy function when they have CD_FLAG_NOCOPY set. This is based on later modifiers in the stack, which can specify that they require certain data layers - but the caching modifier itself should store only what is needed by later modifiers. It means we cannot easily keep a full copy of the DM in the cache modifier to writing into caches later. For now the hackish solution is to temporarily disable NOCOPY flags when copying the DM. This is really not nice and needs a better solution. |
March 26, 2015, 13:13 (GMT) |
Implementation of MDeformVert customdata layers in Alembic. |
March 26, 2015, 13:13 (GMT) |
Initial code to support dupli group instancing and overrides through Alembic caches. This creates representations (Abc::Object) for Blender Object and Group datablocks in the Alembic files and uses Alembic instancing to define the dupligroup hierarchy. This leads to a relatively flat hierarchy in Alembic files: Top -> Object/Group -> DerivedMesh/Particles/Hair/Cloth/Smoke/... The dupligroup structure can not be represented by a hierarchical structure such as the Alembic object nesting, because of the many-to-many relationship between objects and groups (a group can contain multiple objects, multiple objects can instance the same group). Instead we use the instancing feature of Alembic to represent dupligroups. This is created in 2 stages to ensure all the main ID blocks have been serialized before creating references. |
March 26, 2015, 13:13 (GMT) |
Nicer error handling for unimplemented CustomData layer types. Instead of failing an assert, simply print an error message and return gracefully. We don't want Blender crashing because of this. |
March 26, 2015, 13:13 (GMT) |
Nicer info printing support for instances in Alembic files. This now avoids repetition of internal instance structure. |
March 26, 2015, 13:13 (GMT) |
Fix for some archive checks to make sure we don't access invalid data. This can happen if the archive file cannot be opened for some reason. |
March 26, 2015, 13:13 (GMT) |
Fix for Alembic info printer printing to std::cout instead of the internal stringstream. |
March 26, 2015, 13:13 (GMT) |
Fix for invalid ob->data access in case non-mesh objects are in the cached group. |
March 26, 2015, 13:13 (GMT) |
Omit hair path lengths for anything but the first sample. We can safely assume that paths don't change their lengths. This might safe some cache space. |
|