Commit Graph

10681 Commits

Author SHA1 Message Date
Brecht Van Lommel 1327833282 Sculpt: WIP brush behavior changes
* Draw/Inflate/Layer now keep working on the original mesh coordinates and
  normals from when the stroke started. This helps avoid the mesh blowing
  up, but can still be better. The old behavior is still available as
  "Accumulate" in the UI.
* This requires some more memory usage for the BVH, would like to find a
  way to avoid that.
* Smooth falloff is now the default.
* Spacing is now enabled by default, with a value of 7.5.
* Anchored now stores normals per node to save some memory.
2009-11-06 16:46:35 +00:00
Campbell Barton aa7374e471 - removing the last particle system now exits particle edit mode.
- py UI script used an undeclared variable
2009-11-06 12:27:28 +00:00
Brecht Van Lommel 1e40adddc7 2.5 Modifiers: mesh deform, boolean and decimation work again. 2009-11-05 18:05:55 +00:00
Joshua Leung 06d5d53a24 Bugfixes + Spline IK Tweaks:
* #19819: 'Select' operator for Hooks was crashing when Hooks didn't have any vertices assigned yet

* Default twist resolution mode for curves is now 'Minimise'. This seems to work better for Curve Deforms and other purposes. Can be changed if other ways are better after some more testing.

* Spline IK now has more options for controlling how the x and z axis scaling is determined. There is now a choice between using the radius of the curve, the x+z scaling from the bones, or no scaling (default). This does break old files a bit, but this is to have a more stable base for later.
2009-11-05 10:09:45 +00:00
Brecht Van Lommel 9c1c0152df Sculpt: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r24257:24330 2009-11-04 21:21:30 +00:00
Brecht Van Lommel 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
Campbell Barton 08bbda5005 - Stopping jobs on undo wasnt fixing undo/redo while with render previews as it was supposed to: needed WM_jobs_stop_all rather then WM_jobs_stop because it ends the thread rather then just setting 'stop'.
- gpl header + warning fix
2009-11-04 20:50:09 +00:00
Brecht Van Lommel 55611fb2e6 Sculpt: don't create DM face normals in sculpt mode, only update them if
they exist already, to save memory.
2009-11-04 20:40:15 +00:00
Brecht Van Lommel 636fe90680 Sculpt: updating normals now no longer uses the vert-face map, to save memory.
The weak point now is the thread-safe atomic access to normals from multiple
threads, did not seem to be a bottleneck in my tests but I don't really trust
it to be fast.
2009-11-04 20:36:38 +00:00
Brecht Van Lommel 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
Joshua Leung 20c424730e Spline IK: Rolling Control
Recoded the way that Spline-IK computes the x+z axes of the bones so that flipping artifacts are minimised, and the rotation of individual bones can be used to affect the results of the solution, as per requests from Cessen. 

The bone matrices are now computed normally, and then made to conform to the orientation + scaling imposed by the splines, using the Damped-Track method. Previously, the axes of the bones were calculated without regarding the prior orientation of other bones in the chain, which lead to "z-twists". 

