Commit Graph

1047 Commits

Author SHA1 Message Date
5596d88fae * Small tweaks to improve button positioning in the headers 2004-01-03 13:36:28 +00:00
b4c2362d24 * Preliminary UV/Image header menus
Again, there are still a couple of commented out items that will continued to be worked on. Committed for testing, etc.

Also forgot to mention in the previous commit, thanks to Monkeyboi for some help gathering items for the UV/Image, Action, NLA menus.
2004-01-03 13:35:25 +00:00
6669831346 * Preliminary NLA header menus
A couple of items are still commented out in the code, that still need to be implemented. I'm committing this now, so people can test/help ;)
2004-01-03 13:13:51 +00:00
c9a7e4be17 * Ported mesh editmode 'select random' from tuhopuu by popular request
Description:
Mesh editmode header/toolbox: Select -> Random...

Randomly selects a user-set percentage of vertices, adding to the current selection.

* Modified some menu entries to be consistent with the guidelines doc.

* Added 'Align Active Camera to View' in 3D View menu
2004-01-03 09:22:33 +00:00
cf8b43a2c8 - constline was overwriting stack (this patch brought to you by VC7's
nifty runtime stack corruption detection).
2004-01-03 06:52:16 +00:00
Chris Want
8ae5f17f2d Duplicating bones in edit mode now also duplicates the constraints
associated with that bone ... if the constraint subtarget bone is
also duplicated the new constraint points to this new bone as it's
subtarget.
2004-01-03 06:50:36 +00:00
Chris Want
d2787f1372 When a bone is renamed, all constraints that point to it are
updated with the new name.
2004-01-03 06:27:53 +00:00
Chris Want
9f0123d0c7 Three new selection techniques in mesh edit mode, two of which are
controversial:

* "Select non-manifold geometry" via ctrl-alt-shift-M, or through
  the menu or toolbox. Great for troubleshooting weirdness on a
  subsurf, or for preparing a mesh for decimation or for rapid
  prototyping.

* "Select more" via ctrl-PADPLUS, or through the menu or toolbox.
  If a selected vert shares an edge with an unselected vert, the
  unselected one gets selected too. Similar to PADPLUS in wings3d.
  This is controversial because maybe it would be more useful to
  select all of the verts that share a face (instead of just an
  edge) with a selected vert -- what do *you* think?

* "Select less" via ctrl-PADMINUS, or through the menu or toolbox.
  If a selected vert shares an edge with an unselected vert, the
  selected one gets unselected too. Similar to PADMINUS in wings3d.
  Also, selected non-manifold geometry becomes unselected. This is
  controversial because of the non-manifold stuff ... is it needed?
  What do *you* think?
2004-01-03 06:01:16 +00:00
Chris Want
085730683d Added the prototype for the bone_looper() function to this header
to silence some warnings.
2004-01-03 05:36:56 +00:00
Chris Want
e090595ec9 Hide selected/hide unselected/show all bones in posemode using the
usual HKEY, shift-HKEY, alt-HKEY, and also through the menu.

Thanks to malefico for the feature request, and thanks to broken
for doing the menu code.
2004-01-03 05:07:31 +00:00
Chris Want
d311e96174 Armature speed ups, Part III
----------------------------

Another (major) armature speed up for bones with many constraints.

When tranform()-ing, figure out which bones need to be recalculated
beforehand and only update those bones.
2004-01-03 03:53:18 +00:00
de21846e69 BPython:
- Fixed small typo in doc file Object.py, reported by user Bill.
- Fixed bug #803:

Bug #803's Summary: print, type() or BezTriple broken

Trying to print type(BezTriple) was crashing Blender because
that type wasn't being initialized to PyType_Type. The other
problem is that the getName method for ipocurves only works for
object ipos.  A warning was added for when users try to use it
with other blocktypes,  we'll later update ipo related stuff in
bpython to work for all types.
2004-01-03 03:50:58 +00:00
dc343a17e5 - predeclared UserStruct with wrong name 2004-01-03 03:18:00 +00:00
24e63b2f89 - more duplicate UserStruct patching 2004-01-03 03:11:22 +00:00
f8c00cbdef - solve redefinition of UserStructType in a different way, blenkey.h
is not good to include it would seem.
2004-01-03 02:50:33 +00:00
Chris Want
c8a5bfc826 made verify_pose_channel() return the pose channel that is either
found or created (just removed some silly duplicated work).
2004-01-03 02:13:04 +00:00
Chris Want
33916a2402 Armature speed ups, Part II
---------------------------
"Delay Deform" option for armatures.

