Commit Graph

131 Commits

Author SHA1 Message Date
a42e548e81 removed some more header files, made the game engine compile with removed header files, added includes to SConstruct files. 2008-01-01 19:20:49 +00:00
58bf29e389 removed blenderdef.h, BIF_*, BDR_* and BSE_* header files (except for BIF_gl.h and BIF_glutil.h) 2008-01-01 18:16:10 +00:00
5307c07832 Badlevel call amount reduced to 21!
(worst was radio module)
2007-12-29 18:44:31 +00:00
c79966be52 Blenkernel for 2.5 project, changes mainly are because of disabling
bad level calls. (which is not finished at all)
2007-12-24 18:38:03 +00:00
84b58f8653 Particles
=========

- The render and realtime button for the particle system modifier
  and the enabled button for particles now work seperate again,
  made a bad design decision to tie them together. Now with only
  the render button and not realtime enabled it renders.
- Fix for bug #7948: particle mode crash while constraining axis.
- Fix for bug #7945: crash loading effector groups from an old file.
- Fix for bug #7942: crash for reactor particles emitting from particles.
2007-12-18 16:55:09 +00:00
f33f7ed62a Bugfix: memory leak with multi-modifier, if the modifier
using the previous coordinates was disabled.
2007-12-17 11:47:24 +00:00
15eb4ebbe4 Mesh Deform Modifiers
=====================

Tweak for somewhat improved results with dynamic binding, and added
a rt value (527) for debugging mdef accuracy.
2007-12-08 18:46:44 +00:00
29d87d64ca Particles
=========

- Texture orco coordinates for particles are now actual orcos instead
  of just the vertex positions, which means they are the same under
  deformations and the same as the ones on the mesh.
- Particle distribution now uses these orcos to get consistent
  distributions independent of deformation.
- This required changing the way orco's are computed for meshes. Now
  instead of generating an orco derivedmesh separately, the derivedmesh
  is generated alongside the regular one and stored in an orco custom
  data layer.
2007-12-05 12:40:54 +00:00
ebfedd20b2 Mesh Deform Modifier
====================

Bugfix for mdef + groups. The mdef modifier treated the cage object as
a sort of parent, which meant that transforming the cage object also
transformed the mesh. However, this behaviour is different from e.g.
armatures, where transforming the armature object has no effect for
the modifier, but instead this transform is taken into account by the
fact that the armature is usually the parent of the mesh.

For groups and duplis, this basically lead to the parent transform
being applied twice. So, now transforming the cage object will have no
effect, except if you make the cage object the parent of the object.
2007-12-04 12:39:27 +00:00
6a9c6674ca Particles
=========

Bugfix for crash with disabling the particles system and saving/loading
files, the way it detected if the mesh had changed could not work correct.
2007-12-02 15:54:54 +00:00
a4c17c7c88 anim.c, buttons_object.c, readfile.c, BKE_blender.h - dupliFace scale option, needed for leaves.
modifier.c, BKE_modifier.h - flag for modifiers to say they use pointcache, also new func modifiers_usesPointCache
renamed //pointcache to //blendcache_blendfilename so blendfiles in the same dir dont conflict, and other to show this dir isnt limited to pointcache only (nodes way want to use this)
wizard_curve2tree.py - better defaults for pretty tree's
2007-11-30 10:38:59 +00:00
e893c9d739 Fix for bug #7846 2007-11-29 22:04:07 +00:00
da3c35db47 Particles
=========

- Bugfix: synchronize modifier enable with particle enable flag to
  prevent crash.
2007-11-27 12:34:59 +00:00
01e2395e05 Particles
=========

- Fix for bug #7840: adding particle system to nurbs, curves crashes.
  Now simply doesn't allow to add a particle system to a non-mesh
  object, the current code does not support it.
- Fix for bug #7834: deleting vertices of an object with a particle
  system crashes. Fixed by disabling particle display for objects in
  editmode.
