Blender Git Commits

Blender Git "gooseberry_farm" branch commits.

Page: 45 / 93

March 23, 2015, 11:46 (GMT)
Combined storage of render and realtime data in caches.

Caches now create 2 new roots below the main 'top' object of Alembic:
root and root_render for realtime and render data respectively.
This makes it easy to switch the whole archive to either of the modes
during baking and for constructing dupli caches.

Alternatively individual objects could store hires versions of their
data. This would also be more efficient if the cache contains many
simple objects which don't have 2 different variants. However, such
design decisions are difficult to make at this point and the
implementation can be modifier later.
March 23, 2015, 11:46 (GMT)
Fix for use of wrong CustomData for tessfaces.
March 23, 2015, 11:46 (GMT)
MCol customdata caching.
March 23, 2015, 11:46 (GMT)
CD_NORMAL support for mesh customdata caching.
March 23, 2015, 11:46 (GMT)
Replacing boundbox temporarily during drawing is dangerous, since it
can be freed at any point.

Luckily we only need the boundbox locally for testing dupli visibility.
March 23, 2015, 11:46 (GMT)
Distinguish realtime/render setting in the Object writer.

Now the derived_render mesh version is created locally when writing
render results.
March 23, 2015, 11:46 (GMT)
Disable the bake operator if cache reading is enabled.

Re-baking cache results is not technically prohibited, but not useful
and allowing only read or write selectively gives a nicer workflow.
March 23, 2015, 11:46 (GMT)
Added customdata writers/readers for missing mesh edge, poly and loop
data.
March 23, 2015, 11:46 (GMT)
Test for NULL archive pointer when writing as well.

This should not usually happen because the operator asks for permission
to delete the file prior to writing, but should be checked nevertheless.
March 23, 2015, 11:46 (GMT)
Main argument is no longer needed for cache reading, the cachelib is
now given explicitly.
March 23, 2015, 11:46 (GMT)
MTFACE customdata is not suitable or necessary for caching, so disable
it.
March 23, 2015, 11:46 (GMT)
Safeguard against crashes from invalid Alembic file paths by returning
NULL archive pointers.

This allows writer/reader code to test against obvious archive errors
easily and is unmistakable.
March 23, 2015, 11:46 (GMT)
Skip drawing of particle systems (including hair) when using cache
duplis.

Particle systems can not be overridden from caches easily, there are too
many strings attached to the data and code to make this reliable.
Instead, a new simplified data structure for reading hair from caches
will be added, which replaces drawing and rendering of particle data.
The original particle data is not updated through duplis, so is usually
out of sync and should not be displayed.
March 23, 2015, 11:46 (GMT)
UI cleanup and a bit nicer workflow by treating read/write mode like
an enum toggle.
March 23, 2015, 11:46 (GMT)
Removed unused variable.
March 23, 2015, 11:46 (GMT)
Cycles support for dupli caches.

If a cache is read-enabled cycles will now use the cached mesh data
instead of dupli results.
March 23, 2015, 11:46 (GMT)
Calculate bounding boxes for cached DMs to avoid visual popping when
using the original Object's bb.
March 23, 2015, 11:46 (GMT)
Use a new flag in duplicator objects to enable cache reading and avoid
unnecessary dependencies.

This flag will replace the current "read" mode on cache libraries.

Beside enabling cache reading, it also disables the current "fake"
dependencies between duplicators and their group objects. This is
exploiting the layer visibility mechanism in depsgraph to ensure that
animated group objects get evaluated when used by a visible duplicator,
even when they are not themselves visible. These dependencies cause
group object updates even if the duplicator is using cached results.
To avoid this unnecessary overhead and make caching worthwhile we
rebuild depsgraph without these relations when using the cache instead.
March 23, 2015, 11:46 (GMT)
Added a cache library pointer to objects as a replacement for CL->GR
pointers.

Relationship between CacheLibrary, duplicator Objects and Groups is
difficult. There are a number of somewhat conflicting goals:
- CacheLibraries write out data for objects and dupli groups. Multiple
objects can be stored in the same cache: CL *->* GR
- Objects can override a dupli group with different caches: OB *->1 CL
- As before, each object can be the duplicator for one group: OB *->1 GR

To combine these requirements, the first relationship will be made
indirect. Only the Object -> Group/CacheLib relations are explicit
pointers in the DNA. For finding all objects contained in a cache
library the usual recursive DNA tagging system must then be used.
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.
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021