Commit Graph

958 Commits

Author SHA1 Message Date
eb03a578a3 New feature: Face Duplicators. Like vertex-duplicator, but now on a face
center, rotated according to face edges, and optionally with scale of the
face.

http://www.blender3d.org/cms/Face_Duplicator.828.0.html

Also: bugfix in undo/redo for relinking data to the UI. It was not checking
for Library data, accidentally linking non-library data with same names.
2006-11-29 08:57:32 +00:00
84c391b408 Slight change in how subversion and minversion is loaded.
It wasn't working endian compatible...
2006-11-27 18:58:33 +00:00
cdced41fb9 Bugfix #5313
3D Window "Transform properties" was using bad globals for buttons, this
caused things not work with multiple 3d windows open, and (in editmode)
set one panel to "Local" and the other to "Global".

Also:
- added undo push for moving bone to a layer
- protected Ikey for posemode to not show a menu without selection
2006-11-27 15:23:21 +00:00
0cd62a9298 NEW! Subversion control and test for future Blender binaries.
Next to the release code, a subversion number is written in the file
now. This is in the chunk GLOB, which is now in beginning of file.

Subversions can be used to have finer control over do_versions(), so you
don't have to wait for a release to patch stuff nicely. We can also
increase these subversions regularly to denote important changes.
If a subversion is not 0, it's being printed in the header, so a user can
also verify the state. (We might even tag cvs for it?).

Next to this, a minimum version and subversion number are written too.
From now on, if you change files in a way a past binary cannot read this
nicely anymore, you should set these minima to the current version.
This was especially added for the new mesh layers, which will not work
for older binaries once we make 2.43.
2006-11-26 21:17:15 +00:00
48a640f375 Small tweak in append/link Objects: the scriptlinks in Object then will
also invoke reading the python script.
2006-11-25 16:24:52 +00:00
604b423032 - Library linking feature: global undo/redo now doesn't read the linked
library .blend files anymore, making it a load faster to use.

- Fixed ancient annoyance; samples were not properly freed, giving a lot
  "Error Totblock" when using sound.
  This fix also involves removing an ancient NaN hack, which treated the
  samples as fake Library data in the Main database.
  But still, the Blender Sound and Sample code is horrible... :/
2006-11-25 13:07:28 +00:00
b389706042 Very rare error in file reading, sequence pointer magic could fail.
Found thanks to a solaris file.
2006-11-22 19:59:17 +00:00
Chris Want
0b0c8c9244 =Texture Plugins=
Added a callback instance_init() so that any particular instance of a
texture plugin can initialize data. Updated the clouds2 and tile example
plugins to have a (dummy) call back.
2006-11-22 15:53:46 +00:00
4cf4b4d0d2 Fix for loading UVs in linked meshes. 2006-11-21 16:54:00 +00:00
9f9d99ef8d This adds temporary upward compatibility for TFaces, until the 2.43 release,
by writing the old struct also.
2006-11-21 14:46:17 +00:00
e435fbc3c5 Added custom vertex/edge/face data for meshes:
All data layers, including MVert/MEdge/MFace, are now managed as custom
data layers. The pointers like Mesh.mvert, Mesh.dvert or Mesh.mcol are
still used of course, but allocating, copying or freeing these arrays
should be done through the CustomData API.

Work in progress documentation on this is here:
http://mediawiki.blender.org/index.php/BlenderDev/BlenderArchitecture/CustomData


Replaced TFace by MTFace:

This is the same struct, except that it does not contain color, that now
always stays separated in MCol. This was not a good design decision to
begin with, and it is needed for adding multiple color layers later. Note
that this does mean older Blender versions will not be able to read UV
coordinates from the next release, due to an SDNA limitation.


Removed DispListMesh:

This now fully replaced by DerivedMesh. To provide access to arrays of
vertices, edges and faces, like DispListMesh does. The semantics of the
DerivedMesh.getVertArray() and similar functions were changed to return
a pointer to an array if one exists, or otherwise allocate a temporary
one. On releasing the DerivedMesh, this temporary array will be removed
automatically.


