Commit Graph

2466 Commits

Author SHA1 Message Date
4a372102c7 Text3d: move text selection boxes from Curve to EditFont struct
resolves T38079
2014-01-07 17:12:24 +11:00
039652a3e8 Fix memory leak caused by main library split
Evaluation Context wasn't freed for temporary mains.
2014-01-05 17:26:28 +06:00
fe00175c35 Fix crash happening in Cycles fcurve modifier
Summary:
Crash was happening because of fcurve modifier stack
used modifier's DNA to store temporary data.

Now made it so storage for such a thing is being
allocated locally per object update so multiple objects
which shares the same animation wouldn't run into
threading conflict anymore.

This storage might be a part of EvaluationContext,
but that'd mean passing this context all over in
object_where_is which will clutter API for now without
actual benefit for this.

Optimization notes: storage is only being allocated
if there're Cycles modifier in the stack, so there're
no extra allocations happening in all other cases.

To make code a bit less cluttered with this storage
passing all over the place added extra callbacks to
the FModifier storage which runs evaluation with the
given storage.

Reviewers: brecht, campbellbarton, aligorith

CC: plasmasolutions

Differential Revision: https://developer.blender.org/D147
2014-01-01 22:32:48 +06:00
0d6ae3fda2 Main API: refactor naming, use BKE_main_ prefix and add main arg. 2013-12-30 13:25:27 +11:00
709041ed0b Threaded object update and EvaluationContext
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-26 17:24:42 +06:00
7025a1bd78 Fix T37945: Crash after undo
Issue was caused by some typos in readfile.c made in
original commit of image cache rewrite.
2013-12-26 16:34:57 +06:00
f92bb64505 Fix T37843: area split widget missing in python console editor.
Python was indirectly causing redraw tags during drawing, which interfered
with the ARegion.drawrct, now ignore these during draw.
2013-12-18 12:02:31 +01:00
e9e08a1d12 Game Engine: Level of detail support and tools
Levels of detail can be added and modified in the object panel. The object
panel also contains new tools for generating levels of detail, setting up
levels of detail based on object names (useful for importing), and
clearing an object's level of detail settings. This is meant as a game
engine feature, though the level of details settings can be previewed in
the viewport.

Reviewed By: moguri, nexyon, brecht

Differential Revision: http://developer.blender.org/D109
2013-12-17 17:03:27 -08:00
a621d1e488 UI: Tabs categories for panels (D75)
- works by defining panel categories, currently restricted to the toolbar.
- no panels define bl_categories yet, so no user visible changes since tabs only show when there are multiple.
- panel pinning is available in rmb menu or alt+lmb.
2013-12-17 03:55:45 +11:00
01fc7a687a Code cleanup: Remove "TexFace to Material Convert", from the file menu. This was used for conversion from older 2.5x files. The do_version() code is still there and functioning though. 2013-12-14 10:48:12 +01:00
ce893552c3 Image cache rewrite to using generic movie cache
Summary:
Behaves very much the same as cache for Movie Clip datablock:

- Image now have `MovieCache *cache` field which replaced
  legacy `ListBase ibufs`.

  This allows image datablock to easily keep of image
  buffers which are owned by itself. This field isn't
  saved to the file and getting restored on undo steps.

  However, cache limit is global for movies, sequences
  and image datablocks now. So overall cached image buffers
  size will not go above cache limit size in user
  preferences.

- Image buffers which are marked as BITMAPDIRTY will never
  be freed from the cache.

- Added utility function to iterate over image buffers
  saved in movie cache.

- Movie cache cleanup check callback now have ImBuf argument
  which can be used in a condition of cleanup.

- Added some utility functions which replaces legacy ibufs
  iterations with image cache iteration which happens from
  inside a lock.

- Fixed `image_mem_size()` which was only counting one of
  the buffers if both float and byte buffer present.

Additional notes:

- `BKE_image_get_first_ibuf()` is rather stupid, but direct
  access to ibufs->first was also the same stupid idea.

  Would consider avoid this function is another project.

- There are some places which doesn't look threadsafe, but
  they already were not so much threadsafe anyway before.

  So think not a big deal with solving this later.