- Fix for the particle add brush on subsurfed objects.
2007-11-27 11:17:52 +00:00
7da56f4a9b Particles
=========

Merge of the famous particle patch by Janne Karhu, a full rewrite
of the Blender particle system. This includes:

- Emitter, Hair and Reactor particle types.
- Newtonian, Keyed and Boids physics.
- Various particle visualisation and rendering types.
- Vertex group and texture control for various properties.
- Interpolated child particles from parents.
- Hair editing with combing, growing, cutting, .. .
- Explode modifier.
- Harmonic, Magnetic fields, and multiple falloff types.

.. and lots of other things, some more info is here:

http://wiki.blender.org/index.php/BlenderDev/Particles_Rewrite
http://wiki.blender.org/index.php/BlenderDev/Particles_Rewrite_Doc

The new particle system cannot be backwards compatible. Old particle
systems are being converted to the new system, but will require
tweaking to get them looking the same as before.

Point Cache
===========

The new system to replace manual baking, based on automatic caching
on disk. This is currently used by softbodies and the particle system.

See the Cache API section on:
http://wiki.blender.org/index.php/BlenderDev/PhysicsSprint

Documentation
=============

These new features still need good docs for the release logs, help
for this is appreciated.
2007-11-26 22:09:57 +00:00
7accd3a662 Long outstanding feature request: "Multi Modifier"
This allows to mix between the result of 2 modifiers, with both
using the same input state. This is useful for having a mesh deform
and armature deform working together.

However! This functionality could have been presented better...
this is actually Node editor stuff!

Now it works by adding a "MM" button, next to the "overall vgroup"
option. If MM is pressed, the input of this modifier is the same as
the input of the previous modifier.
Only the armature modifier has this option now...
2007-11-16 15:46:59 +00:00
Chris Want
e66f325dd7 ==Mirror Modifier==
Support for using the axes of a different object as the line of mirror
symmetry for a mirror modifier. As a nice consequence, this allows
"clipping" to arbitrary planes in editmode.

A fun example of using a couple of mirror modifiers and an array
modifier to easily make a nice flower type model is here:

http://bebop.cns.ualberta.ca/~cwant/chocolateC05.blend
2007-11-13 06:56:55 +00:00
7f2e43968a Mesh Deform Modifier
====================

Dynamic binding support. This means that the mesh can move _within_
the cage and still deform correct. If the mesh goes out of the cage,
don't expect correct result. Must be enabled with the 'Dynamic'
option, because it is slower and consumes more memory.

This is useful to use e.g. the cage mesh for main deformations and
still have shape keys for facial deformation working.
2007-11-11 22:54:14 +00:00
296a8ca146 Bugfix:
Mesh deform invert vertex group influence didn't work entirely correct.
2007-11-06 14:15:45 +00:00
f66aeb7a74 Bugfix:
Mesh deform modifier crashed when applied to lattices.
2007-11-06 11:25:48 +00:00
e2504c2ff1 Mesh Deform Modifier
====================

Added a button to invert the vertex group influence, to make blending
between mdef and armature deform easier.
2007-11-06 09:44:34 +00:00
1b9d661eca Mesh Deform Modifier
====================

The MeshDeform modifier can deform a mesh with another 'cage' mesh.
It is similar to a lattice modifier, but instead of being restricted
to the regular grid layout of a lattice, the cage mesh can be modeled
to fit the mesh better.

http://www.blender.org/development/current-projects/changes-since-244/modifiers/

Implementation Notes:
- OpenNL has been refactored a bit to allow least squares matrices to
  be built without passing the matrix row by row, but instead with
  random access. MDef doesn't need this actually, but it's using this
  version of OpenNL so I'm just committing it now.
- Mean value weights for polygons have been added to arithb.c, a type
  of barycentric coordinates for polygons with >= 3 vertices. This
  might be useful for other parts of blender too.
