Commit Graph

270 Commits

Author SHA1 Message Date
Ton Roosendaal
97eb805f9c Bugfix #5551
CTRL+C/V (or Apple+C/V) on buttons didn't copy/paste names for buttons
of type "ID pointer" anymore. Was caused by NULL pointer check in wrong
location.
2007-01-08 14:55:53 +00:00
Ton Roosendaal
eaeed165db Bugfix #5599
TAB in text-edited buttons didn't always go to next button, for example
in constraints. Was caused by the 'roundbox' backdrop.
2007-01-06 10:59:07 +00:00
Matt Ebb
69da3d93fb * Fix for bug #5555 Numpad zoom does not recognize that the
transform properties window is collapsed.

Just checks now to see if the floating panel is collapsed or not
and where the mouse is before zooming.
2006-12-30 05:37:45 +00:00
Ton Roosendaal
d109129663 Bugfix #5498
Textbutton: SHIFT+Arrow selections did not work proper when the amount of
text in a button was more than its width could display. Now still doesn't
work OK 100% (when selection itself goes outside of button view).

Also: removed the very bad SELWIDTH define (but->selend - but->selsta).
That's not making readable code!
2006-12-26 10:18:38 +00:00
Ton Roosendaal
bb6dc38f89 Picker buttons: the 'sample' option crashed. Caused by yesterdays commit.
Reason: I had to make the "BUT" type in Blender to use callbacks *after* the
uiBlock was freed, because in Blender several of these callbacks invoke
drawing, which isn't possible while a block is being evaluated.
2006-12-21 15:30:43 +00:00
Ton Roosendaal
253432bfc7 The Big Image refactor!
Please read:
http://www.blender3d.org/cms/Imaging.834.0.html

Or in short:

- adding MultiLayer Image support
- recoded entire Image API
- better integration of movie/sequence Images

Was a whole load of work... went down for a week to do this. So, will need
a lot of testing! Will be in irc all evening.
2006-12-20 17:57:56 +00:00
Ton Roosendaal
17231f83f3 Work on RenderLayer and Pass control:
Full log:
http://www.blender3d.org/cms/Render_Passes.829.0.html

In short:
- Passes now have option to be excluded from "Combined".
- RenderLayers allow to override Light (Lamp groups) or Material.
- RenderLayers and Passes are in Outliner now, (ab)using Matt's nice
  'restriction collumns'. :)
2006-12-07 14:17:38 +00:00
Martin Poirier
cbd84b26f4 === Interface ===
Based on patch #5140 by Juho Vepsäläinen, this commit removes the requirement to type # at the start when you want to use Python expression evaluation when typing a value in a button.

In a nutshell, that means you can now type 3 + 5 in a numbut and see it change to 8.

