Commit Graph

494 Commits

Author SHA1 Message Date
Ton Roosendaal
03c255ac1d New: Armature editmode/posemode now react correctly to HOME or Numpad-DOT
for viewing all or only selection nicely centered.

Fix: Poses without NLA or Action were reset to restposition on file read
or exit editmode.
2005-07-11 17:12:33 +00:00
Daniel Dunbar
7d80ffa538 - added bglVertex3f call (to match bglVertex3fv) 2005-07-11 17:06:03 +00:00
Ton Roosendaal
a17e21dfab SLightly altered rule for the new IpoCurve option "Keep horizontal on
extrema". It now also keeps auto-handles horizontal when the Y coordinate
is exactly identical.

And; made this option default on inserting new curve/keys.
2005-07-11 12:31:15 +00:00
Ton Roosendaal
8301d7ad00 Bug fix #2762
Quite harmless, but was lazy code...
When you choosed "Vertex Color Paint" material, the init_render_material()
also set the "Vertex color Light" option, because that flag was checked on
during render to detect vertex colors.
Now it has proper checks in render code.
2005-07-11 11:01:06 +00:00
Ton Roosendaal
9cb84a662e Bug fix #2763
Depgraph missed proper relation from one armature bone to another armature
bone. Interesting rig setup for facial animation by Malefico! :)
http://projects.blender.org/tracker/index.php?func=detail&aid=2763&group_id=9&atid=125
2005-07-11 09:46:05 +00:00
Ton Roosendaal
11a8714e54 Cleaned up the old call to do_all_actions(). It only is supposed to do
a single object, but was still called outside of that scope. Caused crashes
for example when editing Ipo curves of action keys.

editaction.c and editnla.c still need to be tackled...
2005-07-11 08:04:34 +00:00
Ton Roosendaal
31f50d9247 For long on the wanna-have list;
Ipocurves with "Auto" handles now have option to remain horizontal on the
extrema (tops & valleys). Use ALT+H to set this per selected curve.
Note this is a per-curve feature, not per-handle.

If it works satisfying I can check on making this the default new added
curve.
2005-07-10 12:50:14 +00:00
Ton Roosendaal
a7cd780ebf Armature;
- IK constraint now uses Ipo from action again
- Bug in last commit; the object action was ignored... did NLA always

Editmesh:

- when there are edges in mesh, it now only copies selection in edges
  when you have selectmode edge
2005-07-09 20:40:44 +00:00
Ton Roosendaal
d7bf5c0583 New! Pose-constraint Ipos now are integrated in NLA. ALso cleaned up the
weird disabled code that was hanging out there for ages.

Also cleaned up NLA blending itself, it was copying far too much data
around. Should be three times faster or so... need good test!

And restored Action Baking.
2005-07-09 19:37:38 +00:00
Ton Roosendaal
30f89a6db7 Armature drawing fixes;
- Dashed line to parent bone was drawn to wrong bone in Rest Position
- Dashed line had selection color of parent, not of own bone.
2005-07-09 14:08:09 +00:00
Ton Roosendaal
c8f195d00c - Fix for action constraints; for Bone targets (target is input bone
actually) only the relative rotation is used.

- Added scale=1.0 initializer in saving files, this fixes a little  bit
  better upward compatibility

- Still there are cases where bones flip 180 degrees when you read it with
  older Blenders... not sure what it is caused by
2005-07-09 13:41:01 +00:00
Ton Roosendaal
895c9a55d8 Two small fixes;
- ALT+R clear rotation on PoseMode didn't work when an Action was assigned
- 'Delete object' didn't set object pointers to NULL for Armature/Pose
  constraints (old bug)
2005-07-07 07:03:35 +00:00
Martin Poirier
22a18ecdb8 3D view orbit option: Around Active
This fixes the active object in place when orbiting the view.
	Choppy 15fps demo can be seen there: http://www.elysiun.com/~theeth/bf/around_active.html


