bf-Blender / Linux (2005/08/13)

User-contributed CVS development builds. Please test and give feedback!

Moderators: jesterKing, stiv

Post Reply
Posts: 0
Joined: Thu Jan 15, 2004 6:41 am
Location: Canada - Québec - Sherbrooke

bf-Blender / Linux (2005/08/13)

Post by gabio »

Still more work done. Game engine got some new stuff that really need a good test drive. Btw this build has sumo and bullet enabled. Also more stuff on modifier, softbody collision, moding tools.. and more.
Relevant feature:
-Game engine, bullet.
-softbodies: lattice having springs.
-modifier stack UI update.
-loopcut smooth.
-BPY: acces to timeline data
-make softbodies collide with moving ( armatures,lattices .. ) objects
-In CTRL-E menu "Edgeloop Delete" with a valid "inner" edgeloop
-New Image methods from Austin Benesh
-added user editable name field to modifiers
-added modifiers to outliner, needs icon
-added armature, hook, and softbody modifiers
-New "Mirror UVs" function in faceselect mode

added python binding for debugdraw,
tweaked friction, some more preparations but no real functionality added yet

moved some hardcoded constants into tweaking tresholds
exposed those tresholds to python (more 'expert' settings)

Made the screen redraw on loopcut cancel

- removed BLO_findstruct_offset (obsolete)
- remove python access to Optimal and Subsurf flags (they don't
work this way anymore, I suppose need to replace with python
access to modifiers but not going to do right now).
- removed interface access to OPTIMAL mode, needs to be rethough...
this means at the moment subsurfs outside editmode always draw
and render all edges

The famous potential SDL audio fix (setenv("SDL_AUDIODRIVER", "dma", 1))...

Inside #ifdef __linux__ #ifndef __alpha__ ...

Who knows, it might help :)

first try on lattices having springs

- modifier UI update (aka, find the modifier buttons!!)
- moved back to editing buttons, where life is now cramped... switched
to constraint style foldout panes, still a WIP. In particular not
sure what buttons should be in header (and if current toggles stay
in header if they should also be in an expanded pane). Also need
new icons for move up/move down (and drag and drop would of course
be nice). Finally current plane is to make it so modifiers will
expand out in modifier pane for horizontal orientations instead of
just going down down down to goblin town.
- added error field to modifiers that is displayed in UI, need to have
some way for modifiers to return errors back to interface (esp. important
for python)
- tweaked cage determination and handling, currently the editmode cage
is determined by last modifier with OnCage set that is preceeded completely
by modifiers that support mapping or are disabled in editmode. it is
kinda confusing, but the interface only lets you toggle OnCage for modifiers
that support it - it just might not be clear all the time why you can't
toggle a certain modifier OnCage.
- update displistmesh_copy to only copy edges if non-NULL

There is a display bug that already existed but is more obvious with
new modifiers where parts of the pane get drawn in a different area
after toggling editmode. It has to do with drawing parts of the interface
using GL instead of 100% buttons. I try to keep my grubby little toes
out of the interface code so this can wait for Ton to return.

finally have the diagonal springs in lattices too

improved deactivation, exposed more tweakable parameters to python,
fixed some copy/paste bug in inertia/inverse inertia.
colors in deactivation debug

Make Edgeslide work with Subsurf Optimal "on cage"

- bug fix, some world material map to buttons missing
- bug fix, logic bool property value buttons missing

A small improvement to Subdivide multi smooth. It is not perfect yet :( but its better.

BUT! Try doing a EdgeRing (CTRL-ALT-RMB in edge mode) select and a subdivide smooth multi...That works ok (read loopcut multi smooth) :)

Now while choosing an edge in loopcut, S will toggle loopcut smooth. There is a headerprint to show current status of smooth.

Also a little tweak in subd smooth. is still not perfect in full quads/tris cases

added bpy TimeLine

fixed the mouse-over sensor,
added raycast support for bullet (no triangle-mesh support, soon)
added python methods for 'getHitObject', getRayDirection, getHitPosition and getHitNormal for mouse over sensor,
which makes it easy for a shootout.blend demo :)

fixed sphere shape, added non-uniform scaling (making it an ellipsoid)
removed bug-fixing comments

- added copy button to modifier stack UI
- add warning about applying decimation
- some more UI tweaks (rounding of modifier pane, make toggles only in header,
add object name to try to convey that modifier stack is tied to OB)
- bug fix, modifier recalc wasn't done on make link
- bug fix, uiBlockEndAlign didn't clear align flags with certain themes,
pretty sure this wasn't intended. (TON: PLEASE CHECK)