Word of warning: The normal Python operator logic applies, so if you type in 1 / 3, you'll get 0 and not 0.333. There's no going around that.
2006-12-03 18:59:13 +00:00
Ton Roosendaal
c1258980a4 Render Baking upgrade:
- Now baking itself is threaded too (like for render, max 2 cpus. Moving
  this to 4 cpus is on todo. Goes twice as fast!

- fix: ESC from bake was broken...

- other fix: toolbox menus didn't treat sublevel string lengths OK,
  truncating items like for Group library names.
2006-11-28 10:16:24 +00:00
Ton Roosendaal
b78b3a4761 Group groupie features:
- When using (referenced) Library files, the groups in Add menu now are
  listed per used file. This allows to easier create custom datasets.
- Toolbox opens in collums now, when more than 30 items in a menu exist
2006-11-24 22:12:24 +00:00
Ton Roosendaal
fbcb0c1e45 New 'TOG DUAL' button (for locking bone layers) disabled extend-press
with shift key.
2006-11-12 09:26:38 +00:00
Ton Roosendaal
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
Matt Ebb
3e0c45440d * Simple patch 5058 from gsrb3d to use constants instead of magic numbers for
theme drawtypes
2006-10-28 13:21:02 +00:00
Ton Roosendaal
c2edcd4879 Siggraph show commit!
- pending commit for OSX intel systems, with intel graphics. These now call
  an extra swapbuffers after glFlush(). Code is ifdeffed, and doesnt affect
  other systems.

- show-off commit: option to have transparent nodes over the composite
  result. Only draws Image for active Viewer Node now, and image doesnt
  translate nor zoom (which isnt bad though).
  Set in themes the alpha color of "node backdrop" to make nodes
  transparent.
2006-07-31 19:23:42 +00:00
Ton Roosendaal
7aaa8c720c Removed the isnan() fix for silly people who type in NAN in a button!
Apparently not supported in Windows compiler, and although it has _isnan()
I've got no time to code wrappers for it, and #ifdefs here is plain bad
code.

Nice todo for Campbell one of these days after release!
2006-07-12 15:28:37 +00:00
Ton Roosendaal
a8ad9880f4 Bugfix #4661
Apparently the atof() function allows to convert a NAN string input to a
NAN float value.
That we don't want when you input values in our sliders! :)
2006-07-11 08:56:46 +00:00
Ton Roosendaal
1cd74bab99 Bugfix #4652
Using TAB to type values in button sequences, didn't execute button
callbacks on the 2nd and and 3rd etc. Error could be noticed in the
Node Editor, Mapping node. That one didn't pass on changes to shading code.
2006-07-10 14:49:20 +00:00
Ton Roosendaal
cd976bfd42 Bugfix #4628
Ancient issue in making screendumps in Blender. It used to support making
dumps of popup menus, but that disappeared a while ago. However, when you
press CTRL+F3 in a menu now, Blender hangs in some eternal loop in ghost.

This commit fixes making menu screendumps (nice for docs!).

- press CTRL+F3 *twice* for an exact copy of a menu. (first press exits
  menu, 2nd press opens filewindow)
- note, it is ALT+CTRL+F3 in OSX
- what is saved is only the topmost open level of a menu
- full-screen dumps work too by holding SHIFT extra.
2006-07-06 12:50:48 +00:00
Ton Roosendaal
7f72afa650 Button alignment error in Particle panel (set 'static').
Appeared to be a missing check in the alignment code even. :)
2006-06-22 12:25:28 +00:00
Ton Roosendaal
9410c7a731 #4361
Eyedropper (in ColorPicker) bug: It was reading a 4xfloat color into a
single float. tsk tsk!
2006-06-20 11:15:00 +00:00
Ton Roosendaal
2a2c5e7f4e Bugfix #4354
Fix for old (post 2.3) annoyance in UI; on redraw of the entire buttons
window, the active button (with highlight) was detected wrong. Was just
a matrix calculation on wrong moment. :)

Also: fixed tooltip for transparent material "add" option. It was talking
about "Glow", a confusing description.
2006-06-19 11:21:42 +00:00
Matt Ebb
d5b3e75652 * Added a better mouse pointer for the eyedropper tool (thanks Bart) and also
some 2d scroll pointers
2006-06-15 14:22:59 +00:00
Jean-Luc Peurière
b535b671b3 interim fix for the low end integrated intel graphic cards
until a better solution is found
2006-06-14 18:04:57 +00:00
Martin Poirier
873e2eaae3 == Python Button Evaluation ==
Users can write any valid Python expression (that evals to an int or float) inside Blender's gui number buttons (preceded by #) and have them evaluated to their actual int or float value.

Button Evaluation has access to the same modules as PyDrivers.

For example:

#1.0*9-2.3
#ob("Camera").LocZ
#1.0/ob("Cube").LocX
#math.sin(math.pi) -- or simply #m.sin(m.pi)
etc
2006-06-12 00:10:00 +00:00
Matt Ebb
67dc5585cb * Added an 'eyedropper' tool in the colour picker. With the colour picker open,
you can click on the 'Sample' button, to sample any colour on the Blender
screen. This is really useful in the compositor, and would probably be good for
sampling footage in any eventual chroma key nodes that may be made, too.

