Commit Graph

356 Commits

Author SHA1 Message Date
eedf5cbe89 reading in hair with dynamics wasnt working but mostly crashed when duplicating the object.
from reading all places dynamic hair is used I think these changes are correct (cloth seems to share pointcache with the psys) but its not obvious.

jahka: please check this is ok.
2010-02-04 16:54:25 +00:00
b7e3862b55 fix for crash when deleting duplictaed objects with particle systems
cloth modifier was copied but not assigned to the new psys.
2010-02-04 09:59:05 +00:00
ec48cbd267 utility functions is_negative_m3 & is_negative_m4, added python Mathutils access Matrix.is_negative
renamed Mathutils attribute wrapped -> is_wrapped
2010-01-30 13:15:39 +00:00
877251fb8c Fix #20824: vertex parent fails with subsurf on. 2010-01-27 15:09:34 +00:00
e307f6c6a0 rename defgroup functions to be more consistant.
* no functional changes *
2010-01-26 13:50:17 +00:00
cbc4aae06a Fix crash rendering grass_wind.blend from regression tests. The real
problem is that where_is_object is being called from multiple threads
but is not thread-safe, added a note about this problem, this commit
only solves the crash. Also remove the pushdata/popdata mechanism
that was being used here, using this kind of system is bound to give
problems with threading.
2010-01-22 11:03:55 +00:00
939c3ba9cb Fix for proxy fix: copy drivers on synchronize now does proper relinking
of driver targets, sharing code with make proxy.
2010-01-20 14:28:49 +00:00
63e80e271d Bugfix: drivers on constraint properties could get set to invalid when
transforming, due to the evaluation of the object transform without
constraints, and the driver not finding the property.

Constraints are now disabled in a way that should avoid this problem
2010-01-12 19:51:26 +00:00
a9861e3381 Durian Request: Drivers Recode
Highlights:
* Support for Multi-Target Variables
This was the main reason for this recode. Previously, variables could only be used to give some RNA property used as an input source to the driver a name. However, this meant that effects such as Rotational Difference couldn't be used in conjunction with other effects and/or settings to achieve the powerful results. Now, a variable can take several input targets, perform some interesting operations on them, and spit out a representative value based on that.

* New Variable Types
With the introduction of multi-target variables, there are now 3 types of variable that can be used: single property (i.e. the only type previously), Rotational Difference (angle between two bones), and Distance (distance between two objects or bones).

* New Driver Types
In addition to the existing 'Average', 'Sum', and 'Expression' types, there is now the additional options of 'Minimum' and 'Maximum'. These take the smallest/largest value that one of the variables evaluates to.

* Fix for Driver F-Curve colouring bug 
Newly added drivers did not get automatically coloured in the Graph Editor properly. Was caused by inappropriate notifiers being used.