2007-11-04 22:00:24 +00:00
Ken Hughes
ff5fd2eb38 Tools
-----
Bugfix #7493:  boolean difference operator was being applied in the wrong
order (difference modifier worked correctly).
2007-10-14 20:58:57 +00:00
df1e3f1c49 Fix for edgesplit crashes reported in bugs 6695 and 7142. The problem, as
found by Riku Palomäki, was that "bridge" vertices (which connect two or more
faces that don't share edges) were not being included in the maximum final
vertex count calculation (used for memory allocation, hence the crashes).

Unfortunately Riku's patch actually stopped bridge vertices from being split
correctly, so I have fixed the problem by adding the maximum number of vertices
that can be generated from bridge vertices to the maximum final vertex count.

Thanks to Riku Palomäki for finding the cause!
2007-09-09 18:03:58 +00:00
c4114780d4 Little code cleanup.
bsystem_time was being called with an extra variable, which was useless. Most of the places that called it, were passing NULL for that variable anyway.

I've also cleaned up that function a bit, but the underlying problems with that part of the code still exist (EVIL GLOBALS that are exported for frame_to_float), for mblur and fields rendering features. That remains for another time.
2007-08-05 09:21:29 +00:00
8742899f5e Armature CrazySpace Improvement
===============================

An improved CrazySpace correction is now used for Armature modifiers that use
vertex groups, and that are the first enabled modifiers in the stack. This is
a a specific case, but also a common one.

http://www.blender.org/development/current-projects/changes-since-244/skinning/

Implementation Notes:

- The quaternion crazyspace correction is still used for modifiers other than
  the armature modifier.
- Modifiers can now provide a deform matrix per vertex to be used for
  crazyspace correction, only the armature modifier implements this now.
2007-07-28 21:04:30 +00:00
3d4a9c1c43 Silenced a few compiler warnings 2007-06-21 11:24:42 +00:00
2bc96c07a7 Bugfix #6864:
Copying Displace modifiers by themselves did not work correctly. The code was incorrectly just copying memory for source modifier to the new copy, causing problems due to the ModifierData struct at the start of the DisplaceModifierData struct (linked list pointers still referring to old stack).
2007-06-20 05:23:31 +00:00
c40997656e Really minor updates related to code I wrote for the Cast modifier:
- modifier.c: moved a check out of a loop, removed an unneeded var, made a couple cosmetic changes.

- DNA_modifier_types.h: added parentheses to cast and smooth modifier defines that used bit-shifting (like 1<<1, etc.).

Note: realized they were needed when I tried to use "flag &= ~MOD_CAST_Z" in modifier.c. Since MOD_CAST_Z is #defined as 1<<3, ~MOD_CAST_Z ended up as ~1<<3 while I wanted ~(1<<3). There are other places in that header file and others in Blender where it'd be safer to add the parentheses...

- Updated the epydoc documentation for the features added by Ben Batt to the cast modifier; fixed small typo in API_intro.py.

BTW, thanks Ben Batt (artificer) for checking, improving with a couple features and committing these modifiers :).
2007-04-30 19:20:43 +00:00
469208a101 Patch #6192 - Wave Modifier Option to move verts along normals
This patch adds an option to the wave modifier to displace along the normals
of the base mesh, rather than in the local Z direction.

Thanks to Michael Fox (mfoxdoggg) for the patch!
2007-04-30 16:49:12 +00:00
0b66fe6a48 Patch #6582 - Weight groups in the wave modifier
This patch adds vertex group functionality to the wave modifier, allowing the
user to specify a vertex group with which to modulate the wave deformation.

Thanks to Michael Fox (mfoxdoggg) for the patch!
2007-04-30 15:20:05 +00:00
22e1a26681 * Small tweak - initialise mirror modifier to use X axis by default,
as it was previously.
2007-04-30 06:51:24 +00:00
125c77bca3 Patch #6113 - Cast & Smooth modifiers
This patch adds two modifiers: Cast and Smooth.

The Cast modifier deforms vertices into a sphere, cylinder or cuboid shape.
The location and orientation of the projection shape can be controlled by a
specified control object.

