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-06-23DopeSheet: GPencil-Mode supports Circle and Lasso SelectJoshua Leung
To get this working the least effort, I've had to expose the helper functions used by the lasso and circle select keyframe-test callbacks (which are generic) and expose them for use by the GP keyframe editing code too. Hopefully in time we clean this all up and just write the code once to operate on "keyframes"
2016-06-23Dopesheet: Lasso and Circle Select tools work for selecting keyframesJoshua Leung
This only works in the Action and Dopesheet modes (which operate on FCurve keyframes). Support for Grease Pencil and Mask Keyframes though is still pending.
2016-06-23Code Cleanup - Circle/Lasso select in the Graph EditorJoshua Leung
2016-06-22ID-Remap - Step one: core work (cleanup and rework of generic ID datablock ↵Bastien Montagne
handling). This commit changes a lot of how IDs are handled internally, especially the unlinking/freeing processes. So far, this was very fuzy, to summarize cleanly deleting or replacing a datablock was pretty much impossible, except for a few special cases. Also, unlinking was handled by each datatype, in a rather messy and prone-to-errors way (quite a few ID usages were missed or wrongly handled that way). One of the main goal of id-remap branch was to cleanup this, and fatorize ID links handling by using library_query utils to allow generic handling of those, which is now the case (now, generic ID links handling is only "knwon" from readfile.c and library_query.c). This commit also adds backends to allow live replacement and deletion of datablocks in Blender (so-called 'remapping' process, where we replace all usages of a given ID pointer by a new one, or NULL one in case of unlinking). This will allow nice new features, like ability to easily reload or relocate libraries, real immediate deletion of datablocks in blender, replacement of one datablock by another, etc. Some of those are for next commits. A word of warning: this commit is highly risky, because it affects potentially a lot in Blender core. Though it was tested rather deeply, being totally impossible to check all possible ID usage cases, it's likely there are some remaining issues and bugs in new code... Please report them! ;) Review task: D2027 (https://developer.blender.org/D2027). Reviewed by campbellbarton, thanks a bunch.
2016-06-14FileSpace cleanup: make ED_path_extension_type public.Bastien Montagne
Maybe we should move it to BLI, but not sure how, and where (and its defines are SpaceFile's ones, meh :| ).
2016-06-08glutil: add glaGetOneInt helperCampbell Barton
2016-06-08Cleanup: typoCampbell Barton
2016-06-083D Text: move undo into its own fileCampbell Barton
2016-06-06Fix T48582: Rigidbody simulation issue with new depsgraphSergey Sharybin
Being granular means we need to re-build depsgraph a bit more often.. The issue was caused by rigidbody requiring some special nodes to handle physics which were not created with just tagging object for update.
2016-06-03Make playback invoked form animation editors more usableSergey Sharybin
This covers the following workflow. Animator will disable Update All 3D views in order to get quick playback in a particular 3D editor. However, it also handy to see playback in all editors and image editors to see comparison of animation and reference footage. So the idea here is to refresh reasonable editors when playback is invoked from animation editors. Commit to make Hjalti happy.
2016-06-03Cleanup & simplify snapping functionsGermano Cavalcante
- the name of the enumerator `SNAP_NOT_OBEDIT` was changed to `SNAP_NOT_ACTIVE`. - the parameter `snap_to_flag` was moved to outside `SnapObjectParams`. - the member `use_object_edit` was renamed to `use_object_edit_cage`. - added the arg `params` in `ED_transform_snap_object_project_ray`. - simplifications in the loop of the function `snapObjectsRay`.
2016-05-18Theme Color Sets - Dynamically generated iconsJoshua Leung
The theme color set selector (for Bone Groups) will now show previews of what each color set looks like. It does so using a 3-color band icon.
2016-05-17Bendy Bones: Advanced B-Bones for Easier + Simple RiggingJoshua Leung
This commit/patch/branch brings a bunch of powerful new options for B-Bones and for working with B-Bones, making it easier for animators to create their own rigs, using fewer bones (which also means hopefully lighter + faster rigs ;) This functionality was first demoed by Daniel at BConf15 Some highlights from this patch include: * You can now directly control the shape of B-Bones using a series of properties instead of being restricted to trying to indirectly control them through the neighbouring bones. See the "Bendy Bones" panel... * B-Bones can be shaped in EditMode to define a "curved rest pose" for the bone. This is useful for things like eyebrows and mouths/eyelids * You can now make B-Bones use custom bones as their reference bone handles, instead of only using the parent/child bones. To do so, enable the "Use Custom Reference Handles" toggle. If none are specified, then the BBone will only use the Bendy Bone properties. * Constraints Head/Tail option can now slide along the B-Bone shape, instead of just linearly interpolating between the endpoints of the bone. For more details, see: * http://aligorith.blogspot.co.nz/2016/05/bendy-bones-dev-update.html * http://aligorith.blogspot.co.nz/2016/05/an-in-depth-look-at-how-b-bones-work.html -- Credits -- Original Idea: Daniel M Lara (pepeland) Original Patch/Research: Jose Molina Additional Development + Polish: Joshua Leung (aligorith) Testing/Feedback: Daniel M Lara (pepeland), Juan Pablo Bouza (jpbouza)
2016-05-11Transform Volume rewrite/refactorGermano Cavalcante
Take advantage of the efficiency provided by the snap_context. Also fixes errors: - volume snap fails based on view angle (T48394). - multiple instances of dupli-objects break volume calculation.
2016-05-09View selected support for grease-pencilCampbell Barton
2016-05-06Clip invisible parts of image when drawing in 2D textures and GLSL ModesSergey Sharybin
This commit avoids draw of invisible parts of image in image editor, making it faster to re-draw the image. Especially handy when painting on a high-res image when zoomed-in.
2016-05-05Transform/Snap: EditMesh/BKE_bvhutils API improvementsGermano Cavalcante
Separate the creation of trees from EditMesh from the creation of trees from DerivedMesh. This was meant to simplify the API, but didn't work out so well. `bvhtree_from_mesh_*` actually is working as `bvhtree_from_derivedmesh_*`. This is inconsistent with the trees created from EditMesh. Since for create them does not use the DerivedMesh. In such cases the dm is being used only to cache the tree in the struct DerivedMesh. What is immediately released once bvhtree is being used in functions that change(tag) the DM cleaning the cache. - Use a filter function so users of SnapObjectContext can define how edit-mesh elements are handled. - Remove em_evil. - bvhtree of EditMesh is now really cached in the snap functions. - Code becomes organized and easier to maintain. This is an important patch for future improvements in snapping functions.
2016-04-29Fix T48290: Hook fails after deleting geometryCampbell Barton
Now CD_SHAPEKEY_INDEX customdata is stored in edit-mode when hooks and vertex parents are used. This also fixes a bug where undo would loose key-index data. Move to structs for BM_mesh_bm_to/from_me to avoid passing many argument, which mostly aren't used.
2016-04-22Transform Snap: initial snap context refactorCampbell Barton
This introduces a snap-context that can be re-used for casting rays into the scene (by operators such as walk-mode, ruler and transform code). This can be used to cache data between calls too.
2016-04-19Toggle to standard cursor when opening menus/popupsJulian Eisel
Cursor is now set to standard arrow-cursor when opening menu, and reset to previous one when closing it. Previously it just stayed as it was before, e.g. the edit mode cross-cursor stayed active even if a menu was opened. Fixes T48192.
2016-04-15Drivers Editing: Added "Copy/Paste" buttons beside "Add Variable" for ↵Joshua Leung
copying all variables from one driver to another This was a feature request from a few years back (IIRC from ZanQdo?) to make it easier to reuse one set of driver variables across several different drivers. Dev Notes: * Finally it's done! All that trouble for two little buttons. * Grr... cmake... grrr!
2016-04-15Code Cleanup: Add proper defines (with ANIM_* prefix) for animation-related ↵Joshua Leung
copy-paste buffer free callbacks
2016-03-29Drivers Setup: Expose all mapping types for creating driversJoshua Leung
* This includes the "manually create" modes, which correspond to the previous behaviour for setting up drivers. This is necessary when the current screen layout is not well suited to having multiple property editors open (e.g. small screen or heavily subdivided screen). * Only the modes relevant for the current property type (i.e. array vs single) will be shown * The "Add Driver" entries in the RMB context menu have now been replaced by a submenu which will list all the available mapping types. * NOTE: The code for the ANIM_OT_button_driver_add() operator is perhaps a bit hairy. However, it currently allows us to have the desired behaviour. It can always get cleaned up later though.
2016-03-27Drivers: Add a "none" mode for use when adding driversJoshua Leung
Although it isn't currently exposed, this allows for the old behaviour, where an "empty" driver was added (without any target assigned yet). For this reason, it's also referred to as the "Manual" mode. There are also some attempts at improving the tooltips + names for the other modes (again, not shown anywhere yet)
2016-03-26Driver Setup Workflow Improvement: Property EyedropperJoshua Leung
This commit brings some long requested improvements to the workflow for setting up drivers, which should make it easier and faster to set up new drivers in a more interactive fashion. The new workflow is as follows: 1) Hover over the property (e.g. "Lamp Energy" or "Y Location") or properties ("Rotation") you wish to add drivers to. We'll refer to this as the "destination" 2) Ctrl-D to active the new "Add Drivers" eyedropper 3) Click on the property you want to use as the source/target. The property under the mouse will be used to drive the property you invoked Ctrl-D on. For example, to drive the X, Y, and Z location of the Cube using the Y Location of the Lamp, hover over any of the X/Y/Z location buttons, hit Ctrl-D, then click on the Y-Location button of the Lamp object. Drivers will be added to the X, Y, and Z Location properties of the Cube; each driver will have a single variable, which uses the Y-Location Transform Channel of the Lamp. Tips: - Transform properties will automatically create "Transform Channel" driver variables. Everything else will use "Single Property" ones - Due to the way that Blender's UI Context works, you'll need two Properties Panel instances open (and to have pinned one of the two to show the properties for the unselected object). It's slightly clunky, but necessary for implementing a workflow like this, as the UI cannot be manipulated while using eyedroppers to pick data. - The eyedropper operator implemented here actually has three modes of operation. 1) The "1-N" (one to many) mode is the default used for Ctrl-D, and "Add Driver to All" in the RMB Menu. This is the behaviour described above. 2) There's also a "1-1" (one to one) mode that is used for the "Add Single Driver" in the RMB Menu. 3) Finally, there's the "N-N" mode (many to many), which isn't currently exposed. The point of this is to allow mapping XYZ to XYZ elementwise (i.e. direct copying) which is useful for things like locations, rotations, scaling, and colours. Implementation Notes: - The bulk of the driver adding logic is in editors/animation/drivers.c, where most of the Driver UI operators and tools are defined - The property eyedropper code is in interface_eyedropper.c along with all the other eyedroppers (even though they don't share much actual code in common). However, this turns out to be necessary, as we can't get access to many of the low-level buttons API's otherwise. Todo: - It may be necessary to restore a way to access the old behaviour (i.e. "manual setup") in case it is not practical to immediately pick a property. - Other things to investigate here include extra hotkeys (e.g. Ctrl-Shift-D for Add Single?), and to expose the N-N mode. - Other things we could try include interactively applying scaling factors, picking multiple targets (e.g. for location difference and rotation difference drivers), and/or other ways of using these property picking methods.
2016-03-24Cleanup: use prefix for return argsCampbell Barton
2016-03-24Driver Keyframing: Some tweaks to make inserting keyframes on Driver ↵Joshua Leung
F-Curves easier Now, when trying to insert a keyframe on a driven property (using IKEY, or with autokeying enabled), the keyframes will get created on the Driver's F-Curve (instead of creating a new FCurve that goes into the active action, but will never do anything). Furthermore, the x-value of the new keyframe will be the current result of the driver expression. Why/Motivations: This way, it becomes easier to create corrective drivers, as you can position all the targets the driver depends on, then adjust the driver value until it does what you need, and then you keyframe that value to bake it into the Driver F-Curve (in effect, "training" the computer how to behave in that case). Usage Notes: * In practice, that particular workflow is still quite clunky to achieve, due to some quirks of how the driver system and the UI widgets interact. Specifically, you'll need to disable/mute the driver before trying to edit the setting (to prevent the driver from immediately resetting the value - before even autokey fires!). However, if you're using the Graph Editor to preview/monitor/manage the keying process, you'll then want to re-enable the driver before changing the targets, so that you can see how much of a change you'll want to be applying! * The warning about editing driver values may need to be disabled or selectively knocked out. I had it disabled while testing this functionality, but it's actually harmless in its current state (if just a bit annoying).
2016-03-13Fancy procedural icons for Keyframe TypesJoshua Leung
The new "default keyframe type" dropdown on the timeline header (and also the "Keyframe Type" operator/properties in other places) now has procedurally generated icons which reflect what that keyframe type will look like when rendered in the Dope Sheet. This was achieved using the ancient "VICON" (vector icon) stuff that's lurking around in the dark parts of UI code. From memory, the only other things that use (or used to use) this stuff included some of the triangle icons for some dropdown buttons, or something like that. Notes: * Theme colour changes are reflected immediately by these icons. This is possible because they are all drawn procedurally * These icons scale with the DPI setting. I manually guessed the size of these icons. They can be adjusted further if needed. * I've documented the steps for adding voodoo icons like this on the wiki (http://wiki.blender.org/index.php/Dev:2.7/Source/Checklists/Vector_Icon) * It's true that the rendering of these keyframes doesn't quite fit the rest of the icons in the UI. However, since we're just leveraging the standard keyframe drawing methods (to avoid discreptancies between the two), we'll leave it as such for now. Maybe later we can consider blending in a bit of the glossy keyframe icons in the Icon Sheet?
2016-03-13Keyframing: Added ToolSetting for choosing default keyframe typeJoshua Leung
To make it easier for animators working in a multipass pose-to-pose workflow when inserting breakdown keyframes and so forth, it is now possible to specify the "type" of keyframe being created (i.e. the colour of the keyframe, when drawn in the Dope Sheet). Usage: 1) Choose the type of keyframe ("Keyframe", "Breakdown", "Extreme", etc.) from the new dropdown located between the AutoKeying and KeyingSet widgets on the timeline header. 2) Insert keyframes 3) Rejoyce that your newly created keyframes have now been coloured for you already in the DopeSheet. Todo: * Look into a way of using the actual keyframe colours (from the theme) for the icons of these types.
2016-03-09Cleanup: remove button flag for forced tool-tipsCampbell Barton
2016-03-09Fix/workaround T47685: Drag keymap slider failsCampbell Barton
This is a special case where the UI update function re-creases the keymap we're currently editing. Making it so dragging values fails.
2016-03-02Avoid node tree update tag when changed nodes which are not affecting resultSergey Sharybin
This was we don't have re-compo or viewport re-rendering happening when changing nodes which are not connected to the output at all (for example when adding new nodes or changing settings for unconnected nodes). Only basic operations are covered for now. checks could be added to more tools when needed. Currently it's not fully optimal implementation, but seems to work fast enough. Don't see reliable alternative to that -- keeping tag in the node wouldn't work because of the node groups (which are probably already broken, but should be easy to solve with current approach). So guess it's more matter of optimizing path search from a node to output. Before processing forward let's check whether it's indeed something we want and whether the approach is indeed not fully bad. Reviewers: campbellbarton, mont29 Subscribers: sebastian_k Differential Revision: https://developer.blender.org/D1765
2016-03-02UI: Add search-create callbackCampbell Barton
Needed to support alternate search UI's, no functional changes.
2016-02-29Cleanup: Rename ED_button_operatortypes -> ED_operatortypes_uiJulian Eisel
2016-02-29Add User Interface keymap (no items yet)Julian Eisel
Needed to allow modal UI keymaps, but I'm sure we'll need this more often in future. First item will be modal eyedropper keymap coming in a following commit.
2016-02-29Fix a bunch of temp full-screen glitchesJulian Eisel
Steps to reproduce fixed glitches were: * Change any editor to be file browser from menu, Ctrl+O *from the file browser area*, Esc -> area reset to what it was before changing to file browser initially * Ctrl+O from any area, F12, Esc -> returns to initial editor in full-screen (expected is file browser in full-screen) Fixes T46229 Core of the fix is removing old area from spacedata list when going back to previous area (see ED_area_prevspace -> BKE_spacedata_remove). Also, when creating a new temp area we now don't exit old area anymore (needed so SpaceFile->op is kept, but it also makes sense in general) Aaand finally removes some ugly hacks. Tested quite a bit, so I think it's safe to apply (besides of remark below), just would like to get things double checked and confirmed. After all, this full-screen stuff finally starts to feel like it's working :P Note, there's still a memory leak when quitting Blender with temp area open. Haven't found out how to solve yet, but it's not that important for review anyway. Reviewers: campbellbarton, brecht Reviewed By: brecht Subscribers: plyczkowski, Blendify Maniphest Tasks: T46229 Differential Revision: https://developer.blender.org/D1531
2016-02-26Code reshuffling to prevent problems like the previous commit happening againJoshua Leung
2016-02-26Fix T47503 - My previous fix for T47472 accidentally reused an unrelated flagJoshua Leung
ked->iterflags actually already had an enum defined, but at the time of the previous fix, I'd forgotten that it was defined. As a result, "f1 needs NLA remap" got given the same flag as "include handles when doing keyframe selection checks".
2016-02-26Restore ability to clear motionpaths from selected objects/bones onlyJoshua Leung
In response to user feedback, this commit brings back the ability to limit motionpath clearing to only happening for those on selected objects/bones. By default, the "Clear" operator will clear from all objects/bones, unless the Shift key is held.
2016-02-19Set line-width, point size when running callbacksCampbell Barton
Since 2.76 Blender no longer resets these after use, this may break add-ons, so reset before calling region callbacks.
2016-02-18Cleanup: add missing struct qualifierCampbell Barton
2016-02-16Fix items in mode pie changing position by supporting more than 8 items in ↵Julian Eisel
operator-enum pies Now a 'More' item is added to the pie when there are too many items. It opens a sub-pie that contains the remaining items. Note that this only touches operator-enum pies (like the object mode pie is), it is not a complete support for pies with more than 8 items. For this further design and code work would be needed, but this is too urgent to wait for that. This is a better fix for T46973, should definitely be applied for 2.77 release. Patch D1800 by myself with some edits by @campbellbarton, thanks!
2016-02-06Fix T47204: selection failing directly after disabling multisample in user ↵Brecht Van Lommel
prefs. Now store the multisample setting each window was created with.
2016-02-05Fix T45915: Cannot select keyframes in summary channels in Dope Sheet in ↵Joshua Leung
TweakMode When in TweakMode on NLA strips that had an offset, it was not possible to select those keyframes in the Summary Channel in the Dope Sheet. The main gist of it is that the current code is from before the summary track was introduced, and so could assume that ANIM_nla_mapping_get() would work for all channels present. Thus, simply converting the clicked frame to nla-mapped time once would be enough. However, for summary channels, nla-mapping_get() doesn't do anything, since we can potentially include keyframes from several different objects!
2016-02-02UI: update dynamic tipsCampbell Barton
Useful for progress ETA to continuously update. This adds API option not to activate new regions GL state which isn't needed in many cases.
2016-01-12Fix T47164: [Scene.raycast] - True result when it should be False.Bastien Montagne
We cannot use FLT_MAX as initi distance for raycast... Renamed TRANSFORM_DIST_MAX_RAY to BVH_RAYCAST_DIST_MAX, moved it into BLI_kdopbvh, and use in RNA raycast callbacks (and all other places using that API).
2016-01-08OpenGL: remove some hacks/workaroundsMike Erwin
Everything I've tested works fine without these hacks. Variety of Mac, Linux, Windows, Intel, nVidia, AMD. If these workarounds are for old unsupported systems let's clean house. Reviewers: #opengl_gfx Differential Revision: https://developer.blender.org/D1707
2016-01-08OpenGL: remove glPointSize hackMike Erwin
2016-01-07Select mirror multiple axis supportCampbell Barton
Previously you could only select mirror on X axis, now support mirroring on multiple axis as well as more than one (for mesh and lattice data).
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