Notes for further investigation:
- There appears to be some shearing that gets introduced now. Unforunately, I can't seem to isolate the cause of this, but I hope it's not going to become too much of a problem in general.
- Maybe inverse corrections for rotation will now be necessary when using transform tools?
2009-11-04 11:30:48 +00:00
Brecht Van Lommel ae37d92dbf Fix #19742: shape key crashes for curve & lattice. 2009-11-04 09:20:31 +00:00
Brecht Van Lommel e9ce90c238 Fix bug #19699: point density texture doesn't save particle system.
Non-ID pointers in DNA can only point to data from own ID block, so
now instead it uses an index into the particle system list, but still
exposed as a pointer through RNA.
2009-11-04 08:44:42 +00:00
Matt Ebb a799b6ee06 Fix for [#19745] displacement modifier is messing up texture coordinates when using an object for texture coordinates
Modifier was resetting object's imat to worldspace during render process, where it is assumed to be in camera space.
2009-11-04 05:31:42 +00:00
Jens Ole Wund(bjornmose) 2a8ef208b2 Soft bodies care for real time 2009-11-04 00:21:25 +00:00
Nicholas Bishop a4e91f8f1a Moved the show brush flag from sculpt to paint, and it now shows/hides the brush as expected. Also fixed some errors in the UI scripts. 2009-11-03 22:50:09 +00:00
Maxime Curioni 9dab53a58a merged changes to revision 24271 2009-11-03 09:15:21 +00:00
Joseph Eagar bacd2a0f26 a bug fix and a compile fix 2009-11-03 05:06:04 +00:00
Jens Ole Wund(bjornmose) 5ff7cbd2f9 fixing minor issues
such as ignoring forward timing rule
2009-11-02 23:42:08 +00:00
Brecht Van Lommel efd6d5f3a7 Sculpt: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r24152:24257 2009-11-02 18:56:56 +00:00
Brecht Van Lommel 3078c80635 Sculpt: Multithreading & PBVH Changes
* Sculpting, normal update and bounding box code is now multithreaded
  using OpenMP.
* Fix a number of update issues: normals on node boundaries, outdated
  bounding boxes, partial redraw, .. . There's probably still a few
  left, but should be better now.
* Clicking once now does a single paint instead of two (was also
  painting on mouse up event).
* Smooth shading now is enabled for the full mesh when the first face
  uses it (so it can be tested at least).

Implementation Notes:

* PBVH search can now be done either using a callback or bt gathering the
  nodes in an array. The latter makes multithreading with OpenMP easier.
* Normals update code is now inside PBVH, was doing it per node before but
  should do all faces first and only then vertices.
* Instead of using search modes + 1 modified flag, now nodes get 4 flags
  to indicate what needs to be updated for them, found that this makes it
  easier for me to understand the code and fix update bugs.
* PBVHNode is now exposed as an abstract type, I think this makes it more
  clear what is happening than having it's data passed as part of callback
  functions.
* Active_verts list was replaced by looping over nodes and the vertices
  inside them. However the grab brush still uses the active_verts system,
  will fix that later.
* Some micro-optimizations, like avoiding a few multiplications/divisions,
  using local variables instead of pointers, or looping over fewer vertices
  to update the bounding boxes.
2009-11-02 18:47:03 +00:00
Campbell Barton 6bfcd5a811 how embarrassing! 2009-11-02 17:25:15 +00:00
Joseph Eagar 7225c078b7 bmesh compile fixes 2009-11-02 14:45:12 +00:00
Joshua Leung 334a80a4f8 Spline IK Experimental Features:
1) "Even Divisions" - This option ignores the length of bones when considering how they should fit along the curve. This is useful for getting a smoother curve fit without having to worry about getting the bone lengths spot on. By default, this is disabled.

2) "Keep Max Length" - This option prevents the bone chain from extending past its natural length when the spline is stretched beyond that length. When the spline length is substatially shorter though, this bones get scaled to zero; making this option possibly useful for doing "growing tips". 
This is essentially a 'no scale' option, although the behaviour when the curve is shorter is really a compromise since the curve cannot be accurately satisfied + left intact without some scaling being applied due to the way this works.

3) "Radius to Thickness" - The average radius of the spline between at the head+tail of each bone determines the x+z scaling of the bone.
2009-11-02 10:04:37 +00:00
Joseph Eagar 71d2ceb691 test commit 2009-11-02 06:31:23 +00:00
Joshua Leung e8b5effdff Spline IK Bugfixes 1:
* Fixed crash when reloading a file with Spline IK and/or Damped Track constraints. The targets for these constraints weren't getting relinked.
* Fixed problems with removing Spline IK making some bones unable to be manipulated.
* Jotted down some comments in the Spline IK code noting places where additional tweaks will be added.
2009-11-01 22:30:47 +00:00
Joshua Leung 3111ebde65 Quick tweak to version patching code for Camera IPO's to fix one of the issues in bugreport 19761.
For now, this just assumes that the 'lens' parameter was animated (assuming a perspective lens was used). Unfortunately, this may not always be correct, but at least there's a path now that can lead to further tweaking.
2009-11-01 11:33:41 +00:00
Joshua Leung 2068eaf1b7 Rigging Goodies: Spline IK Constraint
At last, this commit introduces the Spline IK Constraint to Blender. Spline IK is a constraint that makes n bones follow the shape of a specified curve. 

Simply add a chain of bones, add a curve, add a Spline IK Constraint to the tip bone and set the number of bones in the chain to make it work. Or, try the following test file:
http://download.blender.org/ftp/incoming/250_splineik_spine01.blend

Screenshots of this in action (as proof):
http://download.blender.org/ftp/incoming/b250_splineik_001_before.png
http://download.blender.org/ftp/incoming/b250_splineik_001_after.png