Image Memory Grabage Collection
	This adds memory handling to the image code. An image is tagged each time it is used.
	During a collection cycle (frequency of cycles is user defined), if an image is older
	than a user defined limit, its buffer gets deallocated. This also applies to gl memory buffers.
	Images that are loading in GL memory needs to go through two time outs before being fully deallocated: the first time out deallocated the gl memorry, the second the buffer in ram.

	Notes:
		Image buffer loaded from python gets tagged as permanent upon load. That tag is removed when python stops using the image.
		I might have missed some tagging spots, especially in the rendering pipeline. Someone with more knowledge about this code should check to be careful.
		Tagging is done on every access, for rendering, this will probably be a performance hit. A scheme should be developped to only tag when the rendering is completed.
		Collecting is called in draw_object, most likely not the best place to do it.
		Safe from undo, since using undo deallocates memory anyway (like when loading a blend file with one currently opened)


Userpref DNA changes:
	I've changed a couple of flagging variables from short to int. Some because they needed more space, others to keep SDNA happy.


Info window changes:
	I've grouped a couple of buttons in aligned blocks and changed the color of mutually exclusive options to make them clearer.
	Matt didn't do any changes on that in tuhopuu, so hopefully I'm not stepping on anyone's feet with this.


Also changed double constants into floats with f in a couple of places (mostly space.c) to make compiler happier.
2005-07-06 00:33:41 +00:00
Ton Roosendaal
4fb314b809 Action constraint works again. Needs revision though... do that with
testfiles i get from Bassam. :)

Further removed old code that was ifdeffed hanging around still.
2005-07-04 20:09:32 +00:00
Ton Roosendaal
28a1e8277b Result of 2 weeks of quiet coding work in Greece :)
Aim was to get a total refresh of the animation system. This
is needed because;
- we need to upgrade it with 21st century features
- current code is spaghetti/hack combo, and hides good design
- it should become lag-free with using dependency graphs

A full log, with complete code API/structure/design explanation
will follow, that's a load of work... so here below the list with
hot changes;

- The entire object update system (matrices, geometry) is now
  centralized. Calls to where_is_object and makeDispList are
  forbidden, instead we tag objects 'changed' and let the
  depgraph code sort it out
- Removed all old "Ika" code
- Depgraph is aware of all relationships, including meta balls,
  constraints, bevelcurve, and so on.
- Made depgraph aware of relation types and layers, to do smart
  flushing of 'changed' events. Nothing gets calculated too often!
- Transform uses depgraph to detect changes
- On frame-advance, depgraph flushes animated changes

Armatures;

Almost all armature related code has been fully built from scratch.
It now reveils the original design much better, with a very clean
implementation, lag free without even calculating each Bone more than
once. Result is quite a speedup yes!

Important to note is;

1) Armature is data containing the 'rest position'
2) Pose is the changes of rest position, and always on object level.
   That way more Objects can use same Pose. Also constraints are in Pose
3) Actions only contain the Ipos to change values in Poses.

- Bones draw unrotated now
- Drawing bones speedup enormously (10-20 times)
- Bone selecting in EditMode, selection state is saved for PoseMode,
  and vice-versa
- Undo in editmode
- Bone renaming does vertexgroups, constraints, posechannels, actions,
  for all users of Armature in entire file
- Added Bone renaming in NKey panel
- Nkey PoseMode shows eulers now
- EditMode and PoseMode now have 'active' bone too (last clicked)
- Parenting in EditMode' CTRL+P, ALT+P, with nice options!
- Pose is added in Outliner now, with showing that constraints are in
  the Pose, not Armature
- Disconnected IK solving from constraints. It's a separate phase now,
  on top of the full Pose calculations
- Pose itself has a dependency graph too, so evaluation order is lag free.

TODO NOW;

- Rotating in Posemode has incorrect inverse transform (Martin will fix)
- Python Bone/Armature/Pose API disabled... needs full recode too
  (wait for my doc!)
- Game engine will need upgrade too
- Depgraph code needs revision, cleanup, can be much faster!
  (But, compliments for Jean-Luc, it works like a charm!)
- IK changed, it now doesnt use previous position to advance to next
  position anymore. That system looks nice (no flips) but is not well
  suited for NLA and background render.

TODO LATER;

We now can do loadsa new nifty features as well; like:

- Kill PoseMode (can be option for armatures itself)
- Make B-Bones (Bezier, Bspline, like for spines)
- Move all silly button level edit to 3d window (like CTRL+I = add
  IK)
- Much better & informative drawing
- Fix action/nla editors
- Put all ipos in Actions (object, mesh key, lamp color)
- Add hooks
- Null bones
- Much more advanced constraints...


Bugfixes;

- OGL render (view3d header) had wrong first frame on anim render
- Ipo 'recording' mode had wrong playback speed
- Vertex-key mode now sticks to show 'active key', until frame change

-Ton-
2005-07-03 17:35:38 +00:00
Martin Poirier
99a8747e82 Warning hunt:
INIT_MINMAX and INIT_MINMAX2 are always used on floats but use doubles for initializing, giving countless warnings.
Added the nice 'f' to tell compilers that we want floats.
2005-06-30 04:11:41 +00:00
Alexander Ewering
08169d7fba The overlapping curves/material indices problem got a bit out of control.
- For avoiding the 'overlapping character problem' in Text objects, I had
   changed the sorting code for filling nurbs to use nu->charidx (a new
   variable incremented with each new character) instead of nu->mat_nr
   (which used to work for material indices inside a 2D Curve).

 - This broke material indices in normal 2D Curves completely, thus:

 - nu->charidx is now not only used for seperating
   characters in text objects for filling, but also for normal 2D curves
   when they contain material indices. In fact, charidx is just set to
   the material index.

 - There's compatibility code in readfile.c that sets nu->charidx to nu->mat_nr
   when reading curves from files that are not text objects

 - So, the big conclusion: Instead of using material indices for creating
   'filling groups', filldisplist() now uses nu->charidx, which is set
   appropriately when reading old files and assigning/deleting material
   indices in curves.

 - This is all pretty obscure and hard to explain. If I haven't been clear,
   ask.

 - If it breaks anything, complain!
2005-06-25 22:51:51 +00:00
Daniel Dunbar
eb41fcdf23 - bug fix, crash with edges with no face in subsurf 2005-06-24 05:30:41 +00:00
Daniel Dunbar
83f988c279 - bug fix, vertex normal calculation during incremental update was not
correct (although fairly unnoticable).
 - bug fix, vertex normal calculation didn't normalize face normals before
   summing... silly mistake

p.s. perhaps the Crystal Space bla bla naming conversation is not most
appropriate for the commit list?
2005-06-23 23:44:22 +00:00
Martin Poirier
0a92e159d9 Segfault waiting to happen. This is way old code that I did, I blame my rusty C skills from back then (and the fact that lazy evaluation would make it work correctly). :) 2005-06-22 05:45:23 +00:00
Alexander Ewering
9020455429 Removed a debug print 2005-06-21 15:10:49 +00:00
Alexander Ewering
e7e61ba489 Attempt at providing the best possible flexibility and usefulness with
"Flush":

- There are now two modes, "Flush" and "Justify". Justify only flushes
  a line when it is *terminated* either by wordwrap or by Enter.

- "Flush" *always* flushes the line, also when it's still being entered.

  This mode can be used for things like this:

  http://pub.intrr.org/flush.png

  ..while "Justify" would not flush the second line.

- Fixed "Flush" squeezing all characters on the same spot if the textframe
  was set to 0 width
2005-06-18 00:52:25 +00:00
Alexander Ewering
ad8ff9762b - Fix a few warnings
- Improved text editing for justified ('Flush') text: Line will not
  be filled up until it is completed (wordwrap or Enter)

- Fixed waitcursor flickering in displist.c
2005-06-17 22:52:11 +00:00
Alexander Ewering
97df61a7e5 Initial commit for new text object.
Important notes:

 - Full compatibility with old text objects not fully restored
   (word spacing will be 0.0, need to set it manually to 1.0), will
   either need version upgrade to 238 or a hack. Will check.

 - lorem.c (about to be committed) contains BF copyright notice, but as
   BF did not exist a few hundred years ago, probably best to remove it :)

 - If you notice any cross-platform issues (especially beloved windows),
   please report

 - A few tiny warnings left, I will fix those issues still.

The rest has been said already - so have fun testing. And please do!