- bug fix, extrude and duplicate automatically enter transform which
may request info from the derived surface, this means we have to
force a manual recalc before we enter transform... proper design
of mesh data invalidation/recalc should make this unnecessary...

- added editmhes_get_derived_base, used when a mesh with multiple users
is in editmode. current bevahaior is to display the object that is
actually in editmode with its modifiers, and all other objects that
share the mesh using just the base editmesh data. this is not 100%
consistent but no architecture at the moment to display all objects
that have mesh in editmode with each individual modifier stack.

working on : make softbodies collide with moving ( armatures,lattices .. ) objects

works nice & smooth unless we encounter logical circles
well, because of function pointers re-hooking i could not debug that in detail
may be DAG or modifier stack is .. dunno

did abuse pd->pad bit 1 ( i hope this was 'real' padding till now )
to get SoftBodyDetectCollision(..) use mesh_get_derived_XXX [in effect.c] ..[*sigh* (the linetriangle() func is there)
and put that to the deflection panel (blush .. i would have decapted anyone in my team doing stuff like that)

to defend this commit:
it makes you aware of problems ahead
having code that works/doesn't (on some conditions) is is usefull to look at
i think code is OK , so the problem is either
a. me not understanding
b. real

for locical circles see files -->

- add allowShared argument to DerivedMesh.convertToDispListMesh to allow returned
DLM to share data from DerivedMesh (reduces some copying/memory allocation)
- added displistmesh_copyShared function to copy a DLM but not duplicate any
internal data
- changed crease drawing to use DerivedMesh functions... this means varying
edge width style of creases had to go, I replaced by using varying color to
show crease weight instead. Don't think this is a big loss since the subsurf
result gives you a much better indication of the crease weight anyway.
- bug fix in mirror modifier, didn't copy edge creases from editmesh correctly

- got rid of DerivedMesh.drawMappedEdgeEM function, can be implemented with
- added DerivedMesh.convertToDispListMeshMapped function which converts and
also returns mapping information for use in editmode
- updated DispListMesh derivedmesh to be able to function in editmode
- update mirror modifier to support use as a cage
- update mirror & subsurf modifiers to properly pass mapping information down
modifier stack

It is now possible to have a mesh with mirror/subsurf modifiers where you
can edit with both as cage. Selecting the mirror'd part works, but of course
transform is flipped so it is a bit weird. Not the cleanest code in the
world and I can't say I am really happy with the architecture but it works for
now and supports the existing feature set.

Softbody collision with deformed deflectors2
using bit in pd->flag to signal the use of deformed rather than wasting pd->pad

removing evil cast
replaced by using convertToDispListMesh() ZR: I hope that's OK that way

commented off the ( debug purpose ) recursion trap in SoftBodyDetectCollision()
replaced forbidden okee() with printf() in there
( not so nice, since it does not anounce crash on UI )

note: crashing example from previous commit
needs enabling 'UMS' on panel to crash again
UMS = uses modifier stack

In CTRL-E menu "Edgeloop Delete" with a valid "inner" edgeloop selected, this function calls other tools to delete that edgeloop by doing the following

Edgeslide to one side 100%
CTRL + to select "more"
Remove Doubles

Leaves you with new faceloop selected.

Fix for bug #2859

Beautyfill didnt work in illustrated case, due to 1) face select 2) no
correct edges selected...

Clean up spaces (make into tabs) in editmesh_tools

Also add menu items for Edgeloop Delete

Little fix for Edgeslide so it doesn't crash on usage!

Also fixed trying to edgeslide an edge with a missing rail.

And Changed the okee calls to error (thanks intrr)

Bugfix #2871

Selecting in Mesh edit mode or in FaceSelect mode is tied, but setting
faces hidden was not tied. This caused hidden faces in edit mode to
become selected, with all associated disasters. :)
Now hiding faces in editmode and faceselect are tied too. Please note
that leaving faceselect mode will unhide always!

Two radiosity glitches, bugs #2872 #2881

- add new scene, "Full Copy", didn't copy radio settings
- switch scene didn't reset radiosity baking
(note that you can only do 1 radiosity scene in Blender, switch scene
will free the radiosity data)

Bug fix #2894

Using Lkey (select connected) in Armature editmode could crash, it didn't
correctly check for drawing non selectable items (have index -1).

- fixed missing logic positive pulse repeat button

-better naming for collision bounds:
polytope -> convex polytope
polyheder -> concave mesh

-better naming:
frequency -> the pulse delay

some more work on bullet raycast

- added VecLerpf to blenlib
- switch to using DerivedMesh.drawMappedFaceCentersEM to draw
face dots, still need to do some work so this works in all
selection modes (atm it does not work in no-zbuf mode)

