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
As a means to indicate items in the Outliner to do operations on, you can
select with RMB items. Works like FileSelect here. Since selection in
Outliner is only on outliner level, no further UI updates happen. That is
reserved for LMB actions.
Implemented right now are only few operations... they can be called up with
the WKEY (the famous spare key :)
- if objects selected, a menu appears with choices
- if materials or textures selected, a meny appears to unlink them
If you make mixed or confusing selections you get a warning message.
TODO: add selection color in theme, and of course more operations.
from within mesh_modifiers (kernel deform.c). It copies vertices to a
temporal particle system (struct SoftBody with BodyPoint structs) to do
physics tricks with it.
For each frame change the delta movements (based on standard ipo anim or
even other deforms (later) are applied to the physics system. How to apply
and calculate satisfying results is not my thing... so here I'll commu-
nicate with others for.
Since it's in the modifier stack, the SoftBody code can run entirely on
original data (no displists!).
Right now I've implemented 2 things;
- "Goal" which is a per vertex value for how much the current position
should take into account (goal=1 is without physics). This is a powerful
method for artists to get control over what moves and not. Right now i
read the vertex color for it.
- And some spring stuff, which now only works based on force moving it to
the originial location. This doesnt work with 'goal'... erhm.
- You can re-use physics vars from engine, used right now is (in Object)
- damping
- springf (spring factor)
- softflag (to set types, or activate softbody for it
- The SoftBody pointer in struct Object is only runtime, nothing saved in
file
To prevent all users going to complain it doesn't work, I've hidden the
functionality. :)
The buttons to set softbody 'on' only show now (psst psst) when the object has
name "soft" as first 4 characters. You can find the buttons in the F7 Particle
Interaction Panel (which should be renamed 'physics properties' later or so.
Demo file:
http://www.blender.org/bf/softbody.blend
actually, adding vertices and edges to displist.
Now the subsurfer gives editvertices a pointer to the subsurfed vertex
location; allowing not only vertices in 'optimal' draw to show correct, but
also gives proper handling of borderselect and lasso for edges. :)
- edges now sample on three locationsm gives more hits
- own version of glPolygonOffset remains cumbersome... but for select
now the selection routine gets more offset than draw.
- first attempt to clean drawobject.c and displists
- generic call for draw object in backbuf for select purposes, cleans up
a lot in the other calls.
- also to verify if we can (in future) use this for vertex/edge/face
select, but the whole drawobject code works against me... this is
for another refactory (incl. displist) and out of the focus for now
- subsurf.c: now creates new faces in order of original. Not used yet, but is
handy to recover the original order for selection/paint purposes.
- when adding creases in editmode, and separating that part, displists
did weird things... separate is hackish anyway
- draw faces (transparant) didnt do triangles correctly
- vertex hidden, always means edge is hidden too
- edge hidden, always means face is hidden too
- face hidden, only means face hides
This means, that in face mode you can hide a face, whilst in edge mode
the edges will still display.
Please note, that when you have no edges saved in a Mesh, it also doesnt
store the hide flags for it, causing in/out editmode too reset hidden
edges.
- Zbuffer clipped selection
Based on same algos as for drawing (blender polygon offset) vertices, edges
and faces now are clipped for draw and selection when Zbuffer is used.
Note that it works for endpoint vertices of edges, and for facecenters.
Also works for border and circle-select
- Optimal draw subsurfs
This now draws optimal with faces and edges selected/unselected, hiding the
original 'cage' (mesh) completely.
TODO: edge select, which still uses original (invisible) edge.
http://www.blender3d.org/cms/Mesh_editing_rewrite.425.0.html
The changelog is very long... it's on the web too:
http://www.blender3d.org/cms/Mesh_editing_rewrite.425.0.html
EditMesh refactor notes (user)
**** New selection modes
When entering Edit Mode for a Mesh, you now have the choice for three selection modes. These are shown as icons in the 3D header (hotkey is being searched for!).
- Vertex Select
Select vertices as usual, fully compatible with how previous version work
- Edge Select
Vertices are not drawn anymore, and selections happen by default on the edges. It is a true edge select, meaning that you can select three out of four edges in a face, without automatic having the 4th edge selected.
- Face Select
Instead of vertices, now selection 'points' are drawn in the face centers. Selected faces also get a colored outline, like for edges. This also is true face select, for each face individual regardless selection status of its vertices or edges.
While holding SHIFT, and press a selection mode, you can also combine the above choices. Now selection becomes mixed, and will behave as expected.
For example; in Edge+Face select mode, selecting the 4 edges of a face will select the face too.
The selection modes and optional drawing modes (like transparant faces, normals, or solid drawing) all work together. All of Blender's mesh editing tools now react to the correct selection mode as well.
Most noticeable it's in:
**** Extrude
Extruding in Edge or Face Select mode allows much more precise control over what's extruded and what should be excluded. Try for example a checker pattern selection, and extrude it.
New is the fixed translation when faces are extruded. This always follows the (averaged) face normal(s) of the old face(s), enabling much easier working in 3D views . A single 'G' (Grab) or 'R' (Rotate) or 'S' (Scale) will change transform modus as usual.
**** Other things to note
- Hiding edges/faces will also behave different based on Select Mode.
- while editing, normals of faces are updated always now
- Border select (BKEY) has 2 different rules for edges; when one edge is fully inside of the border, it will only select edges that are fully inside. Otherwise it selects each edge intersecting with the border.
- in face mode, adding vertices, edges or a circle is invisible...
- "Add monkey" now works as a normal primitive (rotated and on 3d cursor)
- Mesh undo was fully recoded, hopefully solving issues now with Vertex Keys and Groups
- Going in and out of editmode was fully recoded. Especially on larger models you'll notice substantial speed gain.
**** Todo
Add 'FaceSelect mode' functionality in EditMode, including zbuffered selection, display and editing of UV texture.
EditMesh refactor notes (coder)
**** Usage of flags in general
The "->f" flags are reserved for the editmesh.c and editmesh_lib.c core functions. Actually only selection status is there now.
The "->f1" and "->f2" flags are free to use. They're available in vertex/edge/face structs. Since they're free, check carefully when calling other functions that use these flags... for example extrude() or subdivide() use them.
**** Selection flags
EditVert: eve->f & SELECT
EditEdge: eed->f & SELECT
EditFace: efa->f & SELECT
- Selection is only possible when not-hidden!
- Selection flags are always up-to-date, BUT:
if selection mode >= SELECT_EDGE vertex selection flags can be incorrect
if selection mode == SELECT_FACE vertex/edge selection flags can be incorrect
This because of shared vertices or edges.
- use for selecting vertices:
eve->f &= SELECT
- use for selecting edges always:
void EM_select_edge(eed, 1) // 1 = select, 0 = deselect
- use for selecting faces always:
void EM_select_face(efa, 1) // 1 = select, 0 = deselect
- To set the 'f' flags in all of the data:
void EM_set_flag_all(int flag);
void EM_clear_flag_all(int flag);
- the old faceselectedOR() and faceselectedAND() are still there, but only
to be used for evaluating its vertices
**** Code hints for handling selection
If the selectmode is 'face'; vertex or edge selections need to be flushed upward. Same is true for 'edge' selection mode. This means that you'll have to keep track of all selections while coding... selecting the four vertices in a face doesn't automatically select the face anymore.
However, by using the above calls, at least selections flush downward (to vertex level). You then can call:
void EM_selectmode_flush(void);
Which flushes selections back upward, based on the selectmode setting. This function does the following:
- if selectmode 'vertex': select edges/faces based on its selected vertices
- if selectmode 'edge': select faces based its selected edges
This works fine in nice controlled situations.
However, only changing the vertex selections then still doesn't select a face in face mode! If you really can't avoid only working with vertex selections, you can use this call:
void EM_select_flush(void);
Now selection is flushed upward regardless current selectmode. That can be destructive for special cases however, like checkerboard selected faces. So use this only when you know everything else was deselected (or deselect it). Example: adding primitives.
**** Hide flags
EditVert: eve->h
EditEdge: eed->h
EditFace: efa->h
- all hide flags are always up-to-date
- hidden vertices/edges/faces are always deselected. so when you operate on selection only, there's no need to check for hide flag.
**** Unified undo for editmode
New file: editmode_undo.h
A pretty nice function pointer handler style undo. Just code three functions, and your undo will fly! The c file has a good reference.
Also note that the old undo system has been replaced. It currently uses minimal dependencies on Meshes themselves (no abuse of going in/out editmode), and is restricted nicely to editmode functions.
**** Going in/out editmode
As speedup now all vertices/faces/edges are allocated in three big chunks. In vertices/faces/edges now tags are set to denote such data cannot be freed.
ALso the hashtable (lookup) for edges uses no mallocs at all anymore, but is part of the EditEdge itself.