The Smooth modifier smooths the mesh in a similar way to the Edit mode "Smooth"
button.

Thanks to Willian Padovani Germano (ianwill) for the patch!
2007-04-29 18:13:55 +00:00
d0ac7ef087 Patch #6584 - Texture functionality in the wave modifier
This patch allows the user to use a texture to modulate the wave modifier's
amplitude.

Thanks to Michael Fox (mfoxdoggg) for the patch!
2007-04-29 16:15:50 +00:00
f62f07734f Patch #5629 - Mirror modifier axis' to be toggleable
This patch makes the X, Y and Z axes of the mirror modifier individually
toggleable, so it is possible to mirror in more than one direction with a
single modifier.

Thanks to Juho Vepsäläinen (bebraw) for the patch!

NOTE: BLENDER_SUBVERSION has been incremented to support translation from old
      to new axis specification.
2007-04-29 14:00:30 +00:00
7170f9ec2d == Edgesplit modifier speed improvements ==
Speed improvements to the Edgesplit modifier (changed the data structures
and memory management to avoid using slow GHash functions and large numbers
of small mallocs). In my tests, this makes the modifier approximately twice
as fast.
2007-03-18 14:20:24 +00:00
77cd80e1b5 == Mirror modifier upgrade ==
Upgraded the Mirror modifier to support mirroring of UV coordinates in the
faces created by the modifier.
2007-03-18 13:46:26 +00:00
0b55cac34c == Array modifier upgrade ==
Upgraded the Array modifier to allow the user to specify start and end
cap objects. This makes arrays more flexible and more useful for creating
subsurf cages. The cap objects are added at the start and end of the array,
and will be auto-merged with the rest of the array if the 'Merge' button is
on.

Examples at:
- http://members.optusnet.com.au/~bbatt/tentacle01-endcaps.blend
- http://members.optusnet.com.au/~bbatt/arraytest06.blend
- http://members.optusnet.com.au/~bbatt/arraytest07.blend
2007-03-18 13:26:53 +00:00
1f35fd7929 = Addendum to UVProject's multiple UV handling - "Override Image" button =
* Added an "Override Image" button to the UVProject modifier; this overrides
  faces' currently assigned image with the one given in the modifier panel.
  This provides some of the functionality previously provided by the "Add UVs"
  button - you still need to add a UV layer manually, but you only need to
  change the image in one place.
* Note that the "Override Image" option uses the bit position previously used
  by the "Add UVs" option, so old files which had "Add UVs" enabled will now
  have "Override Image" enabled.
2007-01-29 16:28:11 +00:00
2a47217cba = Updating the UVProject modifier to handle multiple UV layers =
* Removed the "Add UVs" option from the UVProject modifier
* Added a UV layer menu to the UVProject modifier
* Refactored the Displace modifier UV layer menu code to allow the UVProject
  modifier to share it
* Added two CustomData functions to facilitate getting layers by name
2007-01-29 15:10:55 +00:00
893e93bb5f Fix for a segfault in the new Displace modifier UV layer selection code:
If the "UV" texture coordinate option is selected while no UV layers exist,
the UV layer name in the modifier is blank. This is not a problem while no UV
layers exist, but if a UV layer is added the modifier code attempts to use
UV coordinates without handling the missing layer name correctly, leading to a
segfault. This only occurs when the modifier stack is recalculated before a
modifier UI redraw, as the UI redraw updates the layer name.

This fix handles a missing UV layer name by setting it to the active UV layer.
2007-01-27 13:33:56 +00:00
4494b829b0 =Displace modifier fix=
This commit fixes displace modifier to propery support arbitrary uv
layers.  This seemed like a fairly big usability bug,
as displace modifiers would use the active UV layer (and thus could change when
you changed the active layer).  The modifier UI code now uses a menu for browsing
the uv layers, however only the uv layer name is actually stored, so that 
adding/deleting layers won't mess up displace modifiers.  

