Hiding window (Apple-H) caused the modifier to hang when reopened.
Added 1 line that re-reads modifier on "Inputchange" event, which only
is when you switch focus from one app to another.
Might solve more issues reported with 'hanging' keys.
- Dupli-Frames objects didn't render correct with Motion Blur (they moved!)
- VertexKey on Bezier paths didn't animate the 'twist' rotation. This did
work for Nurbs paths.
Plus; removed Nabla slider from Stucci, it doesn't work for that texture.
Sequence editor crash when you delete Scenes which were used as a strip.
Related to that, file reading code didn't restore pointers for strips
correctly when you save with open "Meta" strip.
First bug 8 year old. Second 1 month. :)
Rotated edges (seemingly on quads only) were not drawn even if
'Draw All Edges' is active.
Finally tracked the bug down to a typo in flag checks! Eeugh, was much
head scratching on this one! :)
- code wasn't edge-select aware yet
- the "Median" button now allows to move a "median" correctly around, also
to 0 or 1 in a single step
- missing undo push here.
Five fixes in this commit...
- the normals for nurbs surfaces still were calculated pointing wrong in some occasions
- recoded ray-transp rendering to accept normals pointing any direction; it just counts how many times it passes a "glass" layer, and flips normals appropriate then. This means rendering will go fine on models without manually setting the normals. You can also move a camera inside a 'glass' object.
- rendering of the inside part of glass now uses correct normal too... specularity happen on a solid glass inside now.
- And an inside reflected mirror ray will keep bouncing inside glass
Related to rendering localview: old convention to render localview, but with the lamps in the normal layers, has been restored.
Please note; render happens based on active window. You *only* get a localview or 'unlocked layer' render when that 3d window is active = mouse in window.
Using ctrl+up/down in buttons window, didn't use a proper rescale of view
as already works for dragging window edges. Now the 'Full window' action
keeps size nicely.
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-
- New channel for "Map to" added, "Warp"
- Use the slider next to the option to set amount of influence the texture
will have on the coordinates of the next texture.
- Warp uses for this the same values as for Normal or Displacement mapping
- Warp remains active for all channels, until replaced (or zeroed).
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).
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!)
Another tweak in the convex formula, replaced a ">" with ">=" for detecting
optimal projection of face in 2d. Solves issue reveiled in Bevel tool,
where it could happen that a face wasn't created.
When rotating camera itself in camera view, and choose local axis rotate,
the camera flipped around. Was due to using viewmat[][] while it changes...
Solved in the simplest elegant way; hope Martin will cope with this in new
transform!
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
Editmode Mesh, edge selectmode, not zbuffer on. Selecting edges didnt give
a small disadvantage to the already selected one, making it hard to select
edges that are extreme close or on top of each other.
In renderwindow, press AKEY to see the alpha in B&W. Another AKEY shows
normal RGB again. This uses glColorMask, an opengl 1.0 function.
Really needed it for debugging alpha in rendering. :)
Combining panorama scene and Sequencer effect on scene (like glow) crashed.
Found two other issues;
- on click in sequencer, the image output window didn't redraw correct, but
only when a render window was opened. Caused by missing 'activate' call
- added a pause in dragging-frame loop to make it idle friendly
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.
Using header view3d pulldown for "align active camera to view" didn't clear
the abused modifier value correctly. Learn from this:
incorrect: G.qual &= ~LR_CTRLKEY|LR_ALTKEY;
correct: G.qual &= ~(LR_CTRLKEY|LR_ALTKEY);
- Mesh editmode; SHIFT+F fill didnt set default vertex color
- Parented spotlight had wrong (black) dashed line to parent when selected
- Constraint line draw while transform wasn't reset, causing sometimes to
draw when using the (ugly) G.moving flag...
With mouse cursor over a screen-edge (between windows) none of the hotkeys
worked. Now it checks for the global list of keys, including screen-switch,
quit, frame change, Fkeys, load/save, undo/redo, etc.
When choosing "render engine" in Scene Buttons, the newly added or removed
Panels didn't invoke a re-alignment event yet.
Also added code that inserts new panels as good as possible on their
previous locations. This works reliable for 1 new panel, not for more, this
because a Panel only stores its old location, not the locations of all
Panels in a given configuration. Consider that minor issue...
Lasso select on objects didnt work with multiple views, due to lack of
calculation of screencoords.
- Bug fix#1914
Hooks didn't update 'parent' when snapping to grid a Hook. Solved it for
snap to cursor too.
- removed rule restricting to co-planar fgons; isn't useful anyway. Now
allows to fgonize the entire surface of a tube :)
- Hide/Reveil fgons cleared fgon flags
- Reveil ended with wrong selection status for verts/edges... solved with
correctly using EM_select_edge and EM_select_face
Leftmouse select option doesn't work with "Emulate 3 button mouse" option.
The latter maps middle mouse to ALT+leftmouse, frustrating loop select for
example.
Add tooltip to say this, made option to disable automatic on load (version
check) and made buttons redraw to show option being disabled.
Note; wrapping middle mouse to ALT+RMB will frustrate 1 button mices... the
current code for leftmouse-select is a hack at best, better do this good
when we have proper event handlers system.
In Object mode, Solid drawing, selection was just always not what you
wanted, the rules for wireframe (cycling) can't be used then.
New rule is;
- it always selects the frontmost visible item (wires in solid too), unless
- frontmost is active already, then it picks the 2nd
- mouse didnt move 2 pixels while selecting, then it starts cycling
Works nice :)