LMB to pick the colour, ESC or RMB to cancel.
2006-06-09 16:01:27 +00:00
Matt Ebb
4612605786 * Woops, a debug printf slipped through. Removed. 2006-06-05 16:01:00 +00:00
Matt Ebb
1fcae2e0f7 * Cut, Copy and Paste for buttons now also works while editing button text.
Hotkeys Ctrl/Command (Mac) X, C, and V will cut, copy and paste the selected
  text to and from the 'buttons clipboard'.

  This clipboard is still not that good since it doesn't even use the same
  storage as the blender text editor, let alone the host OS. But I guess that
  sort of thing should be tackled inside of GHOST. Any takers? :)
2006-06-05 15:52:42 +00:00
Campbell Barton
5695dba2c9 Added the letter T for the Ipo type menu (key shortcut). So we can close bug 3700
typo in commant interface.c
2006-06-05 01:46:03 +00:00
Campbell Barton
ce202f7540 Clicking on the arrows of a python float button did not change the value :/ - (Click step was zero) Fixed in Draw.c
Added a comment to interface.c on how a1 and a2 are used with float buttons.
Added an example to Draw.py epydocs of a script using a float button.
2006-06-05 01:23:56 +00:00
Jean-Luc Peurière
2dfc4b9a2f fix for bug #3930 Colour picker broken - HSV sliders
Note : this part of code was quite a mess with things called twice when
not needed, tests for not updating when we want to, and hsv sliders not
handled properly.

I tried to figure what was useful and what was not but cannot garantee i
spotted everything or even fixed it the most proper way, the event callback
nesting making hard to figure what really happen.

However it does work again now
2006-03-13 02:22:48 +00:00
Ton Roosendaal
0e44aa60b2 Half fix for colorpicker: after using sliders, the redraw callback was
too late... moved it one line up. :)

Still unknown; why doesn't HSV color field not redraw?
2006-03-12 14:51:33 +00:00
Ton Roosendaal
130c41c7ba More compositing goodies.
- Texture Node
Allows to use any Blender Texture block as input for masks or color
blending. The texture node doesn't generate a real image, but adjusts to
the size as mapped with during an operation. So it won't work to use it
as Image input for Blur or Filter nodes.

Note; the Vector inputs for this node only work with manual input now!

- Translation Node
Give any image an offset in X or Y direction

For the Texture node to work, I needed to move the central 'pixel
processor' up one level... to allow differently sized images to merge
and allow 'procedural images' without size.

Temporal image of the day: http://www.blender.org/bf/rt.jpg
2006-02-19 14:55:16 +00:00
Ton Roosendaal
387f9a7c6d Four-in-one commit:
(NOTE: new include dependency in Render module, might need MSVC update!
It has to include the imbuf/intern/openexr/ directory in search path)

-> New Composite node: "Hue Saturation".
Works like the former 'post process' menu. There's no gamma, brightness or
multiply needed in this node, for that the Curves Node functions better.

-> Enabled Toolbox in Node editor
This now also replaces the SHIFT+A for adding nodes. The nodes are
automatically added to the menus, using the 'class' category from the
type definition.

Current classes are (compositor examples):

Inputs: RenderResult, Image
Outputs: Composite, Viewer
Color Ops: RGB Curves, Mix, Hue Saturation, AlphaOver
Vector Ops: Normal, Vector Curves, Map Value
Filters: Filter, Blur, VectorBlur
Convertors: ColorRamp, RGBtoBW, Separate RGBA, Separate HSVA, Set Alpha
Generators: RGB, Value, Time
Groups: the list of custom defined nodes

-> OpenEXR tile saving support
Created an API for for saving tile-based Images with an unlimited amount
of layers/channels. I've tested it for 'render result' now, with the idea
that this can (optionally) replace the current inserting of tiles in the
main result buffers. Especially with a lot of layers, the used memory for
these buffers can easily go into the 100s of megs.
Two other advantages:
- all 'render result' layers can be saved entirely in a single file, for
  later use in compositing, also for animation output.
- on each render, per scene, a unique temp file can be stored, allowing
  to re-use these temp files on starting Blender or loading files, showing
  the last result of a render command.

The option is currently disabled, needs more work... but I had to commit
this because of the rest of the work I did!