=== Reminder:
=== Documentation at http://blender.instinctive.de/docs/textobject.txt ===
2005-06-17 21:04:27 +00:00
Alexander Ewering
70c9f9b319 Typo in fastshade() giving wrong colors for shadeless objects with
Vertex colours
2005-06-11 17:57:34 +00:00
Nathan Letwory
c91355f3b6 Rollback of http://projects.blender.org/pipermail/bf-blender-cvs/2005-June/003769.html (which I in my commithappyness did before properly checking) 2005-06-11 16:30:36 +00:00
Nathan Letwory
07fb86d355 * fix for bug #2733 2005-06-10 13:55:09 +00:00
Kent Mein
f5b011592a uninitalized variable caught with valgrind.
Kent
2005-06-09 18:42:43 +00:00
Jens Ole Wund
91b5992b49 Fix for # 2655
Now triangles and quads of _any_ shape collide nicly with softbodies.
Some tricks don't work in a non euclidian geometry !
Had to brush up that dusty knowlege a bit :)

thanks efbie & ton
2005-06-06 18:52:07 +00:00
Ton Roosendaal
88fa58c437 Changed test for (me->flag&ME_SUBSURF) into
((me->flag&ME_SUBSURF) && me->subdiv)

In build_mesh_data(). This because meshes with subdiv==0 were calling a
MakeDisplist() for each redraw otherwise, disabling for example the
posemode "delay deform" feature. (bug #2700)

Daniel; it would help if you would add comments in the code, for example
to understand the difference between;

mesh_get_base_derived()
mesh_get_derived()

and how it relates to

build_mesh_data()

I realize most of the mess is in displist code... and confusing use
of features while editing, posemode, & render. Nevertheless, it's not
clear at first sight which parts of derivedmesh is design, and which
part reflects the hacks to make it work. :)
2005-06-06 09:52:44 +00:00
Jean-Luc Peurière
f38e0686d9 new round of warning fixes. we are now down to 24 with Xcode on blender
alone with the following flags :
-Wall -Wno-char-subscripts -Wno-missing-braces.

the only one still worrying me is in rand.c line 57 :

rand.c:57: integer constant is too large for "long" type

but i have no clue about how correct cross-compiler and 32/64 bits friendly

see also my mail to commiter list for signed/unsigned issues
2005-06-04 16:22:50 +00:00
Ton Roosendaal
04ae33ba3a Bug fix #2660
When number of OSA samples is larger than number of AO samples, the AO
loop doesn't function well. Since rendering 16 OSA samples with only 9
AO samples isn't very useful, I've made the AO render level to become
at least equal or larger than amount of OSA samples.

Is first bug in 2.37 that worked in 2.36...
2005-06-02 10:32:54 +00:00
Ton Roosendaal
51640e61b6 Stricter check for setting posemode. It is possible to have armatures
linked around to more scenes, which confuses the POSEMODE object flag.

Now posemode is only entered on file read when it is also the active
object.
2005-05-30 13:20:13 +00:00
Jiri Hnidek
8a59480289 - last time commit. It fixes bug reported by Kent Mein. Polygonisation of Metaball was broken. Test file:
http://www.cs.umn.edu/~mein/blender/blend/metaball.blend
    http://www.cs.umn.edu/~mein/blender/blend/metaball.png

 - it should fill octal tree much more better ... polygonisation of MetaBalls is faster little bit now too
 - stiffness limit is 10.0
2005-05-30 06:37:33 +00:00
Ton Roosendaal
73ebc76fd5 2.37 Version code, new Splash! 2005-05-29 19:12:44 +00:00
Ton Roosendaal
dd79f7c8a8 Bug fix #2638
More derivedmesh culling confusement... it should be enabled when double-
sided shaded lighting is used...
2005-05-29 10:47:36 +00:00
Ton Roosendaal
61e22e99d4 Disabled GL_CULL_FACE in mesh drawing for vertex colors, weight paint.
This made faces hidden with normals pointing inside. Not nice for paint...
2005-05-28 12:23:40 +00:00
Ton Roosendaal
5dedd9306b Colorband didn't correctly compute with 2 entries being exactly on the
same spot. Was division by zero here... coded nice exception catching.