Removed ssDM and meshDM DerivedMesh backends:

The ssDM backend was for DispListMesh, so that became obsolete automatically.
The meshDM backend was replaced by the custom data backend, that now figures
out which layers need to be modified, and only duplicates those.


This changes code in many places, and overall removes 2514 lines of code.
So, there's a good chance this might break some stuff, although I've been
testing it for a few days now. The good news is, adding multiple color and
uv layers should now become easy.
2006-11-20 04:28:02 +00:00
047a71c32c Compositor: now the preview images in nodes are restored between undo/redo
steps, making it all look much nicer!
To keep this interactive, no re-calculate event is generated. A user has
to force that by editing nodes or click on a socket.
2006-11-18 13:25:42 +00:00
e348456b3d =ID Properties Compile Fix=
The sanity check I added for rare 64-bit cases where sizeof(int)==8
wasn't working so well; part of the code wasn't even committed
(the function BLO_test_64bits I wrote specifically) and since 64-bit
systems like those are so rare and since the code seemed kindof bad,
I just cut it all out.
2006-11-18 02:18:40 +00:00
4c5fcf136b =ID Properties Update=
This commit adds file reading/writing of ID properties to all ID types, 
and also adds python access for NMesh, Mesh, Scene and Image.  Note 
that the file reading code might need some more work for certain 
future/planned features to save right.  Also I updated a few comments in idprop.c.
2006-11-17 06:14:15 +00:00
8768707610 =ID Properties=
This commit adds supports for per-ID properties to blender.
See http://mediawiki.blender.org/index.php/BlenderDev/ID_Property
for more information on how it all works.

ID properties are accesable by python; but note that 
bindings have only been added to Object and Material thus
far.  However adding more bindings is easy and I plan
on adding several more hopefully within an hour of this inital 
commit.

A generic UI panel is also planned, that will go wherever its
needed; for example in the material buttons, editing buttons, etc.
I'll likely submit the initial code for that as a patch, though,
so matt and ton and others can go over it and make sure it's
all good. :)

VERY important, if you intend to use ID properties please
go to http://mediawiki.blender.org/index.php/BlenderDev/PropertyStandards
and start writing the appropriate standards for it.
2006-11-17 04:46:48 +00:00
9ab91ab361 New dupli-group feature: you can now set in Groups the layers you want
a group to show when used for duplicators. Is in the Object Buttons,
"Object and Links" panel. Note that the duplicator layer itself still
defines still visiblitily of entire group.
2006-11-14 17:16:15 +00:00
b39938dc75 New rule for append/reference Armature objects: the custom shapes get
automatically loaded as well.
2006-11-14 16:29:03 +00:00
c0e9d77188 Next level of Proxy support for animation: Proxy for duplicated groups.
Notes:
- Only referenced groups (from other files)
- Only 1 group (no more duplicates using same group yet)
- Only Proxy working well for Armature or Empty

Is going to be reviewed in Plumiferos team; but target is that this will
solve a major animation pipeline bottleneck :)

Usage; select group, alt+ctrl+p, pick an object you want to proxify.
2006-11-14 15:27:43 +00:00
feb210f08e Experimental feature, especially for the animation department:
THE OBJECT PROXY

Or simple said; local control of referenced data from libraries.
Having library files with references is a very common studio setup, and
Blender did do quite well in that area. Were it not that for character
setups it was impossible to use still.

This commit will enable a full rig+character to remain in the library,
and still have - under strict control - local access for animation edits.

Full log:
http://www.blender3d.org/cms/Proxy_Objects.824.0.html
2006-11-11 16:45:17 +00:00
9e717b59cb softbody review
1. UI review -> disabeling options when not available .. giving hints why ( even tried to give usefull tooltips )
1.1 give some more user control to the solving process  (mins,maxs).. optional feedback on the console

2. replacing ugly object level 'sumohandle' with SB (private runtime) level/pointer 'scratch'
which holds runtime data like cached collider data and more .. and it's thread save this way :)

3.related no 2.  write a 'private' history of collision objects to ease the 'fast' collider tunneling syndrome'