Finally solves infinite memory usage by image sequences! :)

Reviewers: brecht, campbellbarton

Reviewed By: brecht

CC: sebastian_k

Differential Revision: http://developer.blender.org/D95
2013-12-13 16:30:00 +06:00
a53e864cf4 Fix T37572: text editor scrolling not working well with Mac trackpad panning.
The trackpad would give isolated mouse pan events with a distance smaller than
one line or character. For other 2D views this is all accumulated in floats,
but in the text editor it only keeps track of integers, and the small mouse pan
events got lost due to rounding.

Now it keeps track of sub-line or sub-character scroll offsets to avoid this.
2013-12-13 00:04:05 +01:00
c740f1a792 Sculpt mode Gravity feature from GSOC 2010 by Jason Wilkins.
Reviewers: sergey, brecht, campbellbarton, jwilkins

Differential Revision: http://developer.blender.org/D89
2013-12-12 19:01:11 +02:00
3a370ec6ec Move curve's boundbox and texspace calculation out of modifier stack
There were several issues with how bounding box and texture space
are calculated:

- This was done at the same time as applying modifiers, meaning if
  several objects are sharing the same curve datablock, bounding
  box and texture space will be calculated multiple times.

  Further, allocating bounding box wasn't safe for threading.

- Bounding box and texture space were evaluated after pre-tessellation
  modifiers are applied. This means Curve-level data is actually
  depends on object data, and it's really bad because different
  objects could have different modifiers and this leads to
  conflicts (curve's data depends on object evaluation order)
  and doesn't behave in a predictable way.

  This commit moves bounding box and texture space evaluation from
  modifier stack to own utility functions, just like it's was done
  for meshes.

  This makes curve objects update thread-safe, but gives some
  limitations as well. Namely, with such approach it's not so
  clear how to preserve the same behavior of texture space:
  before this change texture space and bounding box would match
  beveled curve as accurate as possible.

  Old behavior was nice for quick texturing -- in most cases you
  didn't need to modify texture space at all. But texture space
  was depending on render/preview settings which could easily lead
  to situations, when final result would be far different from
  preview one.

  Now we're using CV points coordinates and their radius to approximate
  the bounding box. This doesn't give the same exact texture space,
  but it helps a lot keeping texture space in a nice predictable way.

  We could make approximation smarter in the future, but fir now
  added operator to match texture space to fully tessellated curve
  called "Match Texture Space".

Review link:

  https://codereview.appspot.com/15410043/

Brief description:

  http://wiki.blender.org/index.php/User:Nazg-gul/GSoC-2013/Results#Curve_Texture_Space
2013-12-11 16:32:41 +06:00
Dalai Felinto
ab49437958 View Navigation: Walk and Fly modes
This is a addtion to the dynamic fly mode.
It behaves as the first person navigation system available in most 3d world  games nowadays.

You can alternate between the old mode (Fly) and the new mode (Walk) in User Preferences > Inputs

Manual:
-------
http://wiki.blender.org/index.php/Doc:2.6/Manual/3D_interaction/Navigating/3D_View#View_Navigation
http://wiki.blender.org/index.php/Doc:2.6/Manual/3D_interaction/Navigating/3D_View/Navigation_Modes

Shortcuts:
----------
WASD (hold)  - Move forward/backward and straft left/right
QE (hold)    - Move up and down
Tab          - Alternate between Walk and Fly modes
Shift (hold) - Speed up movement
Alt (hold)   - Slow down movement
Space or MMB - Teleport
V            - Jump
+/- or mouse wheel - speed increase/decrease speed for this Blender session

User Preferences Options:
-------------------------
Navigation Mode   - fly/walk navigation systems (fly is the old, walk is the new, next options are for walk mode only)
Gravity           - alternate between free navigation and walk with gravity modes
Mouse Sensitivity - sensitivity factor to mouse influence to look around
Teleport Duration - how long the teleport lasts
Camera Height     - camera height to use in gravity mode
Jump Height       - maximum jump speed in m/s
Move Speed        - base move speed in m/s
Boost Factor      - multiplication factor when running or going slow (1/boost)

Development Notes:
------------------
* The initial code was based on view3d_fly.c.
* The NDoF code was not touched, so it most likely is not working.

Pending Issues:
---------------
* Draw in the UI the shortcut options, and current values (e.g., Mode: Fly/Walk)
  (we need a proper API for that)
* OSX seems to present issues if we re-center the mouse every time. We implemented a workaround for that, but a real fix would be welcome.

Code reviewed and with collaborations from Campbell Barton - @campbellbarton
Differential Revision: http://developer.blender.org/D30
2013-12-03 03:14:09 -02:00
72272d2e4f D54: Added a filepath attribute to the read_homefile operator.
This attribute allows to open a blend file as an alternative
start-up file. The attribute is only available from python.
This is an example call:

    bpy.ops.wm.read_homefile(filepath='path/to/a/file.blend')

This patch also changes readfile.c to ensure that unintentionally
stored cursor states are not imported from the loaded file.
2013-11-29 23:13:55 +01:00
fb3f240201 Image wrapping for plane track in clip editor
Summary:
Now it's possible to assign an image to plane tracks
in clip editor. This image is only used for display
in clip editor and this image is being warped into
the plane track rectangle.

Main purpose of this is to get early feedback about
how good image warping matches the footage, before
clip goes to the compositor.

Pretty much straightforward change: just compute
homography from undeformed normalized frame corner
coordinates (unity square) to plane marker corners
and apply this matrix to opengl stack.

Still could improve behavior when perspective
plane transform is degenerate, but that's not so
much critical for now i'd say.

Reviewers: brecht, campbellbarton

Reviewed By: brecht

CC: sebastian_k

Differential Revision: http://developer.blender.org/D57
2013-11-29 23:26:57 +06:00
0d24c6f0d0 Move 2.6x versioning code to own file
Summary:
Makes readfile.c more clear and easier to navigate in.
We would need to do such a move when we'll do 2.70 bump
anyway. So better be prepared.

In fact, as soon 2.70 bumo is done i would think we'd
better create versioning_270 file and do version code
there. Otherwise readfile.c will grow up dramatically
again.

Reviewers: brecht, campbellbarton

Reviewed By: brecht

Differential Revision: http://developer.blender.org/D60
2013-11-29 23:16:13 +06:00
1908909273 Sculpt Dynamic Topology: support collapsing edges without subdividing edges as well
This allows you to choose between subdivide edges, collapse and both. Being able to
only collapse edges can be useful to simplify meshes with accidentally introducing
more detail.

Reviewed By: psy-fi, carter2422

Differential Revision: http://developer.blender.org/D15
2013-11-26 00:21:04 +01:00
d305df2226 Transform: old todo, removing an orientation now checks all screens.
also fix for using uninitialized matrix when an out-of-range index is
set for custom orientations.
2013-11-25 09:40:52 +11:00
673bd9a009 Mesh Modifiers: Added Laplacian Deform
Part of soc-2013-sketch_mesh branch

See: http://wiki.blender.org/index.php/User:Apinzonf/Doc:2.6/Manual/Modifiers/Deform/Laplacian_Deform
2013-11-24 07:10:42 +11:00
d44c79b7c9 Fix T37281: View3D could have invalid transform orientation using undo 2013-11-22 20:10:26 +11:00
7cdfe18385 Fix compile error on MinGW64, time.h is required for gmtime. 2013-11-20 23:47:05 +02:00
d232486b40 Fix T37543: Multiline 3D Text saved in edit mode breaks on load 2013-11-21 04:32:28 +11:00
84c30edbdf fix for crash with new buildinfo, when gmtime() returns NULL 2013-11-18 02:41:28 +11:00
927dea436e Further tweaks to buildinfo
Summary:
Old idea with changes since previous release tag
didn't work good enough. In most of the cases tag
was done in a branch hence not actually reachable
from the master branch.

Now change since release is gone, and date of
the latest commit is used instead.

The date is displayed in format YYYY-MM-DD HH:mm
in the splash.

New bpy.app fields:

- build_commit_timestamp is an unix timestamp of
  the commit blender was build from.
- build_commit_date is a date of that commit.
- build_commit_time is a time of that commit.

Reviewers: campbellbarton

Differential Revision: http://developer.blender.org/D5
2013-11-15 18:05:27 +06:00
a0286f42f9 "Render Audio" cleanup:
* Removed audio-only options from ffmpeg render settings (added some versionning code too)!
* Moved the Mixdon button from the Scene->Audio pannel to the Render->Render panel.
2013-11-07 13:32:32 +00:00
56e283408a Fix the small mess in read versionning code (we had two "pending versioning" blocks, and a triangulate one that was outside of any block, plus I think existing "pending versionning" code was not added when 2.69.2 sub-version was created...).
Moved all non-yet-versioned stuff back into a single block at the end, let’s try not to forget to integrate it for 2.69.3! ;)
2013-11-07 13:14:33 +00:00
Lukas Toenne
7398600090 True grid snapping for nodes: This snaps nodes to the actual background grid instead of using incremental offset (which is not useful for nodes). Increment snapping has been disabled for nodes to avoid
confusion, grid snap is now the default as it seems to be the most wanted and easy to use mode.

