Blender Git Loki

Blender Git "temp_motionpaths" branch commits.

Page: 47 / 95

March 23, 2015, 11:46 (GMT)
Mesh overrides for duplis from cached Alembic data.

If a duplicator has cached data it will now replace the derivedFinal
mesh of objects with the cached version for drawing.

This is a compromise atm: It would be better to actually draw derived
meshes directly, so that we don't have to modify objects. Then we could
also have multiple different instances of the same orignal object
(in whatever way these might be defined). DNA Objects would then be
totally separate from duplis, but at this point the drawing and render
code makes this unfeasible.
March 23, 2015, 11:46 (GMT)
Sanity check for dupligroup caching functions.
March 23, 2015, 11:46 (GMT)
Removed the now redundant "Read" toggle from cache libraries.

At this point the reading is toggled on the side of group duplicators.
March 23, 2015, 11:46 (GMT)
Disable additional depsgraph tagging through cache libraries.

This code is outdated due to changes in reading code and obscures some
genuine depsgraph behavior.
March 23, 2015, 11:46 (GMT)
Mesh storage and reading in child objects for dupligroups.

The layout of the Alembic files resembles the DNA structure in Blender:
- On the top level (under the top/root node) there are Abc::Objects for
Blender ID datablocks (currently Object and Group)
- Objects store final data (DerivedMesh) and later simulation results
etc.
- Groups store their full duplilists for instancing. Currently there is
no recursive nesting of groups, since this would limit duplis to
dupligroups and exclude e.g. duplifaces.

On reading the duplilist gets reconstructed and stored in the DupliCache
for a duplicator empty (the group instance). DerivedMesh data is stored
in a hash table for each instanciated object and can later replace
finalDM in drawing and rendering.
March 23, 2015, 11:46 (GMT)
Enable frame updates of duplicache through use of an invalidation flag.
March 23, 2015, 11:46 (GMT)
Removed group pointer from cache libraries and use object->cachelib
pointer instead.

This change makes it possible to have group duplicators using different
versions of a cache.
March 23, 2015, 11:46 (GMT)
Fix for wrong ID code used in RNA->idcode mapping.
March 23, 2015, 11:46 (GMT)
Removed the explicit duplicache rebuild operator.

The cache is now updated on frame changes automatically, the operator
should no longer be needed.
March 23, 2015, 11:46 (GMT)
Removed unused deprecated functions for cache library.
March 23, 2015, 11:46 (GMT)
Use a cached group only when a CacheLibrary is actually available.

Otherwise the regular duplilist generator is used.
March 23, 2015, 11:46 (GMT)
Store and apply dupli object transforms in the Alembic cache.

Note that the cache stores dupli matrices without the final parent
transform, since it only knows about the group itself. The duplicator
obmat is applied to the duplis after reading the cache.
March 23, 2015, 11:46 (GMT)
Replace usage of the procedural duplilist generation by cached duplilist.
March 23, 2015, 11:46 (GMT)
Some disabled code to enable automatic cache updates on every duplilist
creation call.

This is executed *a lot* (even for simple things such as viewport
panning), so the code is probably not suitable in this form. At least
it could do a frame comparison to avoid unnecessary updates.
March 23, 2015, 11:46 (GMT)
Use a nested Object writer to store the Object ID blocks used by dupli
lists.
March 23, 2015, 11:46 (GMT)
Alternative dupli generator function for creating duplis in a group
without a specific parent.
March 23, 2015, 11:46 (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 23, 2015, 11:46 (GMT)
Handle dupli cache on object copy and freeing.
March 23, 2015, 11:46 (GMT)
Better dupligroup Alembic writer.

Uses the duplilist generated by Blender to define instances, instead of
recreating the group layout. This omits some information about actual
structure of the DNA, which might be useful later on. The main problem
is that the duplilist itself does not encode this, so it's a tradeoff
between either including the Group structure or omitting the other
dupli types, like face, vertex, particle duplis.
March 23, 2015, 11:46 (GMT)
Moved the dupli cache reading code into a AbcDupligroupReader class.

This is more in line with how readers work in the Blender Alembic
implementation elsewhere.

Generally, readers are less persistent than writers: they are created
whenever cache results need to be updated (e.g. on frame changes) and
discarded afterward. Writers OTOH stay alive during the whole baking
job, since they keep the references to Alembic Writer instances and can
only be deleted once the writing for that part is done.
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021