Age | Commit message (Collapse) | Author |
|
tool buttons to fit a threshold value in.
also changed the way areas/perimeter and lengths are compared so it will be indipendant of scale.
|
|
Added the following to the 'select' menu of 3d header and toolbox while in mesh editmode: '
-Path Select
-Edge Loop Multi-Select
-Edge Ring Multi-Select
-Loop to Region
-Region to Loop
Also added Collapse Faces and Collapse Edges to menu and toolbox as well as made them available in selection modes other than face exclusive and edge exclusive.
|
|
Currently only works for faces.
Try Shift+G in face/editmode.
|
|
- Bug fix: the upper tile in a collumn for Panorama render didn't put the
mainthread to sleep properly. Now panorama renders 25% faster if you had
set Y-Parts to 4.
- Enabling Compositing in Scene for first time now adds a "Composite" node
too, so render output gets applied.
- An attempt to render with "Do Composite" without "Composite" node will
throw an error and stops rendering. In background mode it will just not
render at all, and print errors.
- Errors that prevent rendering now give a popup menu again.
- Having MBlur or Fields option on will now normally render, but with an
error print in console (not done yet...)
|
|
on reading the function looks like it is instead meant to select isolated edges and verts - doh! so changing back to previous...
|
|
3773 - toolbox function name of 'select - non-triangles/quads'
changed to 'select - non-triangle/quad faces'
for clarity (user expected it to select verts and edges from the name)
|
|
(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.
|
|
smooth and bevel shortcuts listed in menus and toolbox were incorrect.
no new functionality
|
|
non-existant windows, causing crash for example in Action window for shapes
|
|
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.
|
|
|
|
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!
|
|
|
|
Comment:
Clear all events so tooltips work, this is not ideal and
only needed because calls from the menu still have some events
left over when do_clever_numbuts is called.
Calls from keyshortcuts do not have this problem.
|
|
|
|
Commented out crufty name spesific actions that changed variables and added a label of buttons started with "Rot" - Since panels are used for rotating now.
|
|
editmode selection tools. The documentation can (currently) be
found here:
http://mediawiki.blender.org/index.php/Requests/SharpFlatSelect
|
|
First note; this is a WIP project, some commits might change things that
make formerly saved situations not to work identically... like now!
------ New Material integration ------
Until now, the Node system worked on top of the 'current' Material, just
like how the Material Layers worked. That's quite confusing in practice,
especially to see what Material is a Node, or what is the "base material"
Best solution is to completely separate the two. This has been implemented
as follows now;
- The confusing "Input" node has been removed.
- When choosing a Material in Blender, you can define this Material to be
either 'normal' (default) or be the root of a Node tree.
- If a Material is a Node tree, you have to add Nodes in the tree to see
something happen. An empty Node tree doesn't do anything (black).
- If a Material is a Node Tree, the 'data browse' menus show it with an
'N' mark before the name. The 'data block' buttons display it with the
suffix 'NT' (instead of 'MA').
- In a Node Tree, any Material can be inserted, including itself. Only in
that case the Material is being used itself for shading.
UI changes:
Added a new Panel "Links", which shows:
- where the Material is linked to (Object, Mesh, etc)
- if the Material is a NodeTree or not
- the actual active Material in the Tree
The "Node" Panel itself now only shows buttons from the other nodes, when
they are active.
Further the Material Nodes themselves allow browsing and renaming or adding
new Materials now too.
Second half of today's work was cleaning up selection when the Nodes
overlap... it was possible to drag links from invisible sockets, or click
headers for invisible nodes, etc. This because the mouse input code was
not checking for visibility yet.
Works now even for buttons. :)
|
|
|
|
-> Any Group Duplicate now can get local timing and local NLA override. This
enables to control the entire animation system of the Group.
Two methods for this have been implemented.
1) The quick way: just give the duplicator a "Startframe" offset.
2) Advanced: in the NLA Editor you can add ActionStrips to the duplicator
to override NLA/action of any Grouped Object.
For "Group NLA" to work, an ActionStrip needs to know which Object in a
group it controls. On adding a strip, the code checks if an Action was
already used by an Object in the Group, and assigns it automatic to that
Object.
You can also set this in the Nkey "Properties" panel for the strip.
Change in NLA: the SHIFT+A "Add strip" command now always adds strips to
the active Object. (It used to check where mouse was). This allows to add
NLA strips to Objects that didn't have actions/nla yet.
Important note: In Blender, duplicates are fully procedural and generated
on the fly for each redraw. This means that redraw speed equals to stepping
through frames, when using animated Duplicated Groups.
-> Recoded entire duplicator system
The old method was antique and clumsy, using globals and full temporal
copies of Object. The new system is nicer in control, faster, and since it
doesn't use temporal object copies anymore, it works better with Derived
Mesh and DisplayList and rendering.
By centralizing the code for duplicating, more options can be easier added.
Features to note:
- Duplicates now draw selected/unselected based on its Duplicator setting.
- Same goes for the drawtype (wire, solid, selection outline, etc)
- Duplicated Groups can be normally selected too
Bonus goodie: SHIFT+A (Toolbox) now has entry "Add group" too, with a
listing of all groups, allowing to add Group instances immediate.
-> Library System
- SHIFT+F4 data browse now shows the entire path for linked data
- Outliner draws Library Icons to denote linked data
- Outliner operation added: "Make Local" for library data.
- Outliner now also draws Groups in regular view, allowing to unlink too.
-> Fixes
- depsgraph missed signal update for bone-parented Objects
- on reading file, the entire database was tagged to "recalc" fully,
causing unnecessary slowdown on reading.
Might have missed stuff... :)
|
|
Works like for Object layers, but local within Armature itself. Each Bone
can be in (16 now) any layer, and the Armature layer defines what is
visible or not. Also note that hiding will still work too.
Since the Blender code is *stuffed* with Bone options now, this commit
requires a good test if all tools we got now comply to layers...
(I counted 130 cases for checking for selected Bones in code!)
In PoseMode; hotkey M will show 'movetolayer' menu. Not in editmode...
then its the mirror menu.
Todo: make action/nla drawing comply to Armature layer settings.
|
|
Patch prvovided by Guillermo, code was - afaik - from Rob Haarsma.
This changes the toolbox (space menu) to have the first level aligned
vertically. Works much easier that way, and since the items open either
left or right, it doesn't flip order of the contents for it either.
To allow people to test (and to compare) it's a user menu setting (in
View & Controls, "Plain menus"). I've turned this on by default though,
since I propose to not have it a user setting. User setting can be
removed later.
Fixed two bugs in patch:
- if saved in user settings, first time usage of this toolbox opened in
wrong location
- Button for "plain menus" was writing a short in an int
(causing this new menu not to work for big endian systems)
As a bonus I've added the long wanted hotkey support for opening and
closing sublevels of pulldowns with arrow keys!
I didn't add the commenting out of correcting pulldown menu order, which
is based on location of the originating button in the UI. This uncommenting
didn't solve anything, since button definitions itself can be flipped too.
(Example: the data brose menus in top bar need to be corrected).
I can imagine the order flipping is sometimes annoying, but it still has
reasons to be there;
- the most important / most used items are always closest to the mouse.
(like opening properties panel, or "Add new" for material.
- it follows muscle memory and 'locus of attention' (mouse position).
- menus are configured to open to the top for bottom headers, and to the
bottom for top headers. We can expect the UI is configured consistantly
for headers, so in general the menus will appear consistant as well.
Where menu flipping fails is especially for alphabetic listings, like in
the menu button of fileselect. However, that one should be configured to
open by default to the bottom, so ordering is consistant as well.
If people like to check this themselves; uncomment the lines in the top
of the function uiBlockFlipOrder() in src/interface.c
|
|
that only had hotkey access before and tweaking organisation of new stuff.
|
|
While using automatic IK, a pending redraw event could draw the buttons
window again, reveiling the temporal IK buttons. Using them, after grab,
caused a crash.
Also: noticed that the undo push for transform is called too early, so it
saves the state before 'special_after_trans' was called.
Also: in editmode armature, changed shift+A "Bones" in "Bone".
|
|
tools a nice little home in the 3D View header/toolbox
transform menu. Death to button-only actions!
|
|
- Added subdivide sck upport for vertex groups
- Brought back subdivide-smooth, but it doesn't work as good as before yet,
it used to catch an exception for subdividing the middle vertex of a quad,
with edge-based subdivide it's not that simple. Will check later.
- made "number of cuts" a static variable, so it doesn't jump back to 2
all the time
Coder level notes:
- removed the old subdivide code (yay, over 30k code less!)
- did some minor layout cleanups in the new code (just consistant syntax)
- removed redundant code parts, to enable smooth & vgroup subdiv
- subdivide smooth can do multiple cuts too, but i like to see that only
as option when our smooth formula is good!
Compliment:
I think Johnny really made comprehensible design and nice code here. Was a
joy to work with. :)
|
|
in the 3d view header and toolbox.
|
|
( http://mke3.net/blender/interface/controls/error_ok_icons.png )
A bit nicer and quick to visually recognise at a glance
|
|
menu/toolbox/3d view menu so you don't always have to keep switching back to edit buttons.
|
|
- Toolbox item for shaded mode had wrong hotkey
- Added countall() for select menu stuff (in 3d header, groupmenu)
That way the stats in infoheader are updated.
- Tooltip was wrong for X-axis mirror mode Armatures
|
|
In face select mode, select faces by triangle/quad/other.
Available through header menu, toolbox, or hot keys.
Hot keys are:
ctrl-shift-alt-3: Select all triangles
ctrl-shift-alt-4: Select all quads
ctrl-shift-alt-5: Select all non-triangles/quads
(maybe a bit sore for the wrist)
And also available through the menu/toolbox.
I've never used f-gons so I don't know if the 'select other'
function works there (or works at all, for that matter).
|
|
- Option is in EditButtons, Armature panel.
- Currently only local X-axis mirror (seems to be default anyway)
- Transform then applies changes to the mirrored-name bone as well.
- Extrude: also does the counterpart Bone
- New: SHIFT+E extrude: extrudes 2 mirrored Bones out of a normal Bone.
(creating names by appening _L and _R)
Or in short: you can now model a full rig without any manual naming!
Of course the names are not too nice... a couple of ideas to explore;
- rename a mirrored bone renames counterpart too
- allow in weightpaint mode to select Bones
- and of course mirrored edit in PoseMode (if that's useful...)
Important note: I tweaked the naming convention a bit; names like
Bone_L.005 and Bone_R.005 are considered counterparts. However, if
you use the "Flip names" option, the number extension is still
truncated.
BTW: Commits in Zr's code are fixes for gcc warnings. :)
|
|
Also add menu items for Edgeloop Delete
|
|
- remove python access to Optimal and Subsurf flags (they don't
work this way anymore, I suppose need to replace with python
access to modifiers but not going to do right now).
- removed interface access to OPTIMAL mode, needs to be rethough...
this means at the moment subsurfs outside editmode always draw
and render all edges
|
|
- switched almost all uiDefBut(..., TOG|BIT|..) to use UiDefButBit and the
name of the actual bit define instead of just a magic constant, this makes
searching the code much nicer. most of the credit here goes to LetterRip
who did almost all of the conversions, I mostly just checked them over.
|
|
with MSVS 8)
- broke mesh_create_shadedColors out of shadeDispList, used to
build vertex colors for mesh in vpaint as well (also fixed
bug where they were not initialized correctly for subsurfs)
- added modifier_copyData and modifier_findByType functions
- change editmode modifiers to only calculate if Realtime and
Editmode bits are both set, makes more sense for copying
modifiers
- update object_copy to correctly copy modifiers
- removed duplicate redefinition of ME_ attributes in python,
this is a horrible idea, why was it done in the first place?
- update armature auto vertex group code to check for subsurf
in modifier stack
- fixed flip_subdivision to work with move to modifier stack
- added copymenu_modifiers, can copy all modifiers or just
data from first modifier of a certain type (not sure how
to deal with multiple modifiers of same type... not
a big issue though I think)
|
|
|
|
- mesh drawing calculated derived surface before clipping to view matrix,
waste for offscreen objects
|
|
still a makeDispList that dispatches to the appropriate one.
makeDispList is on the way out and this makes it easier to track down
exactly which places use makedispList and for what types of objects.
- switch calls to makeDispList to appropriate more specific function (if
the object type is known by caller).
- added mesh_changed function that invalidates cached mesh data (but does
not rebuild, mesh data gets rebuilt on access). Most old calls to
makeDispListMesh use this instead now.
|
|
Ton has been pushing me to get this in and finish it up with help, so here is a run down of the commit
Revised Features
Subdivide now is Edge based, allows for multicut
Loopcut was recoded, now has multi option
Knife tool now has multi option
New Features
Edgeslide
Edgering select
Removed Features
Alt-B Edgeloop selection (use alt-RMB in edgemode)
Shift-R Faceloop selection (use alt-RMB in facemode)
Old Subdivide (Except for smooth which is left in until new one works)
Todo
Subdivide Smooth Math is broken - could use some help here (look for alter_co in editmesh_tools.c)
Tweak mouse control of Edgeslide is hackish ATM
Add Non-proportional movement to edgeslide
Add smooth option to new loopcut
I probably left something out.
See here for more info
http://wiki.blender.org/bin/view.pl/Blenderdev/EdgeSubdivision
|
|
Typo in toolbox, editmode curve, "set vector handle" should be hotkey V.
|
|
- Splited off the event treatment into a fonction of its own
- Splited off the initialisation phase into a function of its own (will have to do it for the manipulator function too)
Calling transform now works like this:
initTransform(mode, context)
- possible post init calls, constraints mostly
Transform()
- eventually, the postTransform function, so that Transform is just a simple big loop which could in the end just be tied in the blender event system instead.
- Added a state variable in TransInfo to replace the ret_val local variable. Possible values are: TRANS_RUNNING, TRANS_CANCEL, TRANS_CONFIRM
- Tied MMB and the hotkey select for constraint together, so selecting an axis with MMB and pressing the axis key after that goes to local mode on that axis. Much less confusing.
|
|
Main change is that it's an own Space type now, not part of the Audio
window... the audio window should restrict to own options. This way
functionality is nicely separated.
Since it's the first time I added a new space (since long!) I've made an
extensive tutorial as well. You can find that here:
http://www.blender3d.org/cms/Adding_new_Space_Window.557.0.html
Notes for using timewindow;
- Add time markers with MKey
- CTRL+M gives option to name Marker
- Markers cannot be moved yet...
- Pageup-Pagedown keys moves current frame to next-prev Marker
- Xkey removes Markers
- If an object has Ipos or an Action, it draws key lines
- CTRL+Pageup-Pagedown moves current frame to next-prev Key
- Press S or E to set start/end frame for playback
Notes about the implementation in Tuhopuu:
- Add new Marker now selects new, deselects others
- Selecting Marker didn't work like elsewhere in Blender, on click it
should deselect all, except the indicated Marker. Not when holding SHIFT
of course
- Not exported functions are static now
- Removed unused defines (MARKER_NONE NEXT_AVAIL)
- Drawing order was confusing, doing too many matrix calls
- Removed not needed scrollbar, added new function to draw time values.
(Has advantage the MMB scroll works not confusing on a scrollbar)
- Added proper support for 'frame mapping'
- The string button (name Marker) had a bug (checked str[64] while str
was only 64 long)
- String button itself didn't allow "OK on enter"
- Made frame buttons in header larger, the arrows overlapped
- Removed support for negative frame values, that won't work so simple!
|
|
Proportional edit:
- Proportional mode added to header as button/menu. Including new option
to have only connected geometry influenced.
- Added icons for proportional & proportional modes
- Make proportional edit data part of Scene, so all gets saved.
The Global flag G_PROPORTIONAL was removed
- Made sure #defines get used properly, also tweaked order for proportional
so it starts with regular 'smooth' by default.
- Use ALT+O in editmode to switch to new proportional 'connected' mode
Other UI stuff:
- in EditMode, the layer buttons get hidden... the amount of icons in
3d header grows to fast. :)
- made less ugly icons for the Manipulators. Still can be better.
- Added alpha-filter for pre-processing Icon-image, giving nicer display
of icon-antialising on dark or bright backdrops
- disabled Manipulators when in editmode, and current layers don't show
the edited data.
- Added the value used to define Normal size (editmode draw) in Scene too,
so it gets saved.
|
|
- added in new transform the (not so useful but yah) old feature that
does scrollwheel zoom during transform
- had to change transform call arguments for uv-window/sequence/oops to
match new transform for mouse callback
TODO (for martin?)
- pulldown menu support to call with local axes compliant as for pressing
it with hotkey
- mirrormenu() still uses old transform stuff...
|
|
For tex space edit, crease (soon) and future use.
Manipulator assumes no context.
|
|
NOTE: BLI_winstuff.h was meant to be a wrapper around windows.h to handle
undefining various crap that windows.h defines. Platform specific headers
should only have to be included in a few places. This reduces the number
of inclusions of BLI_winstuff.h to 16 which is a much more reasonable
number (than the 144 or whatever it used to be)
|
|
lot of casts, added prototypes, missing includes and some true errors
|
|
- added texture space grab/scale (TKEY objectmode)
- made new transform work with menus (meaning, dropping dreaded while-hold)
To Martin & other while-hold lovers: this needs to be carefully thought over
and designed. I prefer to look on this within context of making transform
fully tablet/pen friendly, as option. Aim now for me is still: get transform
back to work! :)
|
|
|