patching versions for UI settings.
Currently four different levels of routines for .blend file reading exist;
/* interface level */
1) BIF_init() -> calls 3
2) BIF_read_file() -> calls 11, optional 4
3) BIF_read_homefile() -> calls 11 or 12, and then 4
4) init_userdef_file()
/* kernel level */
11) BKE_read_file() -> calls 21, and then 14
12) BKE_read_file_from_memory() -> calls 22, and then 14
13) BKE_read_file_from_memfile() -> calls 23, and then 14
14) setup_app_data()
/* loader module level */
21) BLO_read_from_file() -> calls 24
22) BLO_read_from_memory() -> calls 24
23) BLO_read_from_memfile() -> calls 24
/* loader module, internal */
24) blo_read_file_internal()
Note:
- BIF_read_homefile() has additional UI initialize calls, like windows fullscreen and executing commandline options
- Reading from memory (12) only happens for the compiled-in .B.blend
- The "memfile" here is a name I gave to the undo "file" structure. Which is constructed out of memory chunks with basic compression features.
- the kernel function setup_app_data() sets globals like "current screen" and "current scene".
So far, so good. The levels as mentioned here clearly distinguish UI from kernel, and should enable for example game loading (runtime) or background (no UI) loading. In the past years however, 'bad level' dependencies were added, and especially the patches for 'file versions' were added in too many places. The latter is evidently a result of the problem that the "UserDef" struct cannot be initialized/patched if there's not a need for a UI.
Here's how the flow goes in four different cases:
----- Starting up Blender, in foreground with UI --------------------
- creator/creator.c, main() -> calls 1
- If the commandline contains a filename, it calls 11
----- Starting up Blender, in background without UI --------------------
- creator/creator.c, main() -> calls 11 if the commandline has a filename
Note: no Userdef is read, nor initialized. Please note that this was already an existing problem for using Yafray, not setting proper file paths in background mode. The Yafray paths don't belong in the User menu.
----- Starting up Blender as a runtime executable --------------------
This only has calls to 22
----- Loading a file from within the UI (with F1, CTRL+O, using pulldowns) -----
Only calls allowed to 2. It detects if a UserDef has been read too, and in that case the init_userdef_file() will be executed.
Hope this is understandable :)
-Ton-
While going over the code, I found out the "nabla", the size of offset
vectors for calculating derivatives of a texture, is a built in constant.
Even worse, the value was different for new noise types (musgrave etc).
So I've added a new slider for it in the procedural texture panels, which
by default is set to 0.025, the value of the old constant. Also made sure
it works with equal effect in all procedurals.
NOTE: a small Nabla will give sharper, detailed bump, but the effect also
becomes smaller, correct that in the Mapping Panel of materials.
For better & compliant control over the bumpmapping, I've also included
the Colorband output in derivatives calculus, so the bump output then
matches the color created. It's also a nice tool to finetune output of
textures for bumpmapping in general.
Bug fix; clicking on the rightmose 'item' in ColorBand didn't activate it.
Found out the ColorBand was slightly drawn off (2 pixels).
Objects being vertex-parented to a mesh, which in turn was being deformed
by a curve or lattice, were never update correctly.
Whilst this is a typical issue for our beloved new Dependency Graph, I
consider it worth at least solving for now. An issue since Blender 1.0
you know. :)
Solution is only working for this specific case; vertex-parent to deformed
object.
causing weird results on camera moves or object rotations.
Added: support for "normal maps". See for example:
http://members.shaw.ca/jimht03/normal.html
The Image panel in Texture buttons has new option "Normal Map" for it.
When this is used, normals are read straight from RGB values, and blended
with the current normal.
channels to link texture to.
The amount of code changes seems large, but is mostly getting rind of
hardcoded values (6 and 8) for channels, replacing it with MAX_MTEX.
Further did some fixes;
- Ipo for Lamp showed too many mapping channels
- Texture MapTo buttons for lamp missed the slider to blend texture color
- Lamp texture mapping "View" only worked for Spot, now it uses lamp-
view vector for all types. (Nice for projections!)
thanks for that!
- static particles that are being deformed (curve/lattice/armature) now
display correct in 3d window. Only updates when particle system updates
normally though
- static particles without "animate" set didn't deform even
- static particles used as duplicators had errors with extreme low "life"
value for particles. Also, still cases could happen with unrotated duplis
at the end of a static particle line (with Vect option)
- Added tooltip for "Step" option in particles
With material slider "Ray Mir" set non zero, but with toggle "Ray Mirror"
off, Blender accidentally entered a part of raytracing code, screwing up
the alpha value of the result.
In unified render, halos can give black/colored overflows. Found it this
happens with halos that are behind the camera clipping range. Halo clip
just had some weird code for panorama corrections...
In the provided .blend of report found 3 more glitches;
- after render particle system with Material Ipo, values for material were
not restored correctly
- Meshes with particles didn't draw axis (draw extra) on correct location
- Same as above, axis didn't draw in selected color.
- fgets() doesn't recognize DOS strings in unices, made my own fgets
- reading polyline didnt support 3d lines
- reading polyline didn't create edges
All in all, this code isn't very nice and badly structured... a code
review or test (yes sirdude!) could have been useful. :)
Old code in displist.c caused crash on OGL "render this view" option for
3D windows. No idea why this exception was in displist.c... must be for
old engine or so?
Two accumulating errors, causing 'scanline' errors too, but now based on
using different filtering values for transparent shadows.
Was another 2 cases of unused variable render as well. :)
Static-animated particles didn't recalculate on render
when used for duplicators (did work for halos). Allows material/texture ipo
for animated motion.
Lattices seem to have deform lag, when they're animated with Ipos.
Found out this behaviour is already from before 2.25... solved with
removing a where_is_object() from deform code, but dont fully grasp
why.
Tested with good demo file, with motion blur too.
2) No functional changes, just made 2 files compile without warnings;
- added extra ifdefs __NLA_BLENDCON for unused calls
- removed zealot 'const' from function protos and variables, these cannot
work there, and hence gave warnings
- added void pointer casts for array conversions in matrix code
This was caused by a very primitive method of interpolating quaternions.
It was converting quats to mat and back to quat, and then just doing
a linear interpolation. That whilst quaternions are renowned for having
good interpolation possible.
I've experimented with 2 quaternion interpolation methods, and can only
get one to work correctly... the "official" version from Watt brothers
I can't get working, both are in arithb.c now.
Will arrange *close* review with experienced NLAers for it! But testing
here gives fully predictable results.
Also changed;
- added pointer check in drawaction
- changed puldown menu for correct hotkeys for move NLA strips up/down
MetaElems aren't truncated. It was caused by bad filling of octal tree.
- bug fix: when non basis mball is in edit mode, then it is polygonised again.
- bug fix: fixed some other unexpected disappearing of MetaBalls caused by bad filling of octal tree.
Texture matrix bug in plugin code reported by Mel_Q.
Vertex colors, this was basically the same as the previous uv coord
splitting bug, for xml export, uv coord splitting was actually not quite
complete either (reported by richie).
Added:
Camera Ipo curves for DoF aperture and focal distance.
Aspect ratio set with AspX & AspY are now taken into account as well.
(needs yafray from cvs)
Bokeh parameters for DoF (also needs yafray from cvs).
'Bokeh' controls the shape of out of focus points when rendering
with depth of field enabled.
This is mostly visible on very out of focus highlights in the image.
There are currently seven types to choose from.:
'Disk1' is the default, the same as was used before.
'Disk2' is similar, but allows you to modify the shape further with the 'bias'
parameter, see below.
Triangle/Square/Pentagon/Hexagon, in addition to the bias control, you can
offset the rotation with the 'Rotation' parameter (in degrees).
'Ring', a weird ring shaped lens, no additional controls.
The 'bias' menu controls accentuation of the shape.
Three types available, uniform, center or edge, with uniform the default.
Although based on an actual phenomenon of real camera's, the current
code is bit of a hack and not physically based, and doesn't work all that
well yet (in yafray anyway). Since this is also mostly visible in the very
out of focus parts of the image, it usually also means that you need lots
of samples to get a reasonably smooth result.
- ALT+U undo menu shows history for global undo as well
- Added undo pushes for buttons window more consistantly
- Added it & tested for ipowindow too
- Added it in outliner
- And quite some missing occasions for 3d window editing
(prevents crash reported by sgefant!)
- Selection outline for Curve objects didnt draw right after leave
editmode
- outliner now default when first viewing Oops window (dangerous?)
- Zoom with ctrl+middlemouse works in Oops again
hopefully prevents weird results in grabber... error was that the
editNurb was not used for triangulating.
Also; added drawing the wire as extra in solid display editing curves...
that for unfilled curves as well.
Colorband sliders now activate automatic on a click closer than 12 pixels
away from it. No more clumsy 'act' button stuff.
BTW: Error in utildefines.h, ABS() was defined incorrect.
- in Solid draw mode, curves without faces draw as wireframe now
- in Solid draw mode, curves without faces don't get fat outline on select
- in Solid draw mode, editing curves shows filled now!
CIRCLE, ARC, ELLIPSE and LWPOLYLINE.
I made some modifications to it to clean it up a bit.
I entend to do some more dxf stuff in the near future but figured
this is ready to go for now, and trying to clean up a bunch of small stuff
I've had sitting around for awhile. ;)
Kent
adds new features for indenting and commenting.
Note: I am not sure if the best menu spot for these features
is under the Select menu, but we can argue about that later.
They do work on a selection, though.
from the mailing list post:
1&2. Added Indent/Unindent under Edit->Select
just select the text you want to indent and go to the menu (
note if nothing is selected Indent will just indent ( tab )
the line the line )
3&4. Added Comment/Uncomment to the same menu
same applies as above
5. Added Tab setting on the menu bar in text editor
Sets the number of spaces a tab ==
changing the setting will change the hole script
6. Added Auto indent
when you hit enter it goes to the next line at the same
tab number and the line above it ( needs more testing and input)
Field render, and field option for image texture, had error due to
returns in middle of calls... this bug was there already for long
while, not much used eh ;)
weakness in design.
Issue was: if you delete the 'mother metaball', which is an object with
name without a number, the entire metaball family isn't polygonized. Sofar
so good, where it not that rendering still worked, because it searches all
objects in the scene for a family member with lowest name.
Doing such a search within the main drawing loops will become a major
slowdown, so this better isn't done.
I don't mind sticking to (documented) consistant behaviour. Alternative is
a flag in object to denote it's a Mother Ball, and check for that instead.
This isn't nice to code in current Blender though... we don't have a signaling
system where to insert such tests reliably, making it very hackish.
Jiri; I hope you can agree with the solution! :) Just want to have tracker
cleaned up, refine it to real bugs.
- bug #1307; copy full scene didn't update links in constraints
(was an oldie bug!)
- also fixed same for Hooks, which even't didn't duplicate yet
- HOME in outliner (show hierarchy) now only does current scene