Absolute grid snapping happens in a somewhat generic function 'applyGridAbsolute', which could also be used for objects and other transforms later on. It is conceptually similar to the 'project' snapping
option, in that it calculates a delta vector for each element on top of the overall transform, which places each node on the grid.

Node transform now uses the top-left node corner for TransformData->loc. The transform center is still the average of node centers, so that scaling and rotation works nicely.

snapGrid*** functions have been renamed to snapGridIncrement*** to distinguish better between incremental and absolute grid snapping.
2013-11-06 17:46:32 +00:00
Lukas Toenne
b8f22a0565 Syncing methods for Color Balance node LGG and ASC-CDL modes. The settings for either mode are converted into equivalent settings of the other. This keeps the result of both modes roughly the same and
mimics the previous behavior when settings were shared by both modes (but not equivalent).
NOTE: Due to the use of additional sRGB conversion in the LGG mode the result is not entirely accurate, this should perhaps be fixed.

Settings for each mode are kept in their own color values nevertheless, this avoids potential problems with float precision.
2013-11-06 12:44:54 +00:00
0cec5c63da BGE Rasterizer Cleanup: Removing the Singletexture material mode. More conversion code will probably be needed. 2013-11-04 19:21:50 +00:00
2010c6ad6c Made buildinfo aware of builds from GIT
- Use commit number since last annotated tag as a
  revision number replacement. It'll eb followed
  by 'M' symbol if there're local modification in
  the source tree.