4. some <clean> optimizations, 3-BSP for self collision,  general AABB checking before ever going to collision details

5. some <dirty>  ( in the sense of do some inacurate physics noone ever will see ) little tricks to make things faster .. ..fuzzy collision situation bypass .. forward collision resolution
2006-11-10 23:09:16 +00:00
9a14548104 Old feature request: undo system now restores images without reloading.
Was surprisingly easy to add, compiant with file reading and undo code.

Currently only the Image->ibuf gets restored, and its opengl binding, so
for realtime texture it works nicely. Also texture images are not freed
inbetween undo steps

Notes:
- Painting textures will just keep the painted image, there's no undo
  yet for that
- If this works satisfying, I'll extend it to compositing previews

TEST IT WELL PLEASE! :)
2006-11-10 10:17:04 +00:00
7c6ffecfff Fixed bug #5174, Crash on sculpt mode undo
The fix adds support for storing edge/face/partial visiblity data to the sculpt
mode undo data. (This may also be useful for multires.)
2006-11-10 01:57:06 +00:00
f645e51256 Two minor code cleanups.
* Removed un-needed cases for limit loc/rot/scale constraints from expand_constraints, which caused a few compiler warnings

* Removed an odd character in one of the comments for constraints. (Hopefully there wasn't any specific reason why it had to be there)
2006-11-09 09:01:20 +00:00
0de4c3c0eb Long wanted feature for animators: option to lock a view to always show
a specific object, so you can see long walkcycles or actions well.

Option is per 3d window, in "View Properties" panel. It also can optional
lock a view to a single bone even!

Temporal movie for fun:
http://www.blender.org/bf/0001_0060.avi
2006-11-07 15:47:10 +00:00
f34bf8a0cd Patch #4980, by Joshua Leung (aligorith)
This enables finding data in the Outliner.
Usage: Fkey (partial strings), CTRL+Fkey (partial strings, case sensitive).
SHIFT+Fkey to repeat a search, this cycles around.

Extra changes:
- button popups to enter strings now starts activated.
- outliner either shows for Armature the Bones, or Posechannels or
  Editbones,  depending the mode. Was needed to make searches meaningful.

Although Joshua did very good work on the key functions, there were a couple
of issues in his code, and problems in Outliner code, that didn't make it
all work nicely. So, this is quite a revised patch. :)

Full review log can be found in the patch tracker.
2006-11-07 14:25:58 +00:00
b48c514db8 Added an option in the IK constraint to disable stretching, useful
in rigs with layered IK constraints. Also removed the tolerance
setting, this value wasn't used in the solver anymore.
2006-11-06 23:51:37 +00:00
8e97a2955b Merged Google Summer of Code sculptmode/multires/retopo tools.
From the tracker:
https://projects.blender.org/tracker/index.php?func=detail&aid=5018&group_id=9&atid=127
2006-11-06 01:08:26 +00:00
2055818c99 Bugfix #5027
- Removing Shape Keys didn't free drivers
- The sample file had Shapekeys in a weird order (should be sorted on shape
  index number). How this could have happened is unknown, probably a script.
  For the time being added a version patch to check on this after reading
  a file. If wrong ordered, it gives warning prints.
2006-11-03 12:23:04 +00:00
0b314ac657 Bugfix, plumiferos report;
Using the Library Append "at cursor" option went wrong;
- it moved all selected objects to cursor position
- it didn't even check what was imported...

Both issues are fixed now.
2006-11-03 10:14:27 +00:00
402287940a Bugfix #5022
If you rename a Constraint, the used Constraint Channels (Ipo curves) were
not renamed as well, making animations not work anymore.

Now renaming works up to this level:
- own object constraints
- own object Action constraints

This is identical to Bone renaming. Note that other actions (like in NLA)
are not corrected for renaming. Have to look at ways to provide that once.
2006-11-02 10:13:01 +00:00
35d6c6e695 Two wonderful new NLA & Armature editing features!
- FORWARD CYCLING & MATCHING