I've implemented this in a similar way to how standard IK solvers are done. However, this code is currently not an IK plugin, since I imagine that it would be useful to be able to combine the 2 types of IK. This can be easily changed though :)

Finally, a few notes on what to expect still:
* Constraint blending currently doesn't affect this. Getting that to work correctly will take a bit more work still.
* Options for not affecting the root joint (to make it easier to attach the chain to a stump or whatever), and non-uniform scaling options have yet to be added. I've marked the places where they can be added though
* Control over the twisting of the chain still needs investigation. 

Have fun!
2009-11-01 11:29:40 +00:00
Tamito Kajiyama cdb84534e5 * Removed a back pointer to a Scene (the "current" scene as in Blender
2.4x) from within Freestyle.  Now Freestyle configuration parameters
are edited without relying on the notion of the current scene.  This
resolved a few related issues as described below:

- A bug in Freestyle configuration management with respect to
multiple scenes was fixed.  Now Freestyle configuration parameters
(e.g., style modules, ridges/valleys, suggestive contours) can be
specified for each render layer of each scene.  Composition of
multiple render layers from different scenes should work as expected.

- A crash after undoing was fixed as well.

* Removed unused external Freestyle functions and global variables
from FRS_freestyle.h and FRS_freestyle.cpp.
2009-11-01 01:11:15 +00:00
Joseph Eagar 2d0d4e7de4 commit before doing some hefty shapekey change, will break compilation 2009-11-01 00:06:53 +00:00
Martin Poirier d5921a274f Proportional edit for object mode.
Limitations:

1) Parents and children of selected objects are excluded from the pool (siblings are ok) Making it work with that would required unparenting and reparenting after transform, that would turn nasty really quick.

2) Does not support Connected (this could be done through parent links, but see 3 first).

3) Parent relationships in affected objects aren't taken into account. When parent and children in the area of effect, remember that the children will also take the motion of the parents (with additive results). This could perhaps be fixed, but it could be nasty.


