* Fix crash entering particle mode, and particles not showing.
Janne, please check the changes I made in psys_cache_paths,
I'm not confident they are correct.
* Fix some warnings
* Diffuse/specular ramps works again.
* Wire is now a material type next to Surface and Halo.
* Removed Volume material type option until it is actually there.
* Some button layout tweaks.
missing commits from peter 20942, 21165, 21170, 21174, 21597
these files still need manual merging
source/blender/makesdna/DNA_sequence_types.h
source/blender/src/sequence.c
source/blender/src/seqeffects.c
source/blender/src/editseq.c
source/blender/include/BSE_sequence.h
Commit of basic architecture. Sorry, nothing fun to play with yet.
Added two events: MOUSEDRAG and MOUSEDROP. MOUSEDRAG is sent when left-mouse clicking and then moving the cursor and every time the cursor is moved until the user releases the mouse button, thus generating a MOUSEDROP.
Also added two dummy drag operators in view3d and outliner (place holders for now).
Brecht and Ton: feel free to check/edit especially the event system code. I'm not sure that's the right way to do it. Also, I'm getting some mem leaks which I suspect are caused by my code.
Outliner: brought back to near full functioning:
- proper operators, like for open/close items, exec operations
(note: select is still same operator as activate, should
become modal ops later)
- rename works again (ctrl+click)
- proper notifiers for redraws
- select / extend select works again
- editmode in/out works again
- enter key opens/closes again
- right mouse operations work again
Didn't do:
- options for Sequence strips
- signals to change button views on clicks
- error/warning messages
UI:
- added new uiButSetRenameFunc(), which passes on the old name
- added uiButActiveOnly(), which ensures a button gets created in
active state, and gets removed when used. Needed for editing
names in outliner.
Andrea: check outliner.c for uiButActiveOnly(), very easy to use!
Also:
- Added posemode operator, CTRL+TAB tied to it.
* Armature:
- added: fill, merge, separate
- renamed: duplicate, align
* Pose:
- added: apply pose
* Armature Edit menu has been converted to use operators/layout now
- shift+b in the console would do border zoom (rather then upper case B), fixed by making v2d's border zoom check if the v2d's zoom is locked.
- blender in debug mode registers all operators, useful for testing.
* Some Code cleanup.
* Added 3-Split Operator into the panel and some options (which don't work yet)
* Added RNA for RegionView3D lock and box options.
* 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.
* A number-counter cursor is now used while sampling the curve
* Fixed some of the drawing errors with the paths. Unfortunately, when the armature is rotated, the path text is drawn in the wrong places still...
* Changed update callbacks for several armature properties to do proper depsgraph flushing instead of sending redraw notifiers
* Wrapped preview-range settings for Scene
* Fixed bug with 'parent-type' enum menu for Object parent-type. The problem here was that PARSKEL was used and is still used for both Armatures and Lattices, but the lattice entry would always override armatures entry. Now, when dynamically building the list to display, the function to add these is given the specific item to use, and has been made to stop after the first match has been added. Hopefully this doesn't break anything else...
* Insert Keyframes menu now only displays the 'active keyingset' entry when there are some KeyingSets.
* Moved the validation code for auto-blending/extend modes to NLA editor code, and included calls for this in many of the editing tools for NLA strips.
* Removed obsolete 'ID_IPO' entries from RNA-ID wrapping (these were commented out anyway).
* Auto-blending (blend in/out values get determined based on 'overlaps' of strips) now occurs after transforming strips. Where islands (continuous chains of strips) occur, only the ones on the ends of the islands will get or contribute to auto-blending.
* Extend modes (other than 'nothing') now get automatically determined (after transforms) so that moving strips will no-longer cause problems.
* Added a new option to hide influence curves in NLA. Also, made the line widths for these curves narrower, since the old setting was too ugly.
* Pose copy/paste buffer now gets freed on exit
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.
* Fix issue where it would automatically scroll when collapsing panels.
* Fix panel dragging not taking zoom level into account.
* Fix enum menu having too small default width in headers.
* Fix tooltips not showing shortcuts etc. if there was not tooltip
defined for the button.
* Fix some refresh issues with color ramps.
* Add a bit more space between columns in the layout engine.
* Make scrollers darker so they are less distracting, and highlight
instead of reverse shading when dragging.
* Buttons header: made tab buttons bigger, remove view menu,
replaced by RMB menu in main region.
* Timeline header: tweak button placement and alignment, added
a play reverse icon.
* Window type chooser menu: removed audio and scripts windows,
change console and logic icons.
* Node space: disable the channel region until it is used.
calling rna functions with the wrong argument type would raise an error like..
expected a string type
Added an error prefix so now the message is..
TypeError: UILayout.item_enumO(): error with argument 3, "value" - expected a string type
Particle point cache can now be loaded from external files.
- Activated by "external" checkbox in cache panel and giving proper folder path and file name identifier.
- External cache panel has controls for particle emission start, end, lifetime and random lifetime. These should be set according to the external data for correct playback.
- External files should be named "identifier_frame_index.bphys" or "identifier_frame.bphys" where:
* "identifier" is a freely choseable name.
* "frame" is the cached frame number.
** Six digits padded with zeros!, for example "000024".
* "index" can be used to tell caches with the same identifier apart.
** Two digits starting from zero.
** The index and the underscore before are optional. If no index is present the index number in ui should be set to -1.
- Cache file format is pure floating point numbers (in binary, not text!) with each particle's data one after the other with the following data members:
* 3 floats: particle's location vector
* 3 floats: particle's velocity vector (per second)
* 4 floats: particle's rotation quaternion
* 3 floats: particle's angular velocity vector (per second)
* 1 float: frame of the actual data (this can be non-integer for particles that are born or die between two integer frames, but otherwise should be the same as the "frame" in the file name)
- Cache files don't have to exist for each frame.
* Frames without actual data are interpolated from surrounding frames that have data (extrapolation is not supported).
- Cache file formats with extended (or reduced even) data members are in future plans for easier usage.
- Current code only does particles, don't yet know if it's applicable to cloth or sb.
- Known issue: endianness can't yet be handled in any way.
Other changes:
New hard limits for many particle parameters. Some examples:
- Maximum amount of particles: 10M particles :) And before you all go and crash your Blender trying this out remember that this limit is only for those freaks who really have the machine power to handle it. 10M particles alone take around 2.2 Gb of memory / disk space in saved file and each cached frame takes around 0.5 Gb of memory / disk space depending on cache mode.
* Known issue: To actually use this many particles they most likely need to be allocated in parts as taking hold of a 2.2Gb chunk of memory at once is probably not ok with any operating system.
- Maximum amount of children: 100k children/particle (1T childparticles here we come :D)
- Kink frequency: -100k to 100k half-rotations (really strange the previous limit was only from zero upwards)
- Path draw steps: 10 (power of 2 remember)
- Path render steps: 20 (power of 2 also!! If over 1M segments doesn't get you smooth paths then I think nothing will!)
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.