- They were causing unnecessary visual noise, breaking up the lines of the region edges
- Now you can just drag anywhere on a region edge to resize it, like existing area edges
- To minimise a region, click once on the region edge, or resize it down to nothing. For minimised regions, a (+) icon will appear, which you can click to restore it to the size it was before it was minimised.
Made some UI operators not register themselves in the console. This made macro creation a pain because the operator list would have tons of splits and other UI commends mixed in with actual data manipulation.
Moved Repeat Last from Ctrl-R to Shift-R so it doesn't conflict with loop cut, whenever it is added.
Moved to modern OS standards for opening, saving, copying, pasting, cutting (text), new document, undo and redo.
For Mac users, Cmd is used in addition to the Ctrl-based shortcuts.
These changes are made according to an agreement among developers on IRC.
bpy.data, bpy.ops.object etc.
- added basic docs for bpy.props
- omit panel, menu and operator classes (took up too much space and not useful)
- exec cant be used as an operator suffix eg- CONSOLE_OT_exec --> CONSOLE_OT_execute (same for file)
- fixed some crashes when generating docs
Updated docs here
http://www.graphicall.org/ftp/ideasman42/html/
Saving/Loading:
Save - Ctrl S / Cmd S
Save As - Ctrl+Shift S / Cmd+Shift S
Open - Ctrl O / Cmd O
Open Recent - Ctrl+Shift O / Cmd+Shift O
New File - Ctrl N / Cmd N
Text:
Copy- Ctrl+C / Cmd+C
Cut- Ctrl+C / Cmd+C
Paste- Ctrl+V / Cmd+V
Select text- Ctrl+A / Cmd+A
Misc:
Repeat Last Op - Ctrl+R / Cmd+R
Render - Ctrl+Return / Cmd+Return
Render Animation- Shift+Ctrl+Return / Shift+Cmd+Return
User Preferences - Ctrl+Comma / Cmd+Comma
Changed the important search menu to Space key.
Old hotkeys are still preserved, at least for now.
possible from python, but it's still work in progress.
Pointers and collections are restricted to types derived from
IDPropertyGroup (same as for operators), because RNA knows how to
allocate/deallocate those.
Collections have .add() and .remove(number) functions that can be
used. The remove function should be fixed to take an other argument
than a number.
With the IDPropertyGroup restriction, pointers are more like nested
structs. They don't have add(), remove() yet, not sure where to put
them. Currently the pointer / nested struct is automatically allocated
in the get() function, this needs to be fixed, rule is that RNA get()
will not change any data for thread safety.
Also, it is only possible to add properties to structs after they have
been registered, which needs to be improved as well.
Example code:
http://www.pasteall.org/7201/python
Stablity commit: on render, all running jobs are stopped now (previews,
composite, screencast). First render has to be more threadsafe, to allow
multiple renders simulatenously.
* Use scene->r.audio instead of scene->audio everywhere, was using both still.
* Fix time_top_left_3dwindow link error, not sure why this happens, somehow
with scons building it seems that files (like time_header.c) wich are not
called from the same .a module get stripped?
* Move sound_init to make sure it gets called everytime user
preferences is reloaded.
* Merged sound_reinit and sound_init. One used user preferences
while the other did not, don't see the point of this, so just
made it always use user preferences now.
* Timeline header audio sync option now controls scene flag
rather than timeline flag. Since it uses the same playback
operator now, there is no distinction anymore.
* Added boolean property sync to animation play operator, to sync
with audio or not. Uses scene setting if property is not set.
* Playback stop button in info header now calls operator, so sounds
stop playing too.
Muscle flexing commit; put the "any key modifier" to work, also exposed
(ugly) in keymap editor. Notes for it works:
- You can use any keyboard key to become modifier now (not mouse buttons)
- But, if this key was assigned to be a regular hotkey, that still gets
triggered, obviously.
- So: only use unused keys for this, like "~" or other special ones?
For test fun: L+K now does animplay.
* Pose mode was already object-localized, but moved the flag from object->flag to object->mode, with all the other modes.
* Updated object mode RNA
* Commented out some dubious use of base->flag with the posemode flag. So far as I could see the value was only being set, not read, so a hopefully safe change.
Implementation Note:
* Moved the scene copy/unlink code back into blenkernel, with
the exception of the copy single user stuff which is still in
object_edit.c.
* Uses SCREENDELETE notifier like SCREENBROWSE, seems only clean
way to do this now.
* Added some optimisations to avoid having to try evaluating some data that won't have any effect.
* Converted playback buttons in timeline header to use operators too
* When doing realtime recording of animation (i.e. transforming objects + bones while animation playback is running, and auto-keying is enabled), animation will be added to a new NLA Track+Strip combo everytime a single 'loop' of the frame range has finished. This will allow 'passes' over the animation to be less destructive.
* Made the evaluation of the active action (when NLA data is present), be handled as part of the normal NLA system evaluation code (as if it were just another strip in a track at the end). The immediate benefit is that there are now some settings (available in the "Animation Data" panel in the NLA Editor with a strip selected) which allow for the way the active action is combined with the NLA stack results. For instance, the way that the action extrapolates is used in the recording tweaks above.
- It is possible to work with MetaBalls in edit mode now
- Added basic UI to the button window (feel free to change it :-))
- Header menus should work
- Undo & redo should work
- Removed global variable editelems and lastelem (moved it to the MetaBall struct)
- All tools from old editmball.c was converted to the operators
- Added lastelem to the RNA
- Experimental: mb->editelems is only pointer at mb->elems or NULL (depends on Mode). ListBase of MetaElems is not duplicated in edit mode.
Tested with scons at Linux and mac OS X
TODO:
- Recalc data after Undo or Redo
- Solve issue with basic MetaBall and Python UI script (only base MetaBall object influence Wiresize and Threshold)
- Fix orientation of manipulator in "Normal mode"
* Fix crash loading particle AnimData. This crashed many BBB
files. If you have a .blend file that crashes when loading
it in 2.5, please mail me, I'd like to know.
* Image window zoom ratio did not work correct with py 2.x.
* Other minor fixes for image window RNA.
* Buttons window now remembers the tab that was last clicked
by the user, even if that tab is no longer available due
to context, and then enable the tab again if the context
for it is back.
* Cleaned up buttons space DNA a bit, removing unused vars.
* Armature bone rename outside edit mode did not call right
function yet.
* Armature layers are now editable even if lib linked. This
is useful for proxies. For this purpose a PROP_LIB_EXCEPTION
flag was added. Need to think over proxy / RNA a bit though,
not sure what the requirements are yet.
* Parent to Armature Deform now has options to create vertex
groups, instead of always creating them.
This is implemented at the Screen-level, and only considers scene and active-object keyframes (like the timeline).
TODO:
* Need to update the timeline header buttons to use this operator. One limitation is that I can't get the buttons there to take an arg...
New feature: allowing to open temporarily windows for output.
Implemented for:
- Render output (use output menu "new window" option).
- User Preferences (alt+U, plus added in 'File' menu)
Currently the window opens where your mouse is. The Render window
works as usual, with ESC or F11 moving it to back or front again.
That allows the window position to remain where you moved it on
new renders.
If you close a render window when it renders, the render thread
will be killed.
User prefs show 'info window' now... i thought we'd use outliner?
Anyhoo, I've made the 'save settings' to close the 2nd window as
well.
Opening a secondary file window for save I'll check on later,
this has to be checked with the current event system still.
the WM_window_open_temp() api call for this maintains currently
a *single* temp window. If you have a render window open, and call
for the preferences, the render window will be used for it. And
the other way around.
On closing the blender window, the temp windows close automatically
when there's no regular window open, and blender quits.
An engine to use for output can now be selected an influences what
shows in the buttons window, only showing relevant data. The idea
behind this is to make it more clear what is supported where, make
the system more pluggable for external render/game engines, and save
space hiding stuff that is not relevant anyway.
* Top header now has an engine menu, to choose between the blender
render engine, game engine, and other future external engines.
* If the game engine is enabled, the buttons window should show
only properties that work in the game engine, and similarly for
the render engine.
* Moved panels from the logic space and game tabs to the physics,
scene and world tabs instead, and removed the game tab.
* Materials and textures tabs should eventually become game
specific too, to better show what is supported.
* Clean up File menu, added back recover last session op.
* .blend compress now behaves a bit different, previously
it would only respect the user preference. Now it saves
existing files the same way they are saved, and new files
following the user preference. The save operator has a
Compress toggle in the file browser left panels now.
* Add menu working again, some fixes to make these operators
work outside the 3d view were needed.
* Timeline menu removed, its contents will be moved to the
timeline header menus.
* Game menu can now start game, changed the start game op
to choose another 3d view if none is available.
* Render menu has a few items now.
* Help menu contains a few links again.
This adds a RenderEngine type to RNA, which can be subclassed
in python (c++ will follow once we support subclassing there).
It's very basic, but plugs into the pipeline nicely. Two example
scripts:
http://www.pasteall.org/6635/pythonhttp://www.pasteall.org/6636/python
Issues:
* Render runs in a separate thread, and there is unrestricted
access, so it's possible to crash blender with unsafe access.
* Save buffers and full sample are not supported yet.
Modal keymaps.
I've tried to make it as simple as possible, yet still using sufficient facilities to enable self-documenting UIs, saving/reading in files, and proper Python support.
The simplicity is: the 'modal keymap' just checks an event, uses event matching similarly to other keymap matching, and if there's a match it changes the event type, and sets the event value to what the modal keymap has defined. The event values are being defined using EnumPropertyItem structs, so the UI will be able to show all options in self-documenting way.
This system also allows to still handle hardcoded own events.
Tech doc:
1) define keymap
- Create map with unique name, WM_modalkeymap_add()
- Give map property definitions (EnumPropertyItem *)
This only for UI, so user can get information on available options
2) items
- WM_modalkeymap_add_item(): give it an enum value for events
3) activate
- In keymap definition code, assign the modal keymap to operatortype
WM_modalkeymap_assign()
4) event manager
- The event handler will check for modal keymap, if so:
- If the modal map has a match:
- Sets event->type to EVT_MODAL_MAP
- Sets event->val to the enum value
5) modal handler
- If event type is EVT_MODAL_MAP:
- Check event->val, handle it
- Other events can just be handled still
Two examples added in the code:
editors/transform/transform.c: transform_modal_keymap()
editors/screen/screen_ops.c: keymap_modal_set()
Also: to support 'key release' the define KM_RELEASE now is officially
used in event manager, this is not '0', so don't check key events with
the old convention if(event->val) but use if(event->val==KM_PRESS)
- 1st stage: Linear Workflow
This implements automatic linear workflow in Blender's renderer. With the
new Colour Management option on in the Render buttons, all inputs to the
renderer and compositor are converted to linear colour space before
rendering, and gamma corrected afterwards. In essence, this makes all
manual gamma correction with nodes, etc unnecessary, since it's done
automatically through the pipeline.
It's all explained much better in the notes/doc here, so please have a look:
http://wiki.blender.org/index.php/Dev:Source/Blender/Architecture/Colour_Management
And an example of the sort of difference it makes:
http://mke3.net/blender/devel/rendering/b25_colormanagement_test01.jpg
This also enables Colour Management in the default B.blend, and changes the
default lamp falloff to inverse square, which is more correct, and much
easier to use now it's all gamma corrected properly.
Next step is to look into profiles/soft proofing for the compositor.
Thanks to brecht for reviewing and fixing some oversights!
* UI layout for scene buttons has quite some changes, I tried to
better organize things according to the pipeline, and also showing
important properties by default, and collapsing less important ones.
Some changes compared to 2.4x:
* Panorama is now a Camera property.
* Sequence and Compositing are now enabled by default, but will only
do something when there is a node tree using nodes, or a strip in the
sequence editor.
* Enabling Full Sample now automatically enables Save Buffers too.
* Stamp option to include info in file is removed, it now simply always
does this if one of the stamp infos is enabled.
* Xvid, H.264 and Ogg Theora are now directly in the file format menu,
but still using FFMPEG. Unfortunately Ogg is broken at the moment
(also in 2.4x), so that's disabled. And Xvid crashes on 64bit linux,
maybe solvable by upgrading extern/xvidcore/, using ubuntu libs makes
it work.
* Organized file format menu by image/movie types.
Added:
* Render layers RNA wrapped, operatorized, layouted.
* FFMPEG format/codec options are now working.
Defaults changed:
* Compositing & Sequencer enabled.
* Tiles set to 8x8.
* Time/Date/Frame/Scene/Camera/Filename enabled for stamp.
Render usability:
- Option back to render to imagewindow, or fullscreen.
The latter is default. Setting is stored in Scene.
- Added button in output panel, the option "to new window" will follow!
- F11 again toggles render view
(moved MS Windows "full screen" to shift+F11 for now)
Animations can now be played back in reverse, by clicking on the reversed-playback button in the TimeLine header beside the play button (NEW ICON NEEDED HERE).
I'm not sure how well this works with sound, but from what I gather, this can be quite useful for animators to use.
* Lattices: properties editable, editmode operators, menus working
again. As a bonus you can now edit u/v/w in editmode.
* Shape Keys: some code cleanup, and added more buttons. The
value/min/max buttons don't work correct yet though.
* Fix issue with uv textures, vertex colors not being visible outside
editmode, and a few other issue. Mesh.edit_mesh is now NULL when
not in editmode.
Menu usage: enabled arrow-key based browsing, especially for open and
close sublevels. Only thing missing is to prevent sublevel to open
on creating menu (like SHIFT+A now), this is design conflict in code.
(It sends fake mouse move events causing it)
Implementation note; the 'auto open sublevel' feature gets triggered
with new state var, that checks if mouse was used or not.
Also: on render in editmode, editmode result gets stored, as usual for 2.4x.