Up to no now, adding multiple actions in NLA with walkcycles required to
animate them standing still, as if walking on a conveyor belt. The stride
option then makes the object itself move forward, trying to keep the foot
stuck on the floor (with poor results!).
This option now allows to make walk cycles moving forward. By
indicating a reference Offset Bone, the NLA system will use that bone to
detect the correct offset for the Armature Pose to make it seamlessly going
forward.

Best of all, this option works as for cyclic Action Strips as well as for
individual Action Strips. Note that for individual strips, you have to set
the strip on "Hold". (Might become automatic detected later).

Here's an example edit image for NLA:
http://www.blender.org/bf/nla_match-cycle.jpg
And the animation for it:
http://download.blender.org/demo/test/2.43/0001_0150_match.avi
Blender file:
http://download.blender.org/demo/test/2.43/mancandy_matching.blend

Using this kind of cycling works pretty straightforward, and is a lot
easier to setup than Stride Bones.

To be further tested:
- Blending cycles
- matching rotation for the bones as well.

- ACTION MODIFIERS (motion deformors)

The above option was actually required for this feature. Typically walk
cycles are constructed with certain Bones to be the handles, controlling
for example the torso or feet.
An Action Modifier allows you to use a Curve Path to deform the motion of
these controlling bones. This uses the existing Curve Deformation option.
Modifiers can be added per Action Strip, each controlling a channel (bone)
by choice, and even allows to layer multiple modifiers on top of each other
(several paths deforming motion). This option is using the dependency graph,
so editing the Curve will give realtime changes in the Armature.

The previous walkcycle, controlled by two curves:
http://download.blender.org/demo/test/2.43/0001_0150_deform.avi
Blender file:
http://download.blender.org/demo/test/2.43/mancandy_actiondeform.blend

Action Modifiers can be added in the NLA Properties Panel. Per Modifier you
have to indicate the channel and a Curve Object. You can copy modifiers from
one strip to another using CTRL+C (only copies to active Object strips).

Setting up a correct Curve Path has to be carefully done:
- Use SHIFT+A "Curve Path" in top view, or ensure the path is not rotated.
- make sure the center point of the Curve Object is at the center of the
  Armature (or above)
- move the first point of the curve to the center point as well.
- check if the path starts from this first point, you can change it using
  (in Curve EditMode) the option Wkey -> "Switch Direction"
- Make sure alignment uses the correct axis; if the Armature walks into
  the negative Y direction, you have to set in Object Buttons, "Anim settings"
  Panel, the correct Track option. (Note; option will probably move to the
  Modifier later).

This is a good reason to make such paths automatic (on a command). Is on the
todo list.

Also note this:
- the Curve Path extends in beginning and ending, that's (for now) the default,
  and allows to use multiple paths. Make sure paths begin and end horizontal.
- Moving the Curve in Object Mode will change the "mapping" (as if the landscape
  a character walks over moves). Moving the Curve in Edit Mode will change the
  actual position of the deformation.
- Speed (Ipos) on paths is not supported yet, will be done.
- The Curve "Stretch" deform option doesn't work.
- Modifiers are executed *after* all actions in NLA are evaluated, there's no
  support yet for blending multiple strips with Modifiers.
- This doesn't work yet for time-mapping...

This commit is mostly for review by character animators... some details or
working methods might change.
This feature can also be used for other modifiers, such as noise (Perlin) or
the mythical "Oomph" (frequency control) and of course Python.

Special thanks to Bassam & Matt for research & design help. Have fun!
2006-10-31 15:51:57 +00:00
ddbfb04642 * Changed the Curve Modifier to have it's own X/Y/Z axis deform direction
settings, rather than using the object's TrackX/Y/Z/etc buttons.

 This is good for two reasons: a) having the settings over in the object buttons
 before was terribly unintuitive and hidden, now it's more visible how to
 control the deformation, and b) now if you have more than one curve modifier,
 they can have their own settings, instead of being forced to use the object
 level data.
2006-10-28 16:48:56 +00:00
2556254e92 == 3D View ==
Customizable Grid Subdivisions