-> Bug fix
The Image node didn't call an execute event when browsing another image.
2006-02-18 13:28:44 +00:00
Jean-Luc Peurière
4dfa22b6d0 commiting patch #3847
add drag-lock to numbuts to prevent accidental adjustemnts.
Patch furnished by Roger Prefontaine (isocles)
2006-02-12 18:25:53 +00:00
Ton Roosendaal
1db5c23716 More work on render stuff!
- Scene support in RenderLayers
You now can indicate in Compositor to use RenderLayer(s) from other scenes.
Use the new dropdown menu in the "Render Result" node. It will change the
title of the node to indicate that.

The other Scenes are rendered fully separate, creating own databases (and
octrees) after the current scene was finished. They use their own render
settings, with as exception the render output size (and optional border).
This makes the option an interesting memory saver and speedup.

Also note that the render-results of other scenes are kept in memory while
you work. So, after a render, you can tweak all composit effects.

- Render Stats
Added an 'info string' to stats, printed in renderwindow header. It gives
info now on steps "creating database", "shadow buffers", and "octree".

- Bug fixes

Added redraw event for Image window, when using compositor render.

Text objects were not rendered using background render (probably a bug
since depsgraph was added)

Dropdown buttons in Node editor were not refreshed after usage

Sometimes render window did not open, this due to wrong check for 'esc'.

Removed option that renders view-layers on F12, with mouse in 3d window.
Not only was it confusing, it's now more efficient with the Preview Panel,
which does this nicely.
2006-02-04 13:28:50 +00:00
Chris Want
c8b48e70e6 Final merge of HEAD (bf-blender) into the orange branch.
Here are my notes on things to look out for as potential problem
spots:

source/blender/blenkernel/intern/displist.c:
+ is initfastshade(void) supposed to be empty? I had
to make it empty to get the merged tree to compile.

source/blender/python/api2_2x/Armature.c:
+ went with the version that had Armature_getLayers()

source/blender/python/api2_2x/Object.c
+ went with the version of Object_getPose() from bf-blender.
(#ifdef 0-ed the other version)

source/blender/python/api2_2x/Pose.[ch]
+ had problems linking due to no Pose_Init() ... copied these
two files straight from bf-blender.

source/blender/src/drawview.c:
+ view3d_panel_properties() had things shifted a few things shifted
a few pixels, otherwise, things were painless

source/blender/src/splash.jpg.c:
+ went with bf-blender version (orange is dead)

source/gameengine:
+ went with bf-blender version -- does not compile due to IMB_rect* stuff,
Ton should look into this.
2006-01-28 16:35:18 +00:00
Matt Ebb
fa54435615 == Interface/Nodes ==
Modification to allow adding a point in a curve button by LMB clicking/dragging directly on the curve, as in GIMP/Photoshop/etc.
2006-01-26 17:35:26 +00:00
Campbell Barton
7bb69869e0 Made numbuts use non linear rate of change when dragging.
The further you drag the bigger the number gets (like gimp/photoshop brush size slider)
Works for ranges: float buttons bigger then 11 and int buttons bigger then 129.
2006-01-24 22:07:41 +00:00
Ton Roosendaal
042d612df2 Giant commit!
A full detailed description of this will be done later... is several days
of work. Here's a summary:

Render:
- Full cleanup of render code, removing *all* globals and bad level calls
  all over blender. Render module is now not called abusive anymore
- API-fied calls to rendering
- Full recode of internal render pipeline. Is now rendering tiles by
  default, prepared for much smarter 'bucket' render later.
- Each thread now can render a full part
- Renders were tested with 4 threads, goes fine, apart from some lookup
  tables in softshadow and AO still
- Rendering is prepared to do multiple layers and passes
- No single 32 bits trick in render code anymore, all 100% floats now.

Writing images/movies
- moved writing images to blender kernel (bye bye 'schrijfplaatje'!)
- made a new Movie handle system, also in kernel. This will enable much
  easier use of movies in Blender

PreviewRender:
- Using new render API, previewrender (in buttons) now uses regular render
  code to generate images.
- new datafile 'preview.blend.c' has the preview scenes in it
- previews get rendered in exact displayed size (1 pixel = 1 pixel)

3D Preview render
- new; press Pkey in 3d window, for a panel that continuously renders
  (pkey is for games, i know... but we dont do that in orange now!)
- this render works nearly identical to buttons-preview render, so it stops
  rendering on any event (mouse, keyboard, etc)
- on moving/scaling the panel, the render code doesn't recreate all geometry
- same for shifting/panning view
- all other operations (now) regenerate the full render database still.
- this is WIP... but big fun, especially for simple scenes!

Compositor
- Using same node system as now in use for shaders, you can composit images
- works pretty straightforward... needs much more options/tools and integration
  with rendering still
- is not threaded yet, nor is so smart to only recalculate changes... will be
  done soon!
- the "Render Result" node will get all layers/passes as output sockets
- The "Output" node renders to a builtin image, which you can view in the Image
  window. (yes, output nodes to render-result, and to files, is on the list!)

The Bad News
- "Unified Render" is removed. It might come back in some stage, but this
  system should be built from scratch. I can't really understand this code...
  I expect it is not much needed, especially with advanced layer/passes
  control
- Panorama render, Field render, Motion blur, is not coded yet... (I had to
  recode every single feature in render, so...!)
- Lens Flare is also not back... needs total revision, might become composit
  effect though (using zbuffer for visibility)
- Part render is gone! (well, thats obvious, its default now).
- The render window is only restored with limited functionality... I am going
  to check first the option to render to a Image window, so Blender can become
  a true single-window application. :)
  For example, the 'Spare render buffer' (jkey) doesnt work.