- Commit short SHA1 is included. Helps getting
  information about commit used to build blender
  with much faster.

- If build is not done from master branch, this also
  will be noticed in the splash screen.

This commit also replaces revision stored in the
files with git-specific fields (change and hash).
This is kind of breaks compatibility, meaning
files which were saved before this change wouldn't
display any information about which revision they
were saved with. When we'll finally switch to git,
we'll see proper hash and change number since
previous release in the files, for until then
svn version will be used as a change number and
hash will be empty.

Not a huge deal, since this field was only used
by developers to help torubleshooting things and
isn't needed for blender itself.

Some additional tweaks are probably needed :)
2013-11-04 13:21:39 +00:00
57f72623e3 Fix #37270: Blender crashes in several situations
Issue was caused by cloth modifier used for particle
system dynamic have an invalid error field pointer.
Seems at some point cloth failed to apply and set an
error,

This commit only fixes crash with existing file,
will look further into why exactly such situation
happened,
2013-11-01 04:24:29 +00:00
Dalai Felinto
a7b44c82e5 Triangulate Modifier: using different ngon and quad methods
Quads: Beauty, Fixed, Fixed Alternate, Shortest Diagonal
Ngons: Beauty, Scanfill

* Shortest Diagonal is the default method in the modifier (popular
  elsewhere), but beauty is the default in Ctrl+T).

* Remove the need for output slot and beauty operator to be called
after Clt+T

Patch with collaborations and reviewed by Campbell Barton
2013-10-29 02:42:51 +00:00
9f32e83175 Weighted tracks
Added a weight slider to track which defines
how much particular track affects in a final
reconstruction. This weight is for sure
animateable.