Notes:
* This commit breaks existing 2.5 files with drivers (in other words, they are lost forever). 
* Rigify has been corrected to work with the new system. The PyAPI for accessing targets used for the variables could still be made nicer (using subclassing to directly access?), but that is left for later.
* Version patching for 2.49 files still needs to be put back in place.
2010-01-04 21:15:45 +00:00
d92a6f140d copy modifiers, as "Link Modifiers" - in Ctrl+L menu. difference between copy and link is vague especially since particle systems are ID data. 2010-01-04 16:26:07 +00:00
e6f26957ea Cleanup of MotionPaths+Ghosts (AnimViz) - Part 1
This commit sets up some of the groundwork necessary to extend the animation visualisation capabilities, previously only available for bones in PoseMode, to Objects as well. Also, some of the other goals of this refactor is to make future visualisation goodies (i.e. editable paths) more feasible...
(There's really nothing to see here yet. The following log notes are really just for my own reference to keep track of things.)

Currently, the following things have been done:
* New datastructures + settings have been tidied up, ready for usage
* Added these new types into the Object and PoseBone code as necessary, with freeing/adding/copying accounted for
* File IO code for the new data, including version patching to convert the old system to the new one.
* Set up the drawing system for motionpaths based on the old armature path drawing code. Armatures still draw using the old system, since the two systems use different storage systems.
* Started setting up the motionpath 'baking' code, but the core of this still needs to be coded...

Next Steps (after some semi-urgent Durian Driver changes):
* Port the ghosting/onionskinning code over too
* Finish motionpath baking code
* RNA wrapping for the new types
* Hooking up all the new code into the operators, etc.
2010-01-01 12:24:16 +00:00
8177f343a0 - object.add_shape_key(name="Key", from_mix=True)
- ensure new shape key names are unique
- Transfer ShapeKey now can have its settings changes (redo operator)
2009-12-28 18:03:04 +00:00
32656ad4ba moved shape key insert function into BKE_object.h 2009-12-28 15:26:36 +00:00
be55097353 Mesh Animation + Depsgraph Tweaks:
* Mesh data/settings can now be animated. It is not recommended that geometry be animated directly, but other settings such as autosmooth, etc. can be...

* Code cleanups for depsgraph, making sure that drivers get included for all object data types.
2009-12-28 00:52:31 +00:00
3e23f002b4 fix for non Euler-XYZ rotations...
- Camera to 3D view didnt check for rotation order.
- Fly mode didnt check for rotation order.

added util functions.
- object_apply_mat4(ob, mat4); applies a 4x4 matrix to an objects loc,scale,rot (accounting for rotation modes)
- object_mat3_to_rot(ob, mat3, use_compat); apply a 3x3 matrix to the objects rotation, option to use a euler compatible with the existing euler.
2009-12-19 10:27:23 +00:00
c3401eb5cb camera switching via markers
Currently access by selecting a marking and binding with the active camera from the view menu.

Note:
after long discussion we decieded there is no nice way to do this.. animate pointers? animate multiple camera visibility?, use sequencer? use NLA?.... have a kind of event system (like framechange scriptlinks)... etc
so this is ifdef'd with DURIAN_CAMERA_SWITCH
2009-12-16 19:49:33 +00:00
e01b030817 Bugfix #20351:
- Offset parameter of the path constraint has no effect on the animation 
- Path animation was being repeated multiple times even though it was not supposed to
2009-12-14 06:25:42 +00:00
6639ba6b86 Sculpt Branch:
svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r25180:25245
2009-12-09 15:24:55 +00:00
1c47b3acb6 Fix for [#20197] dof node bugs
This is still a bit dodgy, the issue of accessing scene data from nodes needs to be solved better, but this at least fixes it up to previous capabilities, and prevents writing any data to scene/objects either.
2009-12-09 02:55:19 +00:00
82ddfbf99f Sculpt Branch:
svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r24889:25180
2009-12-07 19:22:48 +00:00
a94a2c8c72 Fix for [#20286] New objects have no Display Type
Removed a few more references to shaded mode
2009-12-07 10:28:36 +00:00
b89138564e Changes to Color Management
After testing and feedback, I've decided to slightly modify the way color 
management works internally. While the previous method worked well for 
rendering, was a smaller transition and had some advantages over this
new method, it was a bit more ambiguous, and was making things difficult 
for other areas such as compositing.

This implementation now considers all color data (with only a couple of 
exceptions such as brush colors) to be stored in linear RGB color space, 
rather than sRGB as previously. This brings it in line with Nuke, which also 
operates this way, quite successfully. Color swatches, pickers, color ramp 
display are now gamma corrected to display gamma so you can see what 
you're doing, but the numbers themselves are considered linear. This 
makes understanding blending modes more clear (a 0.5 value on overlay 
will not change the result now) as well as making color swatches act more 
predictably in the compositor, however bringing over color values from 
applications like photoshop or gimp, that operate in a gamma space, 
will give identical results.

This commit will convert over existing files saved by earlier 2.5 versions to 
work generally the same, though there may be some slight differences with 
things like textures. Now that we're set on changing other areas of shading, 
this won't be too disruptive overall.

I've made a diagram explaining the pipeline here:
http://mke3.net/blender/devel/2.5/25_linear_workflow_pipeline.png

and some docs here:
http://www.blender.org/development/release-logs/blender-250/color-management/
2009-12-02 07:56:34 +00:00
a96f6f2e15 * Moved rotation initialisation code for new objects to 'the other' add object function that campbell fixed earlier. This should mean that the py-api does everything in the right way now.
* Tried adding 'Load Factory Settings' to File menu, but I seem to be running up against some RNA bugs. Can be removed if is too problematic.
2009-11-29 23:54:41 +00:00
2bef608fb3 - new objects added from the rna api defaulted to quat rotation, not even using an identity quat.
- making meshes in python isnt nice at the moment, added a helper function.
    mesh.from_pydata(verts, edges, faces)
2009-11-29 23:14:41 +00:00
54c5859578 Durian Rigging Requests: (Armature Layers + Rotation Locking Tweaks)
* Increased the number of Armature and Bone Layers from 16 to 32. Please note that older versions of Blender may not correctly resolve the layers that bones are on when loading new files.

* Newly added objects are now made by default to allow locking of 4-component rotations using 4 separate locks (i.e. one by component) instead of requiring the obscure 'W' toggle (renamed '4L' now) to be enabled first. The objects in the default scene need modifying manually though.
2009-11-28 03:49:45 +00:00
1fcffd1aa0 Bugfix #20041: Drivers don't work on bone visiblity
- Drivers on added to the 'armature' datablock (i.e. keyframing some settings for a "Bone" as opposed to "PoseBone") now evaluate correctly. Added proper recalcs for this case too.

- Also fixed some memory leaks and loading problems I encountered with the test file provided. After having problems loading the test file, I ended up reproducing and finding the error.
2009-11-26 03:43:39 +00:00
55d2a56d60 Sculpt:
svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r24483:24889
2009-11-25 17:51:16 +00:00
bc6190f3e3 python api for collection add()/remove()
Added a group example
 C = bpy.context
 ob = C.active_object
 bpy.data.groups[0].objects.add(ob)

- add_to_group and rem_from_group now take optional scene and base flags and deal with updating the object & base flags
- operators that add objects to groups were setting ob->recalc= OB_RECALC_OB; looks like its not needed.
- previously add() ignored python args, now add and remove are called like any other FunctionRNA from python.
- made the pyrna api use tp_getset's for collestions active/add()/remove()
2009-11-11 16:28:53 +00:00
2e3326c153 Sculpt: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r24330:24483 2009-11-11 10:44:46 +00:00
37e4a311b0 Math Lib
* Convert all code to use new functions.
* Branch maintainers may want to skip this commit, and run this
  conversion script instead, if they use a lot of math functions
  in new code:
  http://www.pasteall.org/9052/python
2009-11-10 20:43:45 +00:00
68278f35e8 Sculpt: tool updates for latest changes
* Smooth: vert-face map is now only created when this tool is used, would be
  best to also avoid using it here to avoid a sudden increase in memory, but
  is not trivial.
* Grab: now no longer uses active verts list and loops over nodes like other
  tools.
* Layer: uses original coordinates from undo now to save memory when not
  using persistent layer.
* Anchored: this option works again now, though is still quite slow as it
  loops over all verts/faces.

Smooth, layer tools and the anchored option could still be improved to use
less memory and/or work faster by only doing things per node.
2009-11-04 21:10:28 +00:00
b90d8ec0f4 Sculpt: derivedmesh no longer created CD_ORIGINDEX layer when there
is no modifier, saving some memory.
2009-11-04 20:23:48 +00:00
243c73e96e Moved the PBVH from sculpt session to DerivedMesh/CDDM.
* Multires sculpting appears to work now
* PBVH gets recalculated in some cases where it shouldn't, haven't looked into this yet
2009-10-28 06:06:05 +00:00
93beb0b85a Commit of the sculpt patch (#19672). Further development will be in this branch until we merge to trunk. 2009-10-27 19:53:34 +00:00
596d25773a Another fix for duplicating objects with particles. 2009-10-19 13:21:37 +00:00
2d0f3274bd Fix #19588: duplicating objects with particle systems would crash.
Also an unrelated warning fix.
2009-10-19 13:17:47 +00:00
a28b9512fe made texflag a short everywhere (only stores one flag)
fix for crash with separate (missing NULL check)
2009-10-15 09:00:40 +00:00
10198e99ff Deep Shadow Buffer
Since the deep shadow buffer summer of code project is not actively under
development anymore, I decided to build my own DSM implementation from
scratch, based on reusing as much existing shadow buffer code as possible.
It's not very advanced, but implements the basic algorithm. Just enough so
we can do shading tests with it, optimizations and other improvements can
be done later.

Supported:
* Classical shadow buffer options: filter, soft, bias, ..
* Multiple sample buffers, merged into one.
* Halfway trick to support lower bias.
* Compression with user defined threshold.
* Non-textured alpha transparency, using Casting Alpha value.
* Strand render.

Not Supported:
* Tiling disk cache, so can use a lot of memory.
* Per part rendering for lower memory usage during creation.
* Colored shadow.
* Textured color/alpha shadow.
* Mipmaps for faster filtering.
* Volume shadows.

Usage Hints:
* Use sample buffers + smaller size rather than large size.
* For example 512 size x 9 sample buffers instead of 2048 x 1.
* Compression threshold 0.05 works, but is on the conservative side.
2009-10-12 19:41:40 +00:00
efed73598f Use OB_MODE_EDIT as a flag everywhere, also fixed a typo which made drawing the set-scene not work right. 2009-10-11 19:06:38 +00:00
8f154364f2 separate material lost all materials for the new mesh 2009-10-08 09:22:39 +00:00
475ab5ceb4 Rotation Modes Bugfix:
Animating rotations using different rotation modes should now work more often than before. 

Previously, quaternion and axis-angle values were stored in the same variable in DNA, but that was causing problems with other animation curves overwriting the values and causing the rotations to not work as expected. 

There are still some issues, but I'll track those down later tonight
2009-10-08 00:57:00 +00:00
a899e9dd18 Check if the object is in editmode with (ob->mode==OB_MODE_EDIT) rather then (ob==scene->obedit)
Was trying to fix a hard to redo crash with custom bone shapes in editmode but cant redo. still, will help with future multi-editmode.
2009-10-07 11:36:29 +00:00
bff893a420 Unified effector functionality for particles, cloth and softbody
* Unified scene wide gravity (currently in scene buttons) 
  instead of each simulation having it's own gravity.
* Weight parameters for all effectors and an effector group 
  setting.
* Every effector can use noise.
* Most effectors have "shapes" point, plane, surface, every point.
	- "Point" is most like the old effectors and uses the 
	  effector location as the effector point.
	- "Plane" uses the closest point on effectors local xy-plane 
	  as the effector point.
	- "Surface" uses the closest point on an effector object's 
	  surface as the effector point.
	- "Every Point" uses every point in a mesh effector object 
	  as an effector point.
	- The falloff is calculated from this point, so for example 
	  with "surface" shape and "use only negative z axis" it's 
	  possible to apply force only "inside" the effector object.
* Spherical effector is now renamed as "force" as it's no longer 
  just spherical.
* New effector parameter "flow", which makes the effector act as 
  surrounding air velocity, so the resulting force is 
  proportional to the velocity difference of the point and "air 
  velocity". For example a wind field with flow=1.0 results in 
  proper non-accelerating wind.
* New effector fields "turbulence", which creates nice random 
  flow paths, and "drag", which slows the points down.
* Much improved vortex field.
* Effectors can now effect particle rotation as well as location.
* Use full, or only positive/negative z-axis to apply force 
  (note. the z-axis is the surface normal in the case of 
  effector shape "surface")
* New "force field" submenu in add menu, which adds an empty 
  with the chosen effector (curve object for corve guides).
* Other dynamics should be quite easy to add to the effector 
  system too if wanted.
* "Unified" doesn't mean that force fields give the exact same results for 
  particles, softbody & cloth, since their final effect depends on many external 
  factors, like for example the surface area of the effected faces.

Code changes
* Subversion bump for correct handling of global gravity.
* Separate ui py file for common dynamics stuff.
* Particle settings updating is flushed with it's id through 
  DAG_id_flush_update(..).
  
Known issues
* Curve guides don't yet have all ui buttons in place, but they 
  should work none the less.
* Hair dynamics don't yet respect force fields.

Other changes
* Particle emission defaults now to frames 1-200 with life of 50 
  frames to fill the whole default timeline.
* Many particles drawing related crashes fixed.
* Sometimes particles didn't update on first frame properly.
* Hair with object/group visualization didn't work properly.
* Memory leaks with PointCacheID lists (Genscher, remember to 
  free pidlists after use :).
2009-09-30 22:10:14 +00:00
2a21c1acbe Animato: Bugfixes
* #19501: Only the first user of multi-user IPO's were getting converted to AnimData. 
Now, this AnimData gets converted multiple times - once for each user. This will mean that multi-user actions will no longer be multi-user after conversion though, although this could be fixed manually if there really is such a need.

* #19503: Nasty memory leaks when duplicating objects with AnimData
Fixed a few little oversights made when coding the copying code for NLA-data (which resulted in exponential copying-loops of doom), and sanitised the AnimData copying code for ID-blocks to be simpler to manage.
2009-09-30 04:59:14 +00:00
7d2fd5449e Durian Feature Request: Rotation Modes for Objects
This (biggish) commit generalises the rotation modes functionality added for Bones, allowing Objects to use the various Euler Rotation orders, Axis-Angle, and Quaternion rotation representations.

I've also cleaned up the nomenclature of the rotation-related settings so that the naming styles are more consistent with each other. Unfortunately, this will break all files involving object or bone rotation animation made in 2.5 versions (2.4x will still get correctly converted).

General Notes:
* By default, Objects still default to using Eulers, while Bones will use Quaternions by default still.
* I've fixed all areas that I'm currently aware of to work with these changes. However, there are probably a few places where I've missed a few changes (i.e. auto-keyframing will need attention later).
* Removed the old "IPO-Keys" stuff from Transform code. I'm unlikely to restore this in the near future, and trying to fix that to include support for this commit would have been too much work.
2009-09-28 10:19:20 +00:00
87f5f194bc 2.5 - Animation Tweaks
* delta-transforms for objects should work again. These were basically extra transforms that could get added on top of the values calculated from animation values.

* Added some skeleton code for fixing paths when some data needs to be renamed.
2009-09-22 11:45:30 +00:00
fbbda4c06e Warning fixes for blenkernel and editors.
Note sure what to do with this one, and personally think
we should avoid using macros for this kind of thing:

V_GROW(edges);
source/blender/editors/mesh/loopcut.c:232: warning: value computed is not used
2009-09-17 14:46:22 +00:00
ba5df38d66 use static functions where possible for some local functions. 2009-09-14 16:52:06 +00:00
f130f16fef Use curve radius for paths
- use_radius option, off by default for 2.4x files, on by default on new curves.
- curve deform modifiers (think tentacles)
- follow path (parent mode and constraint)
- curve guides
- added back Alt+S to scale point radius
- Mat3Scale and Mat4Scale arithb.c functions to make a new uniform scale matrix.

- TODO, effectors, looks like they have no way to scale from the radius yet.
2009-09-12 16:25:49 +00:00
d16bde417f new struct PathPoint for each path element (replaces float[4]), Paths now store radius and quaternion
Added optional quat and radius args to anim.c's where_on_path(...), currently unused.

also cleanup some warnings.
2009-09-12 14:12:37 +00:00