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
2016-03-15Fix T47759: Mesh 'Select less', leaves isolated vertsCampbell Barton
Select less in mesh edit-mode would leave selected vertices/edges in edge/face mode which don't support selecting these elements.
2016-01-04Fix T47038: Particles in Particle Edit Mode get added in completely wrong ↵Bastien Montagne
location. It also fixes another issue (crash) related to symmetric editing. Quite involved, we (try to!) fix complete broken logic of parts of particle code, which would use poly index as tessface one (or vice-versa). Issue most probably goes back to BMesh integration time... This patch mostly fixes particle editing mode: - Adding/removing particles when using generative modifiers (like subsurf) should now work. - Adding/removing particles with a non-tessellated mesh (i.e. one having ngons) should also mostly work. - X-axis-mirror-editing particles over ngons does not really work, not sure why currently. - All this in both 'modes' (with or without using modifier stack for particles). Tech side: - Store a deformed-only DM in particle modifier data. - Rename existing DM to make it clear it's a final one. - Use deformed-only DM's tessface2poly mapping to 'solve' poly/tessface mismatches. - Make (part of) mirror-editing code able to use a DM instead of raw mesh, so that we can mirror based on final DM when editing particles using modifier stack (mandatory, since there is no way currently to find orig tessface from an final DM tessface index). Note that this patch is not really nice and clean (current particles are beyond hope on this side anyway), it's more like some urgency bandage. Whole crap needs complete rewrite anyway, BMesh's polygons make it really hard to work with current system (and looptri would not help much here). Also, did not test everything possibly affected by those changes, so it needs some users' testing & validation too. Reviewers: psy-fi Subscribers: dfelinto, eyecandy Maniphest Tasks: T47038 Differential Revision: https://developer.blender.org/D1685
2015-12-28Fix possible invalid-index use /w link/path selectCampbell Barton
2015-12-27Split id->flag in two, persistent flags and runtime tags.Bastien Montagne
This is purely internal sanitizing/cleanup, no change in behavior is expected at all. This change was also needed because we were getting short on ID flags, and future enhancement of 'user_one' ID behavior requires two new ones. id->flag remains for persistent data (fakeuser only, so far!), this also allows us 100% backward & forward compatibility. New id->tag is used for most flags. Though written in .blend files, its content is cleared at read time. Note that .blend file version was bumped, so that we can clear runtimeflags from old .blends, important in case we add new persistent flags in future. Also, behavior of tags (either status ones, or whether they need to be cleared before/after use) has been added as comments to their declaration. Reviewers: sergey, campbellbarton Differential Revision: https://developer.blender.org/D1683
2015-12-27BMesh: extract int/bmesh element access funcs.Campbell Barton
Support getting an vert/edge/face from a single index, useful for operator redo.
2015-12-03Fix T46913: Crash adding hook to linked mesh dupliCampbell Barton
Follow up to T46738, we need to tag the object data for recalculation.
2015-11-10Fix T46738: Crash adding hook to linked mesh dupliCampbell Barton
2015-11-01Cleanup: old commentsCampbell Barton
2015-10-04BLI_Buffer: add BLI_buffer_reinitCampbell Barton
Useful for re-using a buffer when the existing data can be thrown away.
2015-09-04Partial revert of warning cleanupCampbell Barton
These warnings are false-positives
2015-09-04Quiet warningsJulian Eisel
We had too many warnings lately... was awaiting that someone would kill them - didn't happen -> goes to my commit ratio! :P
2015-06-20Transform: UV islands were split by windingCampbell Barton
This meant front/back faces from a projection would be seen as separate islands.
2015-06-01Fix for leak in BM_uv_element_map_createCampbell Barton
Also correct over alloc and redundant alloc.
2015-05-26Cleanup: update commentCampbell Barton
2015-05-21Fix mesh mirror failing on isolated vertsCampbell Barton
2015-05-17BMesh: don't check winding for uv-vert-mapCampbell Barton
Made link-select separate front/back with projected UV's
2015-04-13Cleanup: styleCampbell Barton
2015-04-09Fix part of T44320 selecting islands can fail.Antony Riakiotakis
Issue here is simple and has been fixed in other places such as texpainting: Basically if face has different winding, do not calculate it as adjucent to the other face, even if UV is identical. This allows us to stack islands of symmetrical closed meshes on top of one another and still be able to select the two identical island halfs (provided the normals are correct of course).
2014-11-21Cleanup: typoCampbell Barton
2014-11-17Fix T35170: Undoing edit op on a basis shapekey could generate extra offset ↵Bastien Montagne
on its 'children'. Based on investigation by sergey (Sergey Sharybin) and revzin (Grigory Revzin). Based on patch D460 by revzin (Grigory Revzin). Differential Revision: https://developer.blender.org/D460
2014-11-10Correct last commitCampbell Barton
2014-11-10Fix: Shapekey Basis not updated on editmode exitCampbell Barton
2014-11-06Editmesh: select more/less can now step over adjacent facesCampbell Barton
This keeps a square shaped selection when using grid topology.
2014-08-25Fix T40993: Store selection history for extrudeCampbell Barton
2014-06-06BMesh: avoid OpenMP use for low poly meshes (counting selection)Campbell Barton
also use schedule(static) for simple for loops.
2014-04-30Code cleanup: remove unused includesCampbell Barton
Opted to keep includes if they are used indirectly (even if removing is possible).
2014-04-27Code cleanup: const args and arraysCampbell Barton
2014-04-26Code cleanup: use 'const' for arrays (editors)Campbell Barton
2014-03-12Mesh API: rename 'octree' to 'spatial' since internally its using kdtreeCampbell Barton
2014-02-28Fix T38872: Crazyspace could use stale derivedMesh data.Campbell Barton
2014-02-28Code cleanup: move edit-derivedmesh free to BKE_editmesh_free_derivedmeshCampbell Barton
2014-01-13Fix T38054: High CPU usage with many objectsSergey Sharybin
This is a regression since threaded dependency graph landed to master. Root of the issue goes to the loads of graph preparation being done even if there's nothing to be updated. The idea of this change is to use ID type recalc bits to determine whether there're objects to be updated. Generally speaking, we now check object and object data datablocks with DAG_id_type_tagged() and if there's no such IDs tagged we skip the whole task pool creation and so, The only difficult aspect was that in some circumstances it was possible that there are tagged objects but nothing in ID recalc bit fields. There were several different circumstances when it was possible: * When one assigns object->recalc flag directly DAG flush didn't set corresponding bits to ID recalc bits. Partially it is fixed by making it so flush will set bitfield, but also for object types there's no reason to assign recalc flag directly. Using generic DAG_id_type_tag works almost the same fast as direct assignment, ensures all the bitflags are set properly and for the long run it seems it's what we would actually want to. * DAG_on_visible_update() didn't set recalc bits at all. * Some areas were checking for object->recalc != 0, however it is was possible that object recalc flag contains PSYS_RECALC_CHILD which was never cleaned from there. No idea why would we need to assign such a flag when enabling scene simplification, this is to be investigated separately. * It is possible that scene_update_post and frame_update_post handlers will modify objects. The issue is that DAG_ids_clear_recalc is called just after callbacks, which leaves objects with recalc flags but no corresponding bit in ID recalc bitfield. This leads to some kind of regression when using ID type tag fields to check whether there objects to be updated internally comparing threaded DAG with legacy one. For now let's have a workaround which will preserve tag for ID_OB if there're objects with OB_RECALC_ALL bits. This keeps behavior unchanged comparing with 2.69 release.
2013-12-26Threaded object update and EvaluationContextSergey Sharybin
Summary: Made objects update happening from multiple threads. It is a task-based scheduling system which uses current dependency graph for spawning new tasks. This means threading happens on object level, but the system is flexible enough for higher granularity. Technical details: - Uses task scheduler which was recently committed to trunk (that one which Brecht ported from Cycles). - Added two utility functions to dependency graph: * DAG_threaded_update_begin, which is called to initialize threaded objects update. It will also schedule root DAG node to the queue, hence starting evaluation process. Initialization will calculate how much parents are to be evaluation before current DAG node can be scheduled. This value is used by task threads for faster detecting which nodes might be scheduled. * DAG_threaded_update_handle_node_updated which is called from task thread function when node was fully handled. This function decreases num_pending_parents of node children and schedules children with zero valency. As it might have become clear, task thread receives DAG nodes and decides which callback to call for it. Currently only BKE_object_handle_update is called for object nodes. In the future it'll call node->callback() from Ali's new DAG. - This required adding some workarounds to the render pipeline. Mainly to stop using get_object_dm() from modifiers' apply callback. Such a call was only a workaround for dependency graph glitch when rendering scene with, say, boolean modifiers before displaying this scene. Such change moves workaround from one place to another, so overall hackentropy remains the same. - Added paradigm of EvaluaitonContext. Currently it's more like just a more reliable replacement for G.is_rendering which fails in some circumstances. Future idea of this context is to also store all the local data needed for objects evaluation such as local time, Copy-on-Write data and so. There're two types of EvaluationContext: * Context used for viewport updated and owned by Main. In the future this context might be easily moved to Window or Screen to allo per-window/per-screen local time. * Context used by render engines to evaluate objects for render purposes. Render engine is an owner of this context. This context is passed to all object update routines. Reviewers: brecht, campbellbarton Reviewed By: brecht CC: lukastoenne Differential Revision: https://developer.blender.org/D94
2013-12-12Code Cleanup: move mesh mapping functions into their own file/headerCampbell Barton
2013-11-18BMesh Refactor: BKE_bmbvh_new can now be created without an EditMesh.Walid Shouman
This adds BM_bmesh_calc_tessellation() so we can get triangles from a bmesh without having to have an editmesh available.
2013-10-28move bmesh array lookup data and utility functions from editmesh into bmesh,Campbell Barton
since enough bmesh operations can also take advantage of direct index lookups on verts/edges/faces. developers note: - EDBM_index_arrays_init/ensure/free -> BM_mesh_elem_table_ensure/init/free - EDBM_vert/edge/face_at_index -> BM_vert/edge/face_at_index - EDBM_uv_element_map_create/free -> BM_uv_element_map_create/free - ED_uv_element_get -> BM_uv_element_get
2013-09-24allocate bmesh data from known sizes where possible (was still using ↵Campbell Barton
defaults in places), add macros for initializing BMAllocTemplate's, also add assert on invalid use of bmesh_sfme()
2013-08-30Some knife fixes. Avoids duplicating verts; better handling of cut-through ↵Howard Trickey
ortho. Now cut lines detect vertices that they pass (almost) exactly over and snap to them, to avoid making verts vert close to other ones. Added radius arg to BKE_bmbvh_ray_cast so that can detect an obscuring face when the ray might otherwise go exactly between two triangles. Needed an isect_line_tri_epsilon function for similar reason. Fixes last part of bug #35002. Other knife bugs still present but getting this commit in now before continuing bug fixing.
2013-08-03code cleanup: replace bmesh_radial_face_find -> BM_edge_in_faceCampbell Barton
2013-07-28move alloca define into its own header since its not related to BLI_arrayCampbell Barton
2013-07-25triangulate and beauty fill also needed changes to selection handling after ↵Campbell Barton
recent changes.
2013-07-22transform was flushing the selection (inline), now skip this and use the ↵Campbell Barton
selection as-is. flush the selection on entering editmode instead (since the selection mode can be changed with another mesh). is other tools leave the selection incorrectly flushed, those will need to be fixed so transform works as expected.
2013-07-13fix for bad NULL check in bmo_connect_pair, also remove duplicate checks in ↵Campbell Barton
if statements and redundant initialization vars.
2013-07-10draw loopcut display on the deformed mesh when in editmode.Campbell Barton
2013-07-02fix [#35939] [Edit - Vertex mode] [Select]-[Mirror] did not returns right ↵Campbell Barton
result.
2013-06-28Fix #35551: the topology mirror setting affected shape key and vertex group butBrecht Van Lommel
this was confusing as there was no setting visible for it. Now these menus contain an entry to mirror without and with topology mirror.
2013-06-24add api calls for BM_mesh_active_vert/edge_get.Campbell Barton
inspecting the edit-selection inline was cumbersome.
2013-06-20add axis option to EDBM_verts_mirror_cache_beginCampbell Barton
2013-06-19Remove paranoid null checks for editmesh EDBM_vert_at_index and friends (use ↵Campbell Barton
asserts instead). temp set BM_OMP_LIMIT to zero for better testing before release.
2013-06-19internal editmesh api: add an extended version of ↵Campbell Barton
EDBM_verts_mirror_cache_begin which takes arguments to give some more control.