Other stuff:
New BASE_EDITABLE macro that checks if base is editable (like TESTBASELIB except it doesn't check for selection)
Add scene parameter to TESTBASELIB_BGMODE macro (using it from current scope is nasty)
2009-10-30 17:48:50 +00:00
Joshua Leung ae3cf92491 New Track To Constraint: "Damped"
This is effectively a C-port of Nathan Vegdahl's "No Twist" TrackTo PyConstraint, and has been added as a separate type of constraint to be consistent with the existing constraints (Locked Track, and Track To). 

In general, this works considerably better than the existing "Track To" constraint, since it works by determining the smallest rotation necessary to get the current orientation of the owner to an orientation which would be tracking the target. It is also a much more straightforward approach than the weird old method the old Track To uses.

I've made a few tweaks to the code to deal with the (hopefully rare) cases where the target and the constrained are coincident. These don't appear to cause too much trouble in general.

TODO:
- Probably the naming of the constraints will change, to better convey their purposes. Naming suggestions welcome.
2009-10-30 06:33:40 +00:00
Daniel Genrich 099438f087 Smoke:
* Bugfix for crash when deleting particle system used by Smoke Flow modifier (reported by nudelZ).
2009-10-29 19:26:13 +00:00
Campbell Barton 98527a7106 various small fixes
- undo stops all running jobs (operator redo was crashing with threaded render)
- adding new armatures was crashing if there was no valid view3d
- transform with an active hidden object would crash
2009-10-29 18:49:36 +00:00
Brecht Van Lommel a365ccd20e Sculpt: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r24095:24152 2009-10-29 10:12:07 +00:00
Campbell Barton c508e6198a Python can now run operators with their own context (data context).
The aim of this is to avoid having to set the selection each time before running an operator from python.

At the moment this is set as a python dictionary with string keys and rna values... eg.

C = {}
C["active_object"] = bpy.data.objects['SomeOb']
bpy.ops.object.game_property_new(C)

# ofcourse this works too..
bpy.ops.object.game_property_new({"active_object":ob})

# or...
C = {"main":bpy.data, "scene":bpy.data.scenes[0], "active_object":bpy.data.objects['SomeOb'], "selected_editable_objects":list(bpy.data.objects)}
bpy.ops.object.location_apply(C)
2009-10-29 09:25:11 +00:00
Brecht Van Lommel d6cde96286 Added support for custom RNA properties on Bones, only worked for
PoseChannel previously.
2009-10-28 15:33:45 +00:00
Nicholas Bishop 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
Nicholas Bishop 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
Joshua Leung e76ce369bb Compiler warning fixes for mingw:
* There's an unresolved error in transform_conversions.c which I've flagged in this commit. I'm not quite sure what the exact intentions of that code were (i.e. was the "void_pointer = 1" really intended)
2009-10-27 09:38:15 +00:00
Campbell Barton 1c1659eb28 - Right click menu can open links directly to API reference docs (rna and operators)
- Generated and uploaded api docs - http://www.blender.org/documentation/250PythonDoc
- Added Edit docs menu item & operators as discussed with Mindrones, Brecht, Stani & Letterip @ bconf, needs some web backend. python operator can aparently use xml/rpc to upload docstrings.
- Added operator invoke function - context.manager.invoke_props_popup(self.__operator__, event)
  this calls a popup for invoke by default (which intern calls execute())

- Own recent commit to game framing applied to non-camera views too.
- v3d->persp is deprecated but still used in some places.

- Transforming strips could overlap 1 frame if moving them below frame 0
- Transforming overlapping strips could go into an eternal loop (though overlapping strips should not exist)
2009-10-27 02:54:25 +00:00
Joshua Leung b2f9672078 Animation Bugfixes - Noise Modifier + Graph Editor:
* #19727: Noise modifier does nothing with size 1.0
When the 'Size' and 'Phase' parameters were both 1.0 exactly, and evaltime was an integer (as is the case when doing animation evaluation but not for Graph Editor drawing), the noise calculation function was bailing out. Now, the 'z' component supplied to this function is a decimal value (hardcoded to 0.1 after experimentation) to try and avoid this situation.

* Graph Editor 'Bake' operator was using wrong poll callback, making it useless when trying to use it on a F-Curve that only has modifiers on it (i.e. the main use case of the operator!)
2009-10-26 11:10:04 +00:00
Maxime Curioni a9a4dee0d0 merged changes to revision 24077 2009-10-25 10:43:03 +00:00
Joseph Eagar 8f788c64db merge with trunk/2.5 at r23876
[[Split portion of a mixed commit.]]
2009-10-22 23:22:05 +00:00
Brecht Van Lommel 3ffb695b10 Shape Keys
Blended shape keys can now be displayed & edited in edit mode. This
is much like showing an armature modifier in edit mode, and shape keys
now are a applied as a virtual modifier (for mesh & lattice only, curve
doesn't fit in the stack well due to tilt).

The main thing missing still is being able to switch between the active
shape key in edit mode, that's more complicated.. but the weights of
other shapes can be edited while in edit mode.

One thing to be careful about is that this does automatic crazyspace
correction, which means that if you edit a shape key with a low value,
the actual vertices will be moved to correct for that and actually move
a (potentially much) longer distance.

Also includes some UI tweaks, mainly placing some buttons horizontally
since the vertical list was getting too long.
2009-10-22 16:35:51 +00:00
Campbell Barton d037061b68 after transform if strips overlap, move the frame rather then the channel to fix.
useful while snap isnt working. metastrips still need to be supported.
2009-10-22 14:40:32 +00:00
Brecht Van Lommel 06d57fdae0 Shape Keys
Internal change to not apply the shape keys to the Mesh vertex coordinates,
but rather use it as part of the derivedmesh/displist evaluation. This only
has one practical advantage right now, which is that you can now make a
linked duplicate and pin it's shape key to a different shape than the first
object.

Further, this makes shape keys correctly fit into the modifier stack design,
which will help implement some other features later. Also it means the mesh
vertex coordinates are now really the orco's.
2009-10-22 09:31:07 +00:00
Joshua Leung 359a3d1811 Two fixes:
* RNA Path fixing when renaming data now checks if a path in question cannot be resolved before trying to fix it. This should reduce the number of misindentified cases I hope.

* Silenced compiler warnings for EdgeSlide stuff that mingw was making about unused variables.
2009-10-22 03:12:44 +00:00
Joshua Leung c825a9aeaa Bugfix #19703: Axis Angle wont work
* Transform code was not properly fixed to work with the new way that axis-angle data was stored
* The order of the args for the conversion function when switching rotation representations was wrong, causing problems when switching from quaternion to axis angle (i.e. these occurred for newly created bones).
2009-10-22 02:14:11 +00:00
gsr b3d 5fb73d8b81 Make compiler happy, remove doubtful non init usage. 2009-10-21 17:56:26 +00:00