This commit adds a numbut to the View Properties panel that lets you specify how the grid is subdivided.

This affects snapping in translations, obviously.

Default: 10 (behavior doesn't change)

That means people still stuck in feet and inches (shudders) can set it to 12 and have 1 unit = 1 foot.

That also means you can work in "heads" when doing body proportions or whatnot (don't think of it as being limite to "CAD" uses).
2006-10-25 23:34:24 +00:00
e868f223dc New shadow feature: Irregular Shadow Buffers
Full log:
http://www.blender3d.org/cms/Irregular_Shadow_Buffe.785.0.html

In short: this is a shadow buffer approach that always results in crispy
shadows, independent of lamp buffer size or zoom level. This shadow buffer
system also supports transparent shadow.

This is part of work on refreshing Shadow Buffers in Blender. You now can
choose of two types (Classical, Irregular). More types will follow. Also
quality issues for Classical shadow buffers are going to be reviewed,
especially to solve the lousy Biasing.

For the CVS log record; it is based on articles:
Gregory Johnson et al, University of Texas, Austin. (Regular grid method).
Timo Aila and Samuli Laine, Helsinki University of Technology. (BSP method).
2006-10-14 10:21:19 +00:00
3bd71e9ad5 added the option to Blender.Library to 'link' data for malefico 2006-10-05 15:24:15 +00:00
815f115338 * Previous backwards compat commit to reset curve radius values to 1.0 on old
file was also happening on files made with current CVS (until next release).
Added a simple check to make it only happen on old files where there was no
radius before.
2006-10-03 00:16:22 +00:00
71284959d5 * Added backwards compat check for curve radius value, so old files act properly. 2006-09-25 03:22:54 +00:00
3c8fe64910 This commit adds backwards compatability for the new floor constraint
feature. Old files that had "sticky" set would not show "sticky" under
the new system. Not that anyone ever actually used "sticky".

Also, these commits only add support for rotated external target objects,
not target bones inside the same armature.
2006-09-22 16:42:39 +00:00
02baf30e55 New feature: imporant missing option for use of Libraries: access to to the
file path where library is read from.

In Outliner, choose new view mode "Libraries". A ctrl+click on the library
name then allows to change the file name or path. Note that when you change
the file name, nothing is being re-read or re-linked. Only after saving the
.blend file and reading it back the new library is used.

This feature allows to cleanup library usage. You can make files relative,
or reorganize a project. Just keep in mind that you cannot use this feature
to fix .blend files that link to non-existing other files. That because the
lost data is actually not read at all, so cannot be saved either.

Currently, library errors are only printed in the console... quite
important to keep track of when using Libraries.

Implementation note: this Outliner view mode can become expanded to a full
"Database view", showing something similar as SHIFT+F4 databrowse does now.
2006-09-06 09:51:30 +00:00
4603f452c2 Animation department feature request: support for vertex groups in Lattices
In a quick glance: (temp image)
http://www.blender.org/bf/rt.png

Main reason is that Lattices are useful a lot for Armature deformation.
Lattices just provide much more precise and interesting control. However,
with only bone envelopes it's very hard to use.

Working with Lattice vertex groups is nearly identical to Mesh:
- on CTRL+P 'make parent' you can choose the deform option now
- In editmode, the buttons to control vertex groups are available
- In outliner you can select vertexgroups too
- Deforming Lattices with Armatures has all options as for Mesh now.

Note:
- No WeightPaint has been added yet. To compensate, the editmode
  drawing for a Lattice with vertex group shows weight values for the active
  vertex group.
- Lattice editmode doesn't undo/redo weight editing yet.
- Softbody for Lattice still uses own vertex weights

Implementation notes:
- derivedmesh weight_to_rgb() is now exported to drawobject.c
- been doing cleanups in code (order of includes, var declarations, etc)
- weightpaint button handling now is generic

I've checked on Brecht's proposal for Custom Element data;
http://mediawiki.blender.org/index.php/BlenderDev/CustomElementData
It could have been used, but that would mean the existing code for
vertexgroup handling and armature deform couldn't be re-used. I guess this
is really a later todo.
2006-09-03 12:16:14 +00:00
433f6c7043 Integration of the Google Summer of Code Modifier Stack Upgrade project. The
main features are:
* Modifiers can now be in any order in the modifier stack
* DerivedMesh now has a standard framework for custom element data to be passed
  through the stack with mesh data (being copied and interpolated as
  appropriate), so modifiers can access whatever data they need
* The modifier stack code has been refactored and a number of bugs have been
  removed
* The EdgeSplit modifier has been added:
  http://mediawiki.blender.org/index.php/BlenderDev/EdgeSplitModifier
* The DerivedMesh modifier has been added:
  http://mediawiki.blender.org/index.php/BlenderDev/DisplaceModifier
* The UVProject modifier has been added:
  http://mediawiki.blender.org/index.php/BlenderDev/UVProjectModifier

For more info, see:
http://mediawiki.blender.org/index.php/User:Artificer/ModifierStackUpgrade
(currently undergoing reorganisation)
2006-08-28 01:12:36 +00:00
e341a4e1f4 Patch: Constraints to Limit Transforms (#4662) by Joshua Leung (aligorith)
This adds three new constraints to limit the range of location, rotation and scaling values.
2006-08-13 14:18:15 +00:00
4718a22cd0 Bugfix #4882
New toolsettings variable "select_thresh" was not initialized. This caused
the option "similar normals" to not work really (uses a dot product).

It now is initialized (scene.c) as well as corrected in do_versions for
saved files.
2006-08-13 11:11:22 +00:00
e168d67b32 ImagePaint Refactoring:
- ImagePaint now uses ImBuf directly, and the rect blending functions
  were moved into the imbuf module.
- The brush spacing, timing and sampling was abstracted into brush.c, for
  later reuse in other paint modes.

Float ImagePaint support.

Textured Brushes:
- Only the first texture channel is used now.
- Options for size and offset should be added, but need to find some space
  in the panel, or add a second one ..
2006-07-31 15:53:03 +00:00
4ee3515bf1 Brush Datablock:
- Added a new Brush datablock, only used by image paint, but intended
  to be used in texture paint, vertex paint, weight paint and sculpt
  mode also.
- Being a datablock, these brushes can be saved, appended and linked.
  They have a fake user by default, to make sure they are saved even if
  not selected.

Image Painting:

- Replaced the img module with C code in imagepaint.c
- Airbrush is no longer a separate tool, but rather an option that can
  be used for soften, smear and clone also.
- Blend modes mix, add, subtract, multiply, darken and lighten have been
  added, code taken directly from vertex paint.

Note to project files maintainers:

- The img module was removed from SCons and Makefiles, and this should
  be done in other build systems also. I'll wait to remove the module
  from cvs, to not break compilation.
2006-07-26 22:29:23 +00:00
464f3bd966 Three more valgrind discoveries:
- readfile.c, version patch for new toolsettings used a malloc, using
  unitialized variables
- despgraph, another malloc changed to calloc
- timer code for render ESC: unitialized variable in struct
2006-07-13 11:36:26 +00:00
a156ecb7f5 Two fixes, venomgfx Fraka bird test!
- AO "Use Distances" can not use 'sky texture' for colors, that bug was
  fixed in UI (prevent settings to combine), but better also gets fixed
  on reading files.

- Backbuf render, when not existed, didn't initialize backdrop color to 0.
2006-07-06 21:18:06 +00:00
2ca81ba8cc Bug from own testing (yeah, writing logs means finding bugs!)
The Curve widget flag 'premultiply' should be cleared on read. This could
lead to an occasional crash...
2006-07-05 20:30:44 +00:00
b6984214f0 Fix #4601
Buttons window "align" is being set to default on files read older than
2.30. This is giving very bad panel layouts now.
2006-07-04 11:06:00 +00:00
e4354bbf12 Bugfix #4569
Global undo didn't restore correctly the camera in unlocked 3d views.
("Lock" icon option next to layer buttons)
2006-07-02 12:03:07 +00:00