- Render with border, now default creates a smaller image
- No zbuffers are written yet... on the todo!
- Scons files and MSVC will need work to get compiling again

OK... thats what I can quickly recall. Now go compiling!
2006-01-23 22:05:47 +00:00
Campbell Barton
14e1000e38 Made the minimal theme align, and buttons now sit close together.
Looks nicer.
2006-01-19 14:42:04 +00:00
Ton Roosendaal
09549c4538 Orange: Added Alpha viewing option in Image window. 2006-01-11 00:08:02 +00:00
Ton Roosendaal
e7285229b8 Tuesday merger of bf-blender into orange branch. 2006-01-10 22:10:14 +00:00
Ton Roosendaal
d594594cbe Orange: more work on float/exr buffers;
- EXR now saves and reads Zbuffers correctly
- EXR reading didn't set alpha to 1 yet when no alpha buffer was present

- ImageWindow: the "black point" only checked for the r value... now is OK
- ImageWindow: Curves panal has button "reset"
- ImageWindow: hold LMB drag shows rgba and z values. With SHIFT or CTRL it
  applies black/white point whilte dragging too
- ImageWindow: saving file copied the entire buffer... removed that. Also
  made the header print clear; this save only saves in own file type.

- Curves: zoom and drag now gets clamped by the Clipping value

- Imbuf: duplicate buffer only copied one quarter of to new buffer
2006-01-10 21:41:37 +00:00
Campbell Barton
7ee9caf523 There was a problem with typing over text selections, where you had an object with 21 letter name (19 is the max but 21 is supported, just copy a mesh a few times)
After this click on the object name and start typing, even though the selection makes it that the new string would be overwritten, it dosent let you type in any text.