The button is under the X-ray bones button in the edit buttons.
With this armature option selected, manipulations in pose mode
will only deform children after the transformation is finished.
While hardly an optimal solution to the slow armature crisis, this
gives about 4 times speed up on some meshes (ah well, at least lets
me isolate armature vs. displist slowdowns while profiling).
2004-01-03 01:40:53 +00:00
Chris Want
a5a01ed549 Armature speed ups, Part I
--------------------------

Major speed up for armatures during times when you aren't
posing a figure.

Background: the calculation of poses generated by actions and the
calculation of displists were getting somewhat out of sync.
This was being remedied by 'clearing the constraint done flag'
of the pose channels and recalculating the displists every time
the 3d view was redrawn, making life slow and unpleasant.
Commenting out the code that was doing this, then reinserting
the 'clearing the constraint done flag' at the right times
made things a bit more perky.
2004-01-02 23:29:34 +00:00
251c11cca1 - BLO_keyStore.h was redeclaring UserStructType from blenkey.h, removed
duplicate definition and include blenkey.h where needed. (VC7 patch)
2004-01-02 23:15:30 +00:00
Chris Want
a2f096236b Decoded the 'do_all_actions()' function into smaller functions that are
a bit more sane and readable (actually fit in an 80 character term too).
2004-01-02 21:23:19 +00:00
Chris Want
171ee6e2df Fixed the goofy way the function prototypes in these files were done 2004-01-02 20:57:43 +00:00
Chris Want
b9f98c3545 Expanding some work done by Matt Ebb to add menu's to the
action window (Matt: please check).
2004-01-02 04:59:45 +00:00
7f90973344 Fix a problem that has been bugging me for a while. Tracking axis by default are different for Lamp and Camera than for the rest. For the constraint, it wasn't using the correct ones for them, so obviously, it didn't track correctly by default.
Fixed by checking the object type and changing the up and track axis accordingly.

Also added some comments in the DNA file (recompiling makedna because of comments is fun!)
2004-01-01 19:21:06 +00:00
4b6bc29bf2 Some random small stuff packed in one commit:
- Moved a couple of undo_push_mesh after the action has been confirmed (mainly bevel, merge and mirror)

- Split mirror in two functions, interface and functionality

- Simplified the code of the merge function
2003-12-31 22:44:26 +00:00
ab36eaa947 - removed Quicktime warning from buttons. Thanks for the fix Maarten! 2003-12-31 16:51:28 +00:00
84780ae764 - fixed reported bug in doing correct redraws for multiple 3d windows, and
using vertex select. Was just caused by being to cheapskate with cpu
  cycles... but I don't give up on that!
2003-12-31 15:45:04 +00:00
3eee89e393 - added extra check for valid Material pointer array in Mesh. Someone
reported crash with a popular Python script that apparantly doesnt
  initialize a Mesh good (setting totcol, but not creating pointer array)
  When no Material array is present, 'totcol' is set at zero now.
2003-12-31 15:27:31 +00:00
10c0f4ae9f - bug fix #828
Blender crashed when assigning background image to 3d window, when no
  buttons window was visible. This caused by copying code from old location
  with still using some variables of the 'button space' struct.

  Solved by creating these variables in View3d 'space' as well, and using
  these instead. Could also remove old coder /* comment */ that there was
  a unknown bug in the code there. :)
2003-12-31 13:48:45 +00:00
Chris Want
9bc012f97c A fix for the missing pad1 bug: henceforth, world->pad1 shall be known as
world->gameEngine (a la tuhopuu).
2003-12-31 04:00:26 +00:00
d8b21b01c3 Added improved exposure calculation
- based at 1.0-exp(-color) trick in Yafray. But to guarantee backwards
  compatibility, and some more control, Stefano Selleri hacked a useful
  formula for it.
- We now have 2 values to set:
  - "exp": the exponential correction value (0-1)
  - "range": the light range that maps on color 1.0 (0-5)
- Using exp(x) (is e^x) we can much better prevent overflows from render,
  which are currently hard-clipped in Blender. Setting a small 'exp' value
  wil efficiently smooth out high energy and map that back to a color for
  display.
- total formula:
  newcol= linfac*(1.0-exp(col*logfac))
    col, newcol are colors
  linfac= 1.0 + 1.0/((2.0*wrld.exp +0.5)^10)
  logfac= log( (linfac-1.0)/linfac )/wrld.range
    wrld.exp and wrld.range are the button values
- default setting: exp=0.0 and range=1.0 give results extremely close to
  previous rendering.
- graph: http://www.selleri.org/Blender/buffer/Image1.png  for 'exp' setting
  ranging from 0-1, and with 'range'=2