made weight paint panel full width ( still try to understand that X,Y system panels use )
replaced senseless 0 opacity with 1/8 opacity

Big commit, had to rework lots of selection stuff so that things
worked properly with modifiers. Needs more testing I am sure.
No, honestly, I wasn't just cleaning for the hell of it, it
was *necessary* (I would never do such a thing). Selection should
work completely with cage options of modifiers now.

- added DerivedMesh foreach functions to iterate over mapped
verts/edges/face centers. These replaced some of the drawing
functions and are more general anyway. Special edge drawing
functions remain for performance reasons.
- removed EditFace xs, ys fields
- added general functions to iterate over screen coordinates of
mesh/curve/lattice objects
- removed all calc_*verts* functions that were used for storing
screen coordinates in objects. they were recalc'd on the fly
for most situations anyway, so now we just always do that.
calc_*verts_ext was one of those calls that did dirty things
deep down in the callstack (changing curarea and poking at
- rewrote all vertex level selection routines (circle, lasso, bbox)
and closest vertex routines (rightmouse select) to use the new
system. This cleaned up the selection code a lot and the structure
of selection is much easier to see now. This is good for future
work on allowing modifiers to completely override the selection
system. It also points out some discrepancies in the way selection
is handled that might be nice to resolve (mesh vertex selection has
fancy stuff to try to help with selecting overlapping, but it only
works w/o bbuf select, and curves/lattices don't have at all).
- had to remove ton's code to move Manipulator to cage location, this
is not reliable (can come up with a different method if requested)
- as it happens BezTriple.s and BPoint.s are basically available to
be removed, just need to rewrite editipo code that still does
background calc of screen coordinates
- MVert.{xs,ys} are still around because they are abused in some places
for other info (not sure if this is safe actually, since they are
short's and the mvert limit went up).

And did I mention this commit is comes out to -305 lines? Well it does.

Possible fix for bug #2906

Added some parens to change eval order

fix for bug #2906

Was allocating array for all hidden edges, not needed, just hidden with a selected vert needed

- bug fix, convert modifiers should free modifiers from new object

- bug fix, face center drawing was wrong for editmesh
- added several useful utility functions to editmesh,
these can simplify/clarify a lot of mesh code, check them
- cleaned up EdgeSlide a bit to be clearer/shorter
o bug fix, EdgeSlide did not always cancel correctly
o bug fix, EdgeSlide did not choose initial "control" edge
correctly after calc_meshverts_ext change

Patch #2758 Update of image module.
New Image methods from Austin Benesh:
- getPixelI(x, y)
- getMinXY()
- setPixelF(x, y, [r, g, b, a])
- setPixelI(x, y, [r, g, b, a])
- save()

sorry for the delay.

- added eModifierTypeFlag_RequiresOriginalData for modifiers that
can only follow deform (for example, they store mesh vertex
- added ModifierType.foreachObjectLink for iterating over Object
links inside modifier data (used for file load, relinking, etc)
- switched various modifiers_ functions to take object argument
instead of ListBase
- added user editable name field to modifiers
- bug fix, duplicate and make single user didn't relink object
pointers in modifier data
- added modifiers to outliner, needs icon
- added armature, hook, and softbody modifiers (softbody doesn't
do anything atm). added conversion of old hooks to modifiers.

NOTE-THE-FIRST: User name field is not initialized on loading 2.38 files
so if you have saved stuff with a cvs blender you will see blank names.

NOTE-THE-SECOND: Since modifiers aren't evaluated yet for non-Mesh
objects, hooks for lattices and curves are broken. Don't updated if
you actually, say, *use* Blender.

NOTE-THE-THIRD: Old hooks used a quirky weighting system during
deformation which can't be extended to modifiers. On the upside,
I doubt anyone relied on the old quirky system and the new system
makes much more sense. (Although the way falloff works is still
quite stupid I think).

- bug fix, hook deform could crash because old files can have hook
indices that are out of range
- bug fix, hook indicies were not corrected on exit editmode (there
probably should be a general interface for this kind of patch)

New "Mirror UVs" function in faceselect mode, to complement Rotate UVs.
It mirrors the UVs or Vertex Colors of individual faces (on the red edge
of the UV face).

Patch provided by Martin Poirier, thanks!

- switch to using softbody modifier, controls enabling but does not have
variables, these are still in same place. enable button automatically
makes/enables modifier.
- changed hook to hook modifier conversion to happen on direct link,
required to make sure we don't forget to free any memory for files
saved with 2.38 that have hooks.
- update modifier interface to enforce modifiers with the require-original-
data flag to not move beyond deforming modifiers.
- enforce only one softbody modifier allowed

NOTE: Once again, no modifier stack for lattice yet means softbody for
lattice does not work atm.

- added modifiers_getVirtualModifierList, returns pointer to first modifier
but including "virtual" modifiers (for example, an object skel-parented
to a lattice has a virtual first lattice modifier)
- removed mesh_modifier(), all functionality has been incorporated into
modifier stack (well, keys still don't exist as a modifier, but I am
not sure if they should).
- added interface option to convert a virtual modifier into a real modifier
- added option to parent to lattice object or lattice with deform
- bug fix, patch of hook indices patched all hooks (oops) not just ones
for edited mesh

NOTE: Files saved with 2.38 that include an object parented to a lattice
will not load correctly, because it will look like the object is parented
only to the object (i.e. without deform). Can be simply fixed by reparenting
or adding a lattice modifier. Older files are handled automatically.

- bug fix, cage buttons weren't displayed correct with virtual modifiers

Two quick bugfixes, thanks slikdigit!

- armature modifier was not flagged to require original data (but it
- add hook messed up the ModifierData initialization, stupid bug!

- added recalc ob, recalc data options to ctrl-alt-shift-t timer

- update displistmesh_to_mesh to free existing mesh data (including
sticky, dvert, and keys if number of verts don't match)
- changed modifier panel to not allow manual addition of hook or
softbody modifiers
- changed apply modifier to apply to existing mesh (fixes bug with
materials) and to warn about loss of tface/mcol/keys/dvert/sticky
for all modifier types
- changed modifier UI to not display disclosure triangle for virtual
- changed softbody ui to allow enable/disable

- bug fix, add hook didn't respect modifier ordering constraints

Bugfix, the lock button in the uv editor didn't work, the 3d view would
always redraw even if it was disabled (only on non-apple).

added more debug text, enabled the bullet penalty solver, instead of ode solver by default, added a better demo.

Added the 4 new proportional editing modes also to the uv editor transform.
Eventually the uv editor should use the new transform code and get these
automatically, but until that's done this might fix bug #2920.

Very small size of arealights (0.001) could cause weird overflows/bands.
There was still one float component hanging around... saacos(). Made a
double version of it.

Reported by Shul. thnx!

- readded Subsurf "optimal" edge drawing/rendering
- added ME_EDGERENDER flag, barely changes things atm except makes
sure plain meshes with FasterDraw/etc set still render all edges.
The edge drawing system needs a bit of a revamping - it is a cool
feature but could use several improvements:
(1) The algorithm could be better in choosing the best edges to
(2) The drawflags should interact well with modifiers. It is wierd
to have a large grid with a deformer that draws no edges because
flags are only calculated based on base mesh.
(3) Drawflags should not be destroyed by editmode. Better design
would be a "Draw % of edges" button.

Of course, could also be the feature is not worth it and we
should just drop. Feel free to comment if you have an opinion.
a new build is available
Last edited by gabio on Tue Aug 16, 2005 7:24 pm, edited 1 time in total.

Posts: 43
Joined: Mon Oct 14, 2002 6:51 am

Post by malefico »

I started getting segfaults almost everytime I try to load an animation file... anyone ?
(I still haven't tried with your build, it is segfauoting with my own local build)

Bad thing is that I can't figure out what is causing it ... keep testing

Posts: 0
Joined: Tue Jul 06, 2004 1:13 pm

Post by zupermonkey »

malefico wrote:I started getting segfaults almost everytime I try to load an animation file... anyone ?
(I still haven't tried with your build, it is segfauoting with my own local build)

Bad thing is that I can't figure out what is causing it ... keep testing
It's probably the outliner (tree) causing Blender to crash... it happens using the windows build as well (the msvc one).

Posts: 0
Joined: Fri Jun 11, 2004 3:24 pm
Location: Berlin

Post by ElBarto »

Hi Gabio,

thanx for the new build. I was looking at the new modifier stack which is much better now but!!!
I just would at a little more space, clearing the icons and let it look more light weight.

Right side is my proposal: Image

Blender Feature Proposal:

Posts: 43
Joined: Mon Oct 14, 2002 6:51 am

Post by malefico »

OK, I've found what was causing the segfaults:

A mesh having RVK that was parented to an armature in previous Blender (I tried 2.36) !

Unparenting in 2.36, seems to solve the problem and the file is loaded OK again (but of course you have to re-parent, and somehow it doesn't look the same afterwards...).

Has anyone observed this behaviour ?

I used Blender CVS compiled today (August 15th).

Please post your findings or if you already know about this.



Post Reply