Commit Graph

5383 Commits

Author SHA1 Message Date
7a252d9824 Fix for [#26658] Permeable colliders stop particles
* Forgot this exception from the collisions rewrite. Don't check collisions with the same face twice.
2011-03-29 10:27:31 +00:00
dbd13d67b1 Bugfix [#26645] Crash when duplicating an object with driver
Missing null check for "improper" driver variables.

------

Also, this commit includes some WIP NLA evaluation reshuffling which
should be harmless. I had originally intended this for a later
commit...
2011-03-29 09:37:53 +00:00
ca38366732 particles & vector-font: floats were being implicitly promoted to
doubles, adjust to use floats.
2011-03-28 11:21:39 +00:00
72b4bf2fda Bug fix: particles emitted from a moving emitter exploded with verlet integration
* Verlet integration didn't like moving emitters, so now the first step for newborn particles with verlet is actually done with euler integration.
2011-03-28 08:08:59 +00:00
dd56ebe607 blenkernel: floats were being implicitly promoted to doubles, adjust to use floats. 2011-03-28 04:22:50 +00:00
ac1cb5ee05 - quiet new warnings with gcc 4.6
- use BLI math funcs for normal float/short conversion.
- correct some un-intentional float/double promotions.
2011-03-28 02:34:55 +00:00
a73c3fe5c9 subsurf, derived mesh and other misc files: floats were being implicitly promoted to doubles, adjust to use floats. 2011-03-27 17:22:04 +00:00
617e6a83bc object/paint/misc-files: floats were being implicitly promoted to doubles, adjust to use floats.
- also UV angle stretching was using radians->deg which wasn't needed.
2011-03-27 14:59:55 +00:00
121075ec15 One more fix for recent normals re-calculation change 2011-03-26 17:43:07 +00:00
5aec085da0 Fixed memory access in mesh_calc_normals(). Now it uses much less memory. 2011-03-26 09:48:03 +00:00
63e40dbe0e Fix #26582, #26586, #26613: recent normal calculation changes didn't take
into account that some tools use normals for things other than display. Now
we properly initialize vertex normals at flat faces too.

Also fixed a normal refresh issue, and deduplicated CDDM/mesh normal
calculation code.
2011-03-26 08:28:24 +00:00
d53a0cd48f Bugfix:
Recent renaming of Key.keys to Key.key_blocks broke converter for old
files.

Campbell Alert: However, more seriously, it has broken many current
rigs, especially those with heavy usage of (driven) Shape Keys
2011-03-26 05:52:18 +00:00
11920f7880 Bugfix #26195
When rendering, during processing scene data, drawing in 3d window
is now locked. Can get extended to more areas in UI easily.

At least this solves all crashes with conflicting memory access in
render && 3d drawing. Deleting objects via operators or delete 
modifiers isn't locked yet.

Also fixed: crash on quitting a renderwindow when it was rendering.
2011-03-25 17:11:32 +00:00
8b6b5341a5 move object re-linking into a function. 2011-03-25 08:43:41 +00:00
d8e6dd705f fix [#26607] blender won't duplicate or assign new drivers on duplication 2011-03-25 07:34:44 +00:00
561b6e34f0 Bugfix:
[#25725] Transform bone constraint & 'local with parent' as owners
space
[#26014] ChildOf Bone Constrain (influence) works in wrong workspace

Moved the influence calculation stuff outside of the space conversions
(i.e. so that it is done in worldspace only) fixes these problems,
which seem to arise when a constraint doesn't work in worldspace AND
doesn't need to apply inverse correct for this space conversion when
it's done, hence resulting in mismatch between spaces for old and new
matrices resulting in all the weird behaviour.

Patch to fix this from Jahka. Cheers!
2011-03-24 23:34:43 +00:00
c2ee06a4b2 Particle charge effector wasn't working properly.
* Probably just forgot this code somewhere a long time ago.
2011-03-24 12:12:54 +00:00
edc5cf1f96 Fix #26573, #26574 and #26551: objects on layers not visible on load or undo
restore, would not get their dependencies updated when they became visible.
It happend with a shrinkwrap modifier in these reports, but could happen with
other modifiers too.

Now we keep track of which layers have ever been updated since load, and tag
objects on them to be recalculated when they become visible.
2011-03-23 14:06:44 +00:00
4c3899ca09 Fixing the particle emitter interpolation (#25385 & #26493) further
* The interpolation should only be done if the dynamics were calculated, since otherwise animation keys can't be set after parenting.
2011-03-22 12:53:18 +00:00
2304256a6c quiet warning 2011-03-21 22:10:24 +00:00
67cbf22211 Bugfix #26549
Using environment map type "load" increased user counter on each
preview render.

Also noticed that this type of envmap use wasn't threadsafe, causing
imbufs being allocated for all threads. Also fixed that.
2011-03-21 17:10:55 +00:00
4a305e7edb Half way fix for [#25385] Particles Emitter only interpolates IPOs & [#26493] Particle system animates incorrectly when emitting mesh is parented
* Particle emission now updates all parent objects too to the exact emission time.
* This only does object level animation as updating the object data for every particle would be too slow.
* A better fix could be to interpolate the emission location directly from the current particle emission location and the location from the previous frame, but for this some point cache changes have to be made, so it will have to wait.
2011-03-21 08:47:04 +00:00
549b5e1222 Fix/change in normal computation, now the viewport uses the same angle
weighted normals as the render engine, and the render engine will copy
normals from the mesh rather than always recalculating them.

Subsurf/multires still use regular vertex normals, but they are expected
to be sufficiently high resolution to not need this.

This means that normal maps displayed in the viewport actually match the
render engine exactly and don't have artifacts due to this discrepancy.
It of course also avoids unexpected surprises where your render normals
look different than your viewport normals.

Subversion bumped to 4 for version patch to recalculate normals.

Patch by Morten Mikkelsen, with some small changes.
2011-03-20 13:35:35 +00:00
e134e0139f ugh, left in a debug print in the previous commit 2011-03-19 13:36:43 +00:00
f15c12a0d2 Fix for [#26546] Particles leak through deforming quad mesh
* Slightly too strong optimization in the new collisions code, the "edges" in the middle of quads weren't checked at all.
2011-03-19 13:33:03 +00:00
e9005b985e remove some redundant vars, assignments & checks. 2011-03-19 05:06:06 +00:00
e44da6b695 hide addon_utils in bpy.utils & tag/remove unused vars in recent commits. 2011-03-18 20:57:32 +00:00
60ce95f562 New particle collisions code:
* The old collisions code detected particle collisions by calculating the
  collision times analytically from the collision mesh faces. This was
  pretty accurate, but didn't support rotating/deforming faces at all, as
  the equations for these quickly become quite nasty.
* The new code uses a simple "distance to plane/edge/vert" function and
  iterates this with the Newton-Rhapson method to find the closest particle
  distance during a simulation step.
* The advantage in this is that the collision object can now move, rotate,
  scale or even deform freely and collisions are still detected reliably.
* For some extreme movements the calculation errors could stack up so much
  that the detection fails, but this can be easily fixed by increasing the
  particle size or simulation substeps.
* As a side note the algorithm doesn't really do point particles anymore,
  but uses a very small radius as the particle size when "size deflect" isn't
  selected.
* I've also updated the collision response code a bit, so now the particles
  shouldn't leak even from tight corners.

All in all the collisions code is now much cleaner and more robust than before!
2011-03-18 15:31:32 +00:00
25d4515181 fix [#26532] Does not save in specified format
old bug from r6568 (or before) in BKE_write_ibuf(), when passed TAGA format it would use whatever format the image buffer already had.
expect this is exposed by updated image saving code in 2.5x.
2011-03-18 00:12:51 +00:00
e3842d1ca4 Bugfix [#26505] zoom in selected keys on graph editor
Not really a "bug", but it was on my todo anyways. Based on patch
[#26508] by Campbell, with a few modifications including extending
this to the Action/DopeSheet editor too.
2011-03-17 10:02:37 +00:00
6dda182a76 Fix for [#26520] Point Density turbulence not accessible in Texture Properties.
* Mistake in the ui file.
* Also found a possible memory leak.
2011-03-16 18:21:31 +00:00
6e4be608ff Bug fix: Changing volume texture properties after render crashes (reported by mats on irc)
* Preview render copied the volume texture, but not the actual volumedata, so normal render and preview render clashed.
2011-03-16 14:21:35 +00:00
8b9615caa0 Fix for [#26516] Blender crashes for Particle Physics Path Editing.
* Silly own mistake from some previous code cleanup.
2011-03-16 13:03:05 +00:00
da18391ac4 api function added for [#26481] Export to X3D of IndexedFaceSet should use X3D 's DEF USE mechanism
Object.is_modified(scene, 'PREVIEW') function for python exporters to check if any modifiers or shape keys are applied (weather the original mesh can be used for exporters).
2011-03-16 08:53:35 +00:00
b65a56ccb5 fix [#26494] Auto run Python scripts option in User Preferences problem
- opening a file with blender by passing it as an argument would and loading it once in blender left script auto execute flag in a different state.
- command line args --enable/disable-autoexec were being overridden by the user prefs.
2011-03-15 08:04:11 +00:00
b332a27429 use defines for BKE_read_file, no functional change. 2011-03-15 05:00:10 +00:00
5aa76a8c88 fix [#26507] Rename bone -> segfault 2011-03-15 03:38:15 +00:00
af66a4630d fix [#26478] New image extension is appended to the old one instead of replacing it
Note: 
Extension is replaced with the new extension if it's a known image extension.
Brings back old behaviour, a little bit refined.
2011-03-14 21:13:30 +00:00
d789484dc7 Fix for [#20171] Properties of Hair are not animateable
* Don't know when this got broken again, but now the "regrow hair" option works like it's supposed to again.
2011-03-14 17:37:51 +00:00
7609370d50 Bugfixes:
- Sync Markers option works for local markers (or any other list of
markers in future) too now.
- Apply Pose to Restpose operator now displays a warning if an action
was found (warning about the action now being invalid)
2011-03-14 10:45:42 +00:00
Lukas Toenne
05b2a75bfe Group tree sockets were not being freed after removing. 2011-03-13 22:13:42 +00:00
Lukas Toenne
24f72abf67 Fix for crashes due to links without fromnode pointers. This can happen with "unfinished" links created during the modal linking operator or when creating links from group tree inputs.
In addition don't store unfinished links in the nodetree->links list any more. This makes code a bit safer because all links in that list can be considered valid now. The temporary bNodeLinkDrag structs used by the modal linking operator are now also stored in a list in SpaceNode, so these links can be drawn too (this separation also allows different display of temporary links, e.g. currently they are drawn on top of all nodes).
2011-03-13 22:07:55 +00:00
Lukas Toenne
2907826d8c Fixed the node_recurs_check function used to define the order of nodes in ntreeSolveOrder. This was creating equal node levels in some cases (auto-linking viewer to nodes further downstream), leading to falsely detected circular dependencies. 2011-03-13 17:23:44 +00:00
2144b23f51 Pose Sliding Tools - Custom Property Support + Other bugfixes
- Custom properties are now affected by the Pose Sliding tools too.
This is now more important to support, given that modern rigs use
these a lot for facial expressions/posing. By and large, this should
work fine, though discrete integer values may experience a bit of
trouble

- Fixed potential bugs with the code which detects which F-Curves are
relevant to a PoseBone's transforms (+ custom props). This was prone
to being tricked by certain setups if the names of the bones contained
some of the keywords these were searching for.

- Shuffled some code around: moved bulk of logic out of vec3 case into
new function for single-value, since it was really doing per axis
already
2011-03-13 12:22:57 +00:00
a416949382 - BKE_idcode_iter_step() - function to step over all ID codes.
- BLO_blendhandle_get_datablock_names() now takes an arg for the total items in the list, saves the caller counting.
2011-03-12 14:38:00 +00:00
460bdf1f59 tag/comment unused variables. 2011-03-12 14:21:04 +00:00
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
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
102c5e0ad4 2011-03-11 07:59:43 +00:00
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