Thanks Stefano for the help!
2003-12-30 18:03:37 +00:00
6c80064ab7 - fixed switching contexts... the previous commit about this was too
rigurous. Now it only switches context when selecting a new object
  type, also "invisble", when shading buttons are not drawn.

  What I committed changed context always when pressing the 'shading
  context' icon button. This was annoying when you were editing textures
  or radiosity, world, etc. In such cases it should just draw the old
  settings.
2003-12-30 16:00:38 +00:00
7d7fd069fc - fix for area light versus oren-nayer shading.
oren-nayer was of course of not built for area-lights... so probably
  Cessen will kill me for this hack. Nice challenge for him to come with
  better solution. Visually it works & looks fine.
2003-12-30 00:04:22 +00:00
cf9ce09074 - forgot to clip negative values coming from arealight formula.
- excluded 'dist' factor calculus from arealamps, which caused too much
  distance sensitivity
2003-12-29 21:32:03 +00:00
b269f6f466 - since the Object Transform panel in 3d window has sufficient space,
made all buttons display 3 digits after dot, instead of 2.
2003-12-29 20:12:21 +00:00
5004432333 - fixed crashing texture plugin, caused by not checking the tex->nor
pointer.
  Now variables are localized, this is not always set anymore.
2003-12-29 20:05:15 +00:00
3ce1dc9065 Area lights and more...
- New lamp type added "Area". This uses the radiosity formula (Stoke) to
  calculate the amount of energy which is received from a plane. Result
  is very nice local light, which nicely spreads out.
- Area lamps have a 'gamma' option to control the light spread
- Area lamp builtin sizes: square, rect, cube & box. Only first 2 are
  implemented. Set a type, and define area size
- Button area size won't affect the amount of energy. But scaling the lamp
  in 3d window will do. This is to cover the case when you scale an entire
  scene, the light then will remain identical
  If you just want to change area lamp size, use buttons when you dont want
  to make the scene too bright or too dark
- Since area lights realistically are sensitive for distance (quadratic), the
  effect it has is quickly too much, or too less. For this the "Dist" value
  in Lamp can be used. Set it at Dist=10 to have reasonable light on distance
  10 Blender units (assumed you didnt scale lamp object).
- I tried square sized specularity, but this looked totally weird. Not
  committed
- Plan is to extend area light with 3d dimensions, boxes and cubes.
- Note that area light is one-sided, towards negative Z. I need to design
  a nice drawing method for it.

Area Shadow

- Since there are a lot of variables associated with soft shadow, they now
  only are available for Area lights. Allowing spot & normal lamp to have
  soft shadow is possible though, but will require a reorganisation of the
  Lamp buttons. Is a point of research & feedback still.
- Apart from area size, you now can individually set amount of samples in
  X and Y direction (for area lamp type 'Rect'). For box type area lamp,
  this will become 3 dimensions
- Area shadows have four options:
  "Clip circle" : only uses a circular shape of samples, gives smoother
  results
  "Dither" : use a 2x2 dither mask
  "Jitter" : applys a pseudo-random offset to samples
  "Umbra" : extra emphasis on area that's fully in shadow.

Raytrace speedup

- improved filling in faces in Octree. Large faces occupied too many nodes
- added a coherence check; rays fired sequentially that begin and end in
  same octree nodes, and that don't intersect, are quickly rejected
- rendering shadow scenes benefits from this 20-40%. My statue test monkey
  file now renders in 19 seconds (was 30).

Plus:

- adjusted specular max to 511, and made sure Blinn spec has again this
  incredible small spec size
- for UI rounded theme: the color "button" displayed RGB color too dark
- fixed countall() function, to also include Subsurf totals
- removed setting the 'near' clipping for pressing dot-key numpad
- when you press the buttons-window icon for 'Shading Context' the context
  automaticilly switches as with F5 hotkey

Please be warned that this is not a release... settings in files might not
work as it did, nor guaranteed to work when we do a release. :)
2003-12-29 16:52:51 +00:00
65aeef11e1 Alex Mole's patch for END and HOME
http://www.blender.org/pipermail/bf-committers/2003-December/004691.html

Makes HOME and END keys work in text space and text
edit boxes.

I've tested it for some time now and I haven't had any problem or spotted any irregularities of some sort.

One think though. It doesn't update the panning of the text window if the cursor gets out of the screen. I guess someone (more familiar with the code) could look into this.

Really nifty when coding scripts.
2003-12-28 21:28:35 +00:00
9aed5cb7f0 Bugfix for bug #760
http://projects.blender.org/tracker/index.php?func=detail&aid=760&group_id=9&atid=125

When using numerical input with scaling, axis that did not have any input scaled to 0 (it defaults to 1 now). Fix inspired by Koryo's patch (it was easier to recode it than to apply the patch and then run through the code to see if he didn't forget anything).

