Commit Graph

28914 Commits

Author SHA1 Message Date
Janne Karhu
5b75593c23 Completely refactored sph fluid particles. Only the very core of the algorithm remains
the same, but big changes have happened both on the outside and on the inside.

New UI:
* The old parameters were quite true to the underlying algorithm, but were quite obscure
  from a users point of view. Now there are only a few intuitive basic parameters that
  define the basic fluid behavior.
** By default particle size is now used to determine the interaction radius, rest
   density and spring rest lengths so that it's easy to get stable simulations by simply
   emitting particles for a few frames and adjusting the particle size (easy when the
   particle size is drawn) so that the fluid appears continuous (particles are touching
   eachother).
** Stiffness - in reality most fluids are very incompressible, but this is a very hard
   problem to solve with particle based fluid simulation so some compromises have to be
   made. So the bigger the stiffness parameter is the less the fluid will compress under
   stress, but the more substeps are needed for stable simulation.
** Viscosity - how much internal friction there is in the fluid. Large viscosities also
   smooth out instabilities, so less viscous fluids again need more substeps to remain
   stable.
** Buoancy - with high buoancy low pressure areas inside the fluid start to rise against
   gravity, and high pressure areas start to come down.

* In addition to these basic parameters there are separate advanced parameters that can
  either be tweaked relative to the basic parameters (or particle size) or defined
  independently.
** Repulsion - the stiffness parameter tries to keep the fluid density constant, but this
   can lead to small clumps of particles, so the repulsion keeps the particles better
   separated.
** Stiff viscosity - the normal viscosity only applies when particles are moving closer to 
   eachother to allow free flowing fluids. Stiff viscosity also applies smoothing to
   particles that are moving away from eachother.
** Interaction radius - by default this is 4 * particle size.
** Rest density - by default this is a density that the particles have when they're packed
   densely next to eachother.
** Spring rest length - by default this is 2 * particle size.

* There are also new options for 3d view particle coloring in the display panel to show
  particle velocity and acceleration. These make it easier to see what's happening in the
  fluid simulations, but can of course be used with other particles as well.

* Viscoelastic springs have some new options too. The plasticity can now be set to much
  higher values for instant deletion of springs as the elastic limit is exeeded. In addition
  to that there is an option to only create springs for a certain number of frames when a
  particle is born. These options give new possibilities for breaking viscoelastic fluids.

New in the code:
* Most of the fluids code is now thread safe, so when particle dynamics go threaded there
  will be a nice speed boost to fluids as well.
* Fluids now use a bvh-tree instead of a kd-tree for the neighbor lookups. The bvh-tree 
  implementation makes the code quite a bit cleaner and should also give a slight speed
  boost to the simulation too.
* Previously only force fields were calculated with the different integration methods, but
  now the fluid calculations are also done using the selected integration method, so there
  are again more choices in effecting simulation accuracy and stability. This change also
  included a nice cleanup of the whole particle integration code.

As the internals are pretty stirred up old particle fluid simulations will probably not
work correctly straight away, but with some tweaking the same level of control is still
available by not using the "relative versions" of the advanced parameters (by default these
are not used when loading old files).
2011-03-12 12:38:11 +00:00
Campbell Barton
60fe23b100 cmake, search $HOME/py32 for python now too. 2011-03-12 04:39:43 +00:00
Campbell Barton
42e9796c04 builder reports MSVC was setting stack size to 2gig. 2011-03-12 04:31:28 +00:00
Nicholas Bishop
bbf6603961 == Sculpt ==
* Removed some fields from struct SculptSession:
  - Fields drawobject, projverts, and previous_r were completely
    unused
  - Field `ob' was really unnecessary, changed sculpt functions
    to pass the object rather than the SculptSession

This removal of `ob' from SculptSession should should make it a little
easier to continue generalizing paint/sculpt functionality.