BTW: worked before june 2004... was part of commit for Ramp Shading.
2005-05-27 19:02:39 +00:00
Ton Roosendaal
12671f30bd Bug fix #2629
Aye... OpenGL cannot draw concave (C shaped) polygons... that screws up the
Lasso tool, when it uses backbuffer selection.
Examined for little while the GLU Tesselation library, but apart from its
nightmarish structure, it's even stupid (no builtin clock/counterclock).

So, instead coded a DispList based function using Blender's edgefill.
Works like a charm! :)
2005-05-27 09:51:07 +00:00
Ton Roosendaal
b30b8bdd08 Bug #2624
Typo in bspline interpolation code... a '1' should be '2', causing the
fourth key of interpolation always be equal to third.
Only shows error with larger key steps, like 5 frames or more. Nice it
was found before release!
2005-05-25 21:54:13 +00:00
Jens Ole Wund
524e411dbf rule OB_SB_GOAL flag over SOFTGOALSNAP optimization in all cases 2005-05-24 22:17:23 +00:00
Ton Roosendaal
b4dc14e088 Added init of 'postsat' to 1.0 in Scene, for the postprocess menu.
This only gave error in python. Added new scene in Blender itself copies
settings over of current scene. :)
2005-05-24 11:50:12 +00:00
Jean-Luc Peurière
e441c57d22 fix for bug #2588
objects with circular dependancies where not handled correctly
when sorting bases.

the fix is actually a workaround only and may evolve later

also add changes to xcode project for recent commits
2005-05-21 21:52:58 +00:00
Ton Roosendaal
244a1a71b3 Bug fix #2591
Dependency issue... could solve it by calling an extra where_is_object
when a displaylist is made for vertex-parenting on deformed objects.
2005-05-20 20:44:33 +00:00
Nathan Letwory
1071d4a16e This commit fixes two related issues:
1:
* when a blendfile gets loaded, paths are corrected with OS specific slashes (see blender.c)
* made available BLI_char_switch(char *string, char from, char to)
* made available BLI_clean(char *string);. This function should be called whenever you're doing path stuff, so paths are correctly saved, and thus avoiding other path functions stopping to work

2:
* relative paths work now in sequencer too (due to slash mess that didn't work all too well).
2005-05-20 12:18:11 +00:00
Ton Roosendaal
83792faa3f Two softbody thingies;
- fixed error in option "Enable Goal" which didn't work with Vertex groups
  assigned

- renamed some buttons & fixed tooltips. A doc online will be there soon
2005-05-20 12:15:50 +00:00
Stephen Swaney
615c2f40a1 text editor patch by antihc3.
fixes 'Memoryblock free: attempt to free NULL pointer' errors.
2005-05-19 03:15:49 +00:00
Joilnen Leite
c1936cff60 fixed it sending null to MEM_freeN
.
2005-05-18 23:54:56 +00:00
Ton Roosendaal
2d6481c41c TextEditor: syntax color support.
Patch provided by Ricki Myers. Works quite obvious, see Theme editor too!

Notes about the provided code;
- The default syntax colors were screaming! Toned it down to match the
  default dark on lightgrey background better.
- Added: initializing colors in saved themes (usiblender.c)
- The implementation of the button for this option was quite clumsy...
  Blender UI options services this a lot easier.
  (Same fixed for 'line numbers' option)
- Bracket matching now uses as color a mix of backdrop and the
  selected-text color. Noticed my texteditor did it too...

-> I really miss comments in code describing a little bit the thought
   process behind the code. Like a short introduction on this feature
   in the top of the drawtext.c, little remarks on new functions.
   ALso in patch tracker or the mailinglist no docs was mentioned?

-> drawtext.c now gets messy quickly... lack of overview, structure,
   and confusing mix of personal coding styles.
   For not-active supported code dangerous...
2005-05-13 16:11:28 +00:00
Ton Roosendaal
c7942efdba Deform with Curves didn't take the 'tilt' value into account.
Note, the tilting only works for '3D' curves, and is accessible in
EditMode curve with TKEY.
2005-05-13 13:06:20 +00:00