Currently it affects on BA step only which in
most cases will work just fine.

The usecase of this slider is to have it set
to 1.0 most of the time where the track is
good, but blend it's weight down to 0 when
tracker looses the track. This will prevent
camera from jump.

Tutorial is to be done by Sebastian.
2013-10-26 13:22:38 +00:00
Lukas Toenne
2871b0d7df Fix #37110, After deletion of large scene, file still huge.
Objects were not being freed when unlinked from all scenes, due to user count increments on the ParticleSystem->parent pointers. These were referencing the objects themselves, creating a user count of 1
and preventing free. Object pointers should not usually do user counting, except in some cases like scenes and groups (thanks to Brecht for clarifying this).
2013-10-17 20:18:48 +00:00
eb69cb7de3 Get rid of Allow Fallback option
It was rather confusing from the user usage point
of view and didn't get so much improvement after
new bundle adjuster was added.

In the future we might want to switch resection
to PPnP algorithm, which could also might be a
nice alternative to fallback option.
2013-10-15 15:21:41 +00:00
ef765b3606 Fix [#37077] User prefs > Input and Outliner Keymaps mismatch in representation.
Remove KeyMap mode from outliner, was an old half-finished features redondant with user preferences settings...

Also moved key map item's "event type to map type" and map type defines at WM level, this is too much generic to be at RNA level.

Also added a check in versionning code to convert all outdated outliner modes to a valid one (seems old 'verse' ones were not handled as well).

Thanks to Brecht for reviews and advices!
2013-10-15 13:55:06 +00:00
afce7e071a Fix particle group use count option losing objects for linked groups. There
was no reason to go through newlibadr here, go->ob should already have the
right pointer.
2013-10-14 20:13:40 +00:00
0973270fbf * Code cleanup, comments in readfile.c. 2013-10-08 17:15:49 +00:00
e6ce07a5d4 Cycles / SSS:
* Remove the compatible falloff SSS implementation. We shouldn't support two implementations in the long term, and 2.7x is a good release number do break some compatibility as well. 

* Version patch added, so Files with Compatible falloff will automatically use Cubic now. 

It was already mentioned in the manual, that Compatible is deprecated. 
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/Shaders#BSSRDF
2013-10-08 17:07:18 +00:00
6aedad4bff fix for crash on load if the file was saved in editmesh,
BKE_mesh_uv_cdlayer_rename_index was checking editmesh pointer before it was NULL'd by direct_link_mesh.
2013-10-07 16:48:26 +00:00
4b8fee11b6 workaround for [#36314], ensure all id-properties are groups on load (which are expected to be groups). 2013-09-30 13:44:16 +00:00
6317f1eafd fix [#36291] Applying subsurf to mesh or setting subdivisions to zero crashes Blender
issue was mesh somehow had a mismatch of UV/texpoly layers. we may want to allow this in the future but for now sync on load just in case.
2013-09-16 06:00:25 +00:00
b938293576 Fix memory leak reading mesh data after change to skip saving temporary
custom data layers.
2013-09-13 13:34:10 +00:00
f81f6c5019 take the decender into account when drawing console text.
also add data types wm and mask to dataname() and unshadow var in ghost/x11
2013-09-11 04:14:27 +00:00
e052fc9819 Fix #36271: missing (+) icon for toolbar in compositing layout in default startup.blend. 2013-09-10 13:25:39 +00:00
e492fad130 shrink-wrap constraint, improve and remove some limitations.
- ability to change the space the axis is projected in (so you can choose worldspace or -space, was always local-space before).
- support projecting on a negative axis, without this some very simple clamping is not possible if the direction happened not to be positive.
- add distance limit (same as modifier), without this single meshes surrounding an object would make the constraint impossible to use in some cases (it would snap to the wrong side).

note: this removes the ability to project on multiple axes at once but this option only added up directions and didnt project on multiple axes as you might expect.
2013-09-07 12:59:16 +00:00
b9b806e0a0 BGE: Removing the touch sensor and converting all touch sensors to collision sensors. 2013-09-04 22:14:14 +00:00
2663d3833d Fix compile error with strict compile flags. 2013-09-03 18:01:31 +00:00