There should be no visible changes from cleanup.
2011-03-12 02:12:02 +00:00
Joshua Leung
80de27914d Bugfix [#26222] Alt-O (smooth) in Graph editor destroys fcurve handle
type and data

Recoded Keyframe Smoothing operator to work better for continuous
curves (i.e. ones with monotonically increasing slopes in sections) as
opposed to hypothetically jagged ones.

The old method assumed that handles should be flat as otherwise, you'd
often get unsmooth curves just because you went and tilted some of the
handles for local extrema, causing some unkeyframed overshoots, which
also leads to changes in timing, which in turn often means unsmooth
motion. Hence, the code took advantage of this to do things with less
extra data.

However, now we have a proper "flatten handles" tool (under snap ->
horizontal) so this functionality is not needed in the general case
where it will lead to stair-stepping artifacts.
2011-03-12 01:09:40 +00:00
Campbell Barton
c786a2c805 edit scons to use py3.2 on all os's and use 'm' abiflag on linux since this is the most common. 2011-03-12 01:03:15 +00:00
Campbell Barton
a001b3f072 set 2mb stack for mingw too. 2011-03-12 00:50:34 +00:00
Brecht Van Lommel
06a763f9d7 Fix #25931: strand render + ray traced AO give tile image. The random numbers
for sampling were not consistent, now the RNG is seeded per strand, and some
tweaks were done to make the jittered sampler cache return consistent sample
numbers for strands.
2011-03-12 00:16:55 +00:00
Nathan Letwory
92665b0a51 Fix [#25659] crash when unwrapping specific mesh
Reported by Jan Hohoho

Running the unwrap causes stack to overflow. Double the size from default 1MB.
2011-03-11 23:27:15 +00:00
Brecht Van Lommel
c30708c47c Fix #26035: fix crash building raytree with inf/nan values in raytree. There's
many different checks here, but I couldn't handle all cases in fewer lines.
2011-03-11 23:12:58 +00:00
Brecht Van Lommel
9dfda4b002 Fix #26203: crash with empty raytree, all types should survive this now.
Also added a check for -inf/inf bounding boxes, just to be sure.
2011-03-11 22:27:06 +00:00
Nathan Letwory
60a4c9d09e Some explicit casts to silence warnings (unsafe to mix int and bool in comparisons). 2011-03-11 22:06:18 +00:00
Brecht Van Lommel
977fdc5a56 Fix #25654: strand render with instanced objects was not working right,
some coordinates didn't have the instance matrix applied, while others had
it applied twice.
2011-03-11 21:37:17 +00:00
Ton Roosendaal
44692c70ae Bugfix, irc report:
Pressing ESC on material icon preview changes made it stop updating
the icons. Was caused by default 'break' callback testing ESC and
not resetting it. Now it uses same break callback as other previews.
2011-03-11 17:59:40 +00:00
Ton Roosendaal
719bf206b4 Bugfix #26444
Double click in File Window also loaded a file on double-click at
a directory.

The operator for it was using a Macro mistakingly here. On any double
click, it selected the item first and then executed load.

By default, any double click action has to rely on the first click 
being properly handled before. Simply removing this macro, and assign
the "exec operator" to the double-click event works as expected.
A double click on a directory then just shows the dir (because the exec
requires an 'active' file item).
2011-03-11 17:01:29 +00:00
Janne Karhu
01b547f993 Fix for [#26457] Physics Size attribute affects hair particle DupliObjects while hidden
* Forgotten settings for the "simple hair" ui.
2011-03-11 11:15:35 +00:00
Campbell Barton
a62f7422ff move do_version code under latest subversion bump. 2011-03-11 09:35:16 +00:00
Ervin Weber
102c5e0ad4 2011-03-11 07:59:43 +00:00
Campbell Barton
bfe5a6ed8f fix [#26448] Solidify Modifier makes mesh texture missing in OpenGL render 2011-03-11 05:23:56 +00:00
Joshua Leung
ffb4cf6b32 Bugfix [#26167] Animating inside group nodes behaves strangely
One node update call (for nodes within group nodetrees) was using the
wrong nodetree (node-editor's nodetree, not the group) which meant
that the wrong RNA context for such nodes would get used, resulting in
errors when trying to keyframe such nodes.

Hopefully this is the last time I have to fix these bugs...
2011-03-11 03:27:38 +00:00
Nathan Letwory
dec585cb94 Fix a typo in defines. Patch by Alexander Kuznetsov
The typo resulted in bad keyboard input handling in MinGW builds.
2011-03-11 02:58:37 +00:00
Campbell Barton
d7257a983f bugfix [#26454] WITH_PYTHON_SAFETY crash. 2011-03-11 02:43:30 +00:00
Janne Karhu
bc97f88576 Better progress info for physics baking:
* Using the job system for physics baking is not yet in the near future, so here's some good old console based progress info to all point cache based physics baking.
* The info contains current total bake time, baking time for the current frame, and a simple estimate of completion time.
* The info is only shown if the estimated total time for the bake is higher than one minute, so quick bakes don't suffer any performance hits due to console printing.
2011-03-11 02:00:05 +00:00
Campbell Barton
9c032756e9 when checking for windows check sys.platform starts with "win" rather then '== "win32"' & avoid importing platform.
also add some notes to CMake options.
2011-03-11 01:24:16 +00:00
Campbell Barton
1008137f72 simplify BLI_path_abs by using BLI_cleanup_path 2011-03-11 01:06:16 +00:00
Campbell Barton
d6ca95b1a3 fix [#26451] Little problem when selecting relative output path
BLI_path_rel() no longer strips trailing slashes.
2011-03-11 00:30:51 +00:00
Joshua Leung
cda0460c89 Bugfix [#26438] : While grabing a marker with G, cancelling with Esc
does exit cancelling the translation (as expected), while RMB doesn't,
it works same as LMB

This should fix the remaining issues with marker tweak-grab mappings
(hardcoded for right-mouse for now)
2011-03-11 00:18:10 +00:00
Campbell Barton
6959536abe fix [#26452] Problem with key properties when OnlySelectedCurveKeyframes option enabled. 2011-03-10 23:55:22 +00:00
Joshua Leung
b79762a7c3 Bugfix [#26438]: Hotkey conflict between add meta-strip and add marker
The sequencer made it's own copy of the Markers keymap, which was
inconsistent with the rest of Blender, making things confusing to use.
I've removed these duplicate keymap entries, and also changed the
conflicting hotkeys for Metastrips.

Metastrips now use the same hotkeys that their NLA cousins use:
Shift-G to add, Alt-G to remove; These were chosen since in user-
terms, metastrips are more like "strip groups"
2011-03-10 23:26:59 +00:00
Campbell Barton
ef8aa6cc6a fix [#26436] Operator.draw(): UI redraw; UI trimmed 2011-03-10 22:22:47 +00:00
Nathan Letwory
d6b43fed31 Fix [#26446] Quick extrude (Ctrl+LMB) works only one time
Reported by Michael R

This was one thing I didn't test when accepting patch [#26364]. It is important to not
send repeats of modifier keys.
2011-03-10 18:56:19 +00:00
Ton Roosendaal
efc697b481 Bugfix #26443
Node compositor crash:
When you very quickly unlink a socket *right* after connecting it
(within 0.1 second), the compositor started with a noodle without
valid connections, which was not foreseen to happen.
2011-03-10 18:17:20 +00:00
Ton Roosendaal
9a622f18ac Bugfix #26424
More problems with Undo and Render Slots (Image editor)

- Undo storage for operator is now back, but only when new
  buffers were added (not when viewing existing)

- A real bug: On undo/redo, the stored buffers were never
  retrieved, but always freed entirely.

Note however that when you undo back to a state before you
rendered (or added slots), the render buffers that didn't
exist back then also get freed. A redo doesn't bring it back.
2011-03-10 17:34:27 +00:00
Ton Roosendaal
a836390426 Todo:
Fixed name and tooltip for new "render output" option. It does draw output,
but just doesn't change your UI layout.
2011-03-10 16:36:16 +00:00
Campbell Barton
1c3679a5b0 fix [#26442] blender crash when turning off antialiasing fonts
ASCII lookup table wasn't being freed when when the rest of the glyphs were.

Also found own bug where mesh stat text was using wrong sized array (char[3] as char[4]).
2011-03-10 13:49:46 +00:00
Ton Roosendaal
188c4ae055 Bugfix #26442
Very bad crashing in using "Not AA fonts" and drawing length info
on EditMesh. This uses the call BLF_draw_ascii() which apparently
corruptes then badly. Disabled the call for now, and wait for fix.

In the course of testing, added proper strlen storage for draw
in this code.

Added strlen
2011-03-10 12:52:18 +00:00
Janne Karhu
f13ae69bcd Fix for [#26441] Child Hair Crash
* Silly mistakes in my last particle distribution code commit.
2011-03-10 12:36:11 +00:00
Ton Roosendaal
695f35387b Bugfix irc report:
With draw method "Overlap", the preview line for menu "Split area" was not
correctly visible.
2011-03-10 11:47:36 +00:00
Ton Roosendaal
476eadbcb1 Bugfix #26437
- Tooltip-hanging fix made the 'active' button be removed when mouse
  enters another subwindow. Caused by commit of a week ago.

- Reverted the eventsystem change that sets 'active subwindow' before
  it calls modal handlers. This made editors become active on using
  menus, buttons, or other modal ops.

  Side effect is that for transform operators called via toolbar, the
  overlay-extra draw with helplines now gets skipped. Will check on
  good ways for it.
2011-03-10 11:11:26 +00:00
Campbell Barton
0e74ed5952 fix [#26406] Projection Paint, Occlussion Problem with Intersections in perspective mode. 2011-03-10 08:51:41 +00:00
Campbell Barton
d59e208216 also enable edge-seam unwrapping when running the mark_seam operator. 2011-03-10 06:06:55 +00:00
Campbell Barton
3ad8fd44c4 request from Jedrzej Slewczuk's:
Option for tagging creases (Ctrl+RMB) to also re-unwrap the mesh.
 In 2.42 this could be done by setting rt==8 (very hidden), now its a little less hidden (in the toolbar).
2011-03-10 05:52:16 +00:00
Campbell Barton
6a32442855 revert r35438, Martin doesn't like having this option tacked on. 2011-03-10 00:38:23 +00:00
Campbell Barton
f3a455fd22 CMake should find python now without manual options being set on linux.
cmake on *nix detects python ABI flags for debug and release mode.
searches /usr /usr/local /opt/py32
2011-03-10 00:25:35 +00:00
Nathan Letwory
2336612075 Fix small error in chdir + cmd combination. 2011-03-10 00:21:36 +00:00
Nathan Letwory
4ef2d32b72 untarring of Python 3.2 tarballs would fail if CMake was installed into path with spaces. Slightly
change how the extraction commands are presented (old BUILD_TYPE was empty all the time here) and
ensure also that python/lib subdir under versioned dir gets actually created.
2011-03-10 00:12:06 +00:00
Campbell Barton
17564249bb better default python ABI flags for *nix, 'm' default, 'd' for debug.
give a CMake error if Python.h isn't found.
2011-03-09 23:27:26 +00:00
Nathan Letwory
239a6f9de7 Some small fixes to the install part for windows. 2011-03-09 22:45:43 +00:00
Campbell Barton
1110c80696 add option requested [#25598] projection surface snap issue
for retopo workflow you don't wan't to project the mesh onto its self, added option not to.
2011-03-09 22:45:34 +00:00
Nathan Letwory
ca63b15131 Apply [#26364] New Windows keyboard handling
Submitted by Alexander Kuznetsov

Fixes [#25279] Shift-Numpad Combinations fail to align view to selected
and addresses [#26328] Blender uses global keyboard message hook which hurts system responsiveness on Windows

A whole new way of handling keyboard input improves greatly both code readability and event handling. Thanks for the great patch, Alexander!
2011-03-09 22:10:51 +00:00