Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-05-05Math Lib: rename fill_*, to copy_*Campbell Barton
matching convention for fixed length api, eg: copy_v3_fl
2015-04-30Data transfer - Loop Islands Hell Fixes.Bastien Montagne
This commit fixes several issues: * island_store->items_to_islands_num was reset each time we added a new island, this is stupid! Harmless too, though, afaikt. * partial verts bvhtree (with several islands) was hugely over-allocated... * we would 'leak' in neighbor islands when geometry itself was contiguous. * best_nor_dot was used incorrectly, leading to smaller weights for better matching normal! All those fixes are related to T44522 (through personal communications with reporter).
2015-04-28Fix T44522: loop remapping between meshes when using 'nearest vert, best ↵Bastien Montagne
matching normal' modes would fail on coplanar faces (or smooth verts). Loop remapping is really a tricky topic... For now, we enhance a bit more our Frankenfunc by using distance between dest and source polygons as fallback in case we have too much similar normals... Probably not a perfect solution, but should be robust enough I hope. One core question remains open though: do we want to stick to 'use only seams to detect UV islands'? This makes things much simpler, but will obviously fail in case of actual islands without matching seams. :/
2015-02-05Add Custom Loop Normals.Bastien Montagne
This is the core code for it, tools (datatransfer and modifier) will come in next commits). RNA api is already there, though. See the code for details, but basically, we define, for each 'smooth fan' (which is a set of adjacent loops around a same vertex that are smooth, i.e. have a single same normal), a 'loop normal space' (or lnor space), using auto-computed normal and relevant edges, and store custom normal as two angular factors inside that space. This allows to have custom normals 'following' deformations of the geometry, and to only save two shorts per loop in new clnor CDLayer. Normal manipulation (editing, mixing, interpolating, etc.) shall always happen with plain 3D vectors normals, and be converted back into storage format at the end. Clnor computation has also been threaded (at least for Mesh case, not for BMesh), since the process can be rather heavy with high poly meshes. Also, bumping subversion, and fix mess in 2.70 versioning code.
2015-01-25cleanup: warnings, spellingCampbell Barton
2015-01-19Fix a crasher in recent own mesh remap code ('island' area... :/ ).Bastien Montagne
2015-01-19Make use/computation of lnors consistant.Bastien Montagne
Issue was, when requesting (building) lnors for a mesh that has autosmooth disabled, one would expect to simply get vnors as lnors. Until now, it wasn't the case, which was bad e.g. for normal projections of loops in recent remap code (projecting along split loop normals when you would expect projection along vertex normals...). Also, removed the 'angle' parameter from RNA's `mesh.calc_normals_split`. This should *always* use mesh settings (both autosmooth and smoothresh), otherwise once again we'd get inconsistencies in some cases. Will update fbx and obj addons too.
2015-01-11Fix three issues reported by coverity in own recent code. Including two ↵Bastien Montagne
potential crashers.
2015-01-09BKE: Add 'mesh remap' code.Bastien Montagne
This is the (big!) core of mesh transfer data, it defines a set of structures to represent a mapping of mesh elements (verts, edges, polys of loops) between two arbitrary meshes, and code to compute such mappings. No similarity is required between source and destination meshes (though results when using complete different meshes are rather unlikely to be useful!). This code is not bound to data transfer, it is defined to be as generic as possible, and easy to reuse or extend as needs arise. Several methods of mapping generation are defined for each element type, we probably will have to adjust that in future (remove useless ones, add new ones...). For loops, you can also define islands (for UVs e.g.) so that loops of a same destination polygon do not 'spread' across several source islands. Heavily reviewed and enhanced by Campbell, thanks a lot!