from
if(len <= but->max) {
to...
if(len-SELWIDTH+1 <= but->max) {

- Tested and works well.
2006-01-09 15:24:23 +00:00
Ton Roosendaal
104ab9b103 Orange:
- New UI element: the "Curve Button".

For mapping ranges (like 0 - 1) to another range, the curve button can be
used for proportional falloff, bone influences, painting density, etc.
Most evident use is of course to map RGB color with curves.

To be able to use it, you have to allocate a CurveMapping struct and pass
this on to the button. The CurveMapping API is in the new C file
blenkernel/intern/colortools.c
It's as simple as calling:

   curvemap= curvemapping_add(3, 0, 0, 1, 1)

Which will create 3 curves, and sets a default 0-1 range. The current code
only supports up to 4 curves maximum per mapping struct.
The CurveMap button in Blender than handles allmost all  editing.
Evaluating a single channel:

   float newvalue= curvemapping_evaluateF(curvemap, 0, oldval);

Where the second argument is the channel index, here 0-1-2 are possible.
Or mapping a vector:

   curvemapping_evaluate3F(curvemap, newvec, oldvec);

Optimized versions for byte or short mapping is possible too, not done yet.

In butspace.c I've added a template wrapper for buttons around the curve, to
reveil settings or show tools; check this screenie:

http://www.blender.org/bf/curves.jpg

- Buttons R, G, B: select channel
- icons + and -: zoom in, out
- icon 'wrench': menu with tools, like clear curve, set handle type
- icon 'clipping': menu with clip values, and to dis/enable clipping
- icon 'x': delete selection

In the curve button itself, only LMB clicks are handled (like all UI elements
in Blender).

- click on point: select
- shift+click on point: swap select
- click on point + drag: select point (if not selected) and move it
- click outside point + drag: translate view
- CTRL+click: add new point
- hold SHIFT while dragging to snap to grid
  (Yes I know... either one of these can be Blender compliant, not both!)
- if you drag a point exactly on top of another, it merges them

Other fixes:

- Icons now draw using "Safe RasterPos", so they align with pixel boundary.
  the old code made ints from the raster pos coordinate, which doesn't work
  well for zoom in/out situations

- bug in Node editing: buttons could not get freed, causing in memory error
  prints at end of a Blender session. That one was a very simple, but nasty
  error causing me all evening last night to find!
  (Hint; check diff of editnode.c, where uiDoButtons is called)

Last note: this adds 3 new files in our tree, I did scons, but not MSVC!
2006-01-08 11:41:06 +00:00
Andrea Weikert
e6d5d8cb74 FIX: scaling of pupmenu for materials caused text to be cut off.
Scaling up of the text and icon in pupmenu is prevented now in ui_do_but_MENU.
2006-01-06 19:18:31 +00:00
Ton Roosendaal
3153a238b3 Orange: more Node goodies;
- New Node: "Mapping". Allows input vector to be translated, rotated and
  scaled. And optional be clipped to a range. Works for colors too!

- The button "Normal" now allows incremental input, so a click in the
  button won't change the normal anymore

- Connecting wires now show selection state for Nodes, with nice blended
  colors. Both colors were added in Themes, but default to black and white
2006-01-04 12:13:13 +00:00
Ton Roosendaal
832f2d33d3 Orange; stuff for the animation department!
- Found the potential crasher for sound playback & undo. Test!
- PoseMode: NKey panel didn't work when actions where assigned
- NLA: "Add action strip" now displays in menu to which active object the
  actions are added.
2006-01-03 12:04:05 +00:00
Ton Roosendaal
c1a4e42a75 Orange; another node update for reviewing.
Material Nodes now have input sockets, to override the actual Material
settings. If socket has no input, you can also edit Material settings here.
(Color picker, number slider).

Of course a load of options will become available here, first bugfixing!
(Oh, and enable fix thread render)
2006-01-02 17:40:03 +00:00
Ton Roosendaal
d921d6be6f Orange: daily noodle updates;
- Texture Node: now displays 'intensity values' in node too, and has input,
  and shows in buttons when activated in Node editor. (no browsing buttons
  yet...)

- New: "Normal Node". This uses a new UI button, which allows to quickly
  input a normal vector, based on spherical coordinates.
  The Normal Node has optional vector input, and delivers a dot product
  then. This can be used as a blending factor between nodes, or for fake
  extra light in a certain direction.

- New: "Geometry Node". This actually replaces the Input node. It offers
  all coordinates (vectors) as being the starting point for shading and
  for textures. Note: for preview render this doesn't give much different
  results yet... this is the start for real render support!

- http://www.blender.org/bf/rt5.jpg
  The two new nodes in action

- Bugfix: the "Block" button (which delivers popups) did not return a
  correct event when nothing happened (mouse moved out), which could
  cause mouse clicks to be passed on to the queue.
2005-12-30 11:25:15 +00:00