Whenever a displace modifier has an invalid UV name (for whatever reason) the 
UV name is set to the active layer.  This is checked both in the UI code and 
in the modifier exec code, so all bases are covered. For deleting a layer, this 
required upgrading the layer delete code in the UI to properly preserve the 
active layer, to prevent unwanted behaviour. I hope this is an ok solution.

Brecht, Ben you might want to look over and make sure I didn't break anything.  I don't
think I did, I tested as thouroughly as I could.
2007-01-26 21:06:49 +00:00
d90c686bdb Fix for bug #5439:
UV Project modifies original UV coords.
2007-01-14 15:52:55 +00:00
397b09e477 Bugfix #5476
Lattice deforming a Particle system only supported regular parent relation-
ship, not modifiers.
2006-12-23 11:56:22 +00:00
80ee52e444 Multiple UV and vertex color layers: (still work in progress)
These can be created and deleted in the Mesh panel in the same place as
before. There is always one active UV and vertex color layer, that is
edited and displayed.

Important things to do:
- Render engine, material support
- Multires and NMesh now lose non active layers

Also CustomData changes to support muliple layers of the same type, and
changes to layer allocation, updated documentation is here:
http://mediawiki.blender.org/index.php/BlenderDev/BlenderArchitecture/CustomData
2006-12-12 21:29:09 +00:00
4f8079d49c Modifier Stack: Limit calculation to required data.
This commit upgrades the modifier stack to only calculate the data which is
needed, either by modifiers further down the stack or by other functions at
the end of the stack (e.g. drawing functions).

This speeds up modifier stack recalculation, especially where vertex
groups and UV coordinates are concerned. For example, a mesh with an Armature
modifier followed by a Subsurf modifier would previously have required the
Subsurf modifier to interpolate all the vertex groups in the mesh, slowing
down modifier calculations considerably. With this update, vertex group data
is not propagated beyond the Armature modifier, so calculations are faster.

Note that this depends on the order of modifiers in the stack. If the Armature
and Subsurf modifiers were swapped in the above example, the Subsurf modifier
would have to interpolate vertex groups, as they are needed by the Armature
modifier.
2006-12-05 17:42:03 +00:00
35f3682f7c Fix for bug #5325 - curve deform tool doesn't work correctly
This bug was caused by broken's recent patch to make the Curve modifier
determine its axis from the modifier panel, rather than the object's track
axis. In the case where a Curve modifier is applied by parenting the object
to the curve, the curve axis needs to be copied from the object's track axis
in modifiers_getVirtualModifierList(). This commit adds the necessary copy.
2006-11-29 13:52:59 +00:00
4d1425f510 Bugfix #5291
Array Modifier type "path length" didn't force a path calculation on load.
Note that this is still improper handling in Blender... an exception that
has to move to the depsgraph.
2006-11-26 14:04:25 +00:00
bb7ad80269 Upgrades to the UVProject modifier:
- New perspective projection capability. If a camera is used as the
   projection object, the modifier detects whether to do perspective or
   orthographic projection based on the camera type. If any other object
   type is used as the projection object, orthographic projection is used.
 - Orthographic projection actually works properly now.
 - The projected UVs are scaled and offset so that the image is centred in
   the projecting camera's view.
 - AspX and AspY inputs have been added to control the aspect ratio of the
   projected UVs.

Also:
 - I have added the Mat4MulVec3Project() function to BLI_arithb.h; this
   function converts a 3-dimensional vector to homogeneous coordinates
   (4-dimensional, with the 4th dimension set to 1), multiplies it with the
   given matrix, then projects it back to 3 dimensions by dividing through
   with the 4th dimension. This is useful when using projection matrices.
2006-11-22 15:09:41 +00:00
53eaa3b67a New displacement direction for Displace modifier: "RGB -> XYZ". This means
that vertices will be individually displaced in the X, Y and Z directions
by the RGB components of the texture (R affects X, G affects Y, B affects Z).
This can be used along with e.g. the colour Clouds texture for a jitter effect.
2006-11-20 14:23:41 +00:00