Also fixed some other stuff (the variables didn't reset correctly at some point).
2003-12-28 21:16:11 +00:00
2eed0e54ef bjornmose's UV mapping patch
two new options to uv auto calculation:
"from window to shere", "from window to cylinder".
the differences to sphere/cylinder mapping as is:
1. the around settings of the 3D view sets the projection center
2. the origin of the polar/spherical coordinate system always points out of the screen.
   so the rotation of the view affects mapping.
3. in the cylinder case the radius of the projection cylinder is read by a popup button.

Basicly what you need to do is rotate the viewport until the cylinder/sphere is aligned with the depth (Z axis) of the view, as if you where looking through the mesh from one end to another (makes more sense in the case of a cylinder), and choose the From window to cylinder/sphere mapping option.
2003-12-28 19:59:06 +00:00
85ae21d5dd Commit of cursor framework. Cursors now defined in source/blender/src/cursors.c and
source/blender/include/BIF_cursors.h.  Allows large cursors on Win32 and X11.
See cursors.c for documentatioin on how to use.
2003-12-26 20:12:42 +00:00
da0e131b16 - improved filling in faces in octree, resulting in less nodes and
branches. Especially larger faces give result. Rendering times go down
  with an average of 10%. My reference testfile went down from 30.4 to
  27.9 seconds.
2003-12-24 19:05:38 +00:00
a7bed78040 - fixed bug in shaded view mode (SHIFT+Z) when it tried to calculate
reflection normals... NULL pointer reference.
  (thanks Desoto!)
2003-12-24 16:18:13 +00:00
b3911687ee - only cosmetic stuff; result of going over the output of mipspro cc
compile round. Wrong prototypes, unused variables, zealot const usage,
  and in action.c fixed insane & unreadable function call syntax.
2003-12-24 11:44:57 +00:00
8fbff1a3b7 - Fresnel V4.0
Based on feedback (thnx phase!) I found a big disadvantage of the 'real'
fresnel formula. It doesnt degrade to 0.0, causing 2-3 times too many
rays being fired compared to the previous one. So; a lot slower.

Now committed is a hybrid which allows (close to) real, and nice artistic
freedom, *and* it really goes to 0.0 and 1.0, assisting nicely in optimal
render times.
A real doc how it works (with pics) will be made before real release.

- Fixed bug in raytrace: the first renderpass didn't use fresnel for mirror.
- Fixed bug in previewrender, now it closer matches how fresnel renders
2003-12-23 22:31:48 +00:00
4d8fce8568 Fixed bevel width preview drawing which draws the correctly with higher recursion level (it was incorrect for anything higher than 2).
Also commented out a couple of unused variables that were shouting warnings (and we all love the lack of warning and the couple of extra free bytes) :)
2003-12-23 19:03:30 +00:00
454166026a - another fresnel improvement. :)
At last irc meeting, eeshlo pointed to an error in the code. It didn't
  use the IOR value correctly. This has been solved. So how it works now:
  - the IOR button value influences (very subtle) the fresnel effect.
    Only for realism diehards.
  - the Fresnel value (slider) now denotes the power in the function
    rf + (1-rf) * (1-c)^5
    where rf= rf = ((ior-1)/(ior+1))^2
    and c the dot-product ray/normal.
  - so, set the slider at '5' and you have real fresnel. Lower values
    for interesting artistic effects.

- put back the forgotten code for gaussian corrected sampling during
  antialising render. Normally, each sub-pixel sample in Blender counts
  equally, and together make up the pixel color.
  With 'Gauss' option set (F10 menu) each sub-pixel sample creates a small
  weighted mask with variable size, which (can) affect neighbouring pixels
  as well. The result is smoother edges, less sensitive for gamma, and
  well suited to reduce motion-aliasing (when things move extreme slow).
  This is result of *long* period of research in NeoGeo days, and based on
  every scientific sampling/reconstructing theory we could find. Plus a
  little bit of our selves. :)

- I should write once how blender constructs Jitter tables for sub-sampling.
  this is a very nice method, and superior to normal block filter or random
  jittering... time!
2003-12-22 22:27:51 +00:00
3df84b755f - fixes for the stubs, to make sure blenderplayer compiles.
error was caused by moving render calls to render module... but some
  are still called in blender kernel...
2003-12-21 23:38:41 +00:00
6d6dee7ba8 - globals were defined double... showed up thanks to warning of irix
compiler!
2003-12-21 22:57:02 +00:00
d012036c1f - moved render.h struct back to beginning of file... 2003-12-21 22:38:29 +00:00
761fd601ea - brought back to render.h includes... ifdef SGI and Windows... 2003-12-21 22:31:03 +00:00