so there will be more files following.
Anyway: NEW BOOLEANS from Google Summer of Code (Courtesy of Marc Freixas)
Known problems:
- Random freezes while using them as a modifier. This may not be directly
related to modifiers though - it's maybe just the huge number of
operations that leads to a higher probability of triggering a bug
- Static booleans (the first 3 entries in the WKEY menu) are borked
anyway, this is not due to this commit.
- Errors when exiting Blender (dupli_alloc stuff), is not related to this
commit, either.
Please test if everything works, and check the other build systems, I only
know that make works.
Also, compare the results of, say, cube-cylinder, in old and new booleans
:)
with a single file again (intern/elbeem/intern/solver_main.cpp
includes intern/elbeem/intern/solver_init.cpp and
intern/elbeem/intern/solver_util.cpp when __APPLE_CC__ is defined)
- minor cleanup of inlined functions
added #include <ieeefp.h> similar to where its included in
other files. (made an ifdef that matches other includes of the same
file)
solaris does a lot of type overloading so there is no expf its just exp
so I added a #define expf exp wrapped in an ifndef
Finally, I fixed a warning in cfglexer.cpp about multiply defined
yy_wrap functions.
Kent
in this case only the new blenderdummy.cpp and utilities.cpp have to be compiled
- restructured gui:
* domain options split up into 2 sections
* added compressibility and refinement settings
* added inflow/outflow object types
- increased progress bar by 1
added msvc6 project file for builing elbeem
NOTE: it won't build unless some spots in elbeem code are cangend
see -->
fixing elbeem to build on msvc6
http://projects.blender.org/pipermail/bf-committers/2005-September/011952.html
[quote]
And no.. i won't set up a msvc6 project for building blender_elbeem.lib
until things calmed down a bit.
[/quote]
well i did for me to continue work, why not share.
if you do *rebuild all* in this project (release mode) on success will do a
post build step which will copy blender_elbeem.lib to the lib/windows..blah folder
such that the msvc6 (blender) project will find it for happy linking.
it even #defines MSVC6 so all the above changes could be nicly hidden behind that
( my local tree does so ) but it is on Nils to decide if he wants his code to be *pested*.
- debug output now controlled globally by elbeem debug level
(BLENDER_ELBEEMDEBUG environment var), also for fluidsimBake
and read/writeBobj
- debug output is written to file for WIN32
- added "for" and "vector" etc. defines for MSVC6
(I couldnt get hold of the compiler itself, so not tested yet)
(fixed shadowed variables warnings, removed cfgparser.hpp,
added cfgparser.h, removed debugging output)
- added support for env. var BLENDER_ELBEEMDEBUG to enable
debugging output again
- fixed missing triangle display (marching cubes produced v3=0 triangles)
- fixed geometry init bug (nearest intersection check
for intersecting objects was messed up)
- changed position of derived mesh creation in DerivedMesh.c
(for some reason the useDeform code is necessary, without it or
with useDeform=0 nothing is displayed)
- 3dviews now update every 2 seconds to show simulation progress
- note: mesh_strip_loose_faces(me); in ./source/blender/blenkernel/intern/mesh.c:937
not necessary anymore?
IK: needed to change abs() to TNT::abs() (thanks brecht!)
Freetype: FT_ENCODING_UNICODE typecast to FT_CharMap (thanks intrr!)
header_image: missing include for liballoc stuff
Ketsji: needed to declare m_hitObject as public in KX_MouseFocusSensor.h.
This is probably the wrong thing to do, but KX_MouseFocusSensor.cpp
compilation fails on line 279 otherwise.
module -- the previous method could be off pretty far.
- Added drawing of transparent surface for it, instead of just the border.
- Added "stretch IK", allowing bones not only to rotate, but also scale.
The "Stretch" value below the DoF buttons is used to enabled this.
- Some code tweaking: slightly simplified computation of transform for IK,
renamed chain to tree, removed unused pchan->ik_mat, ..
Internal IK module work:
- Do damping per DoF also based on stiffness, hopefully makes it converge
faster with very stiff joints.
- Instead of having two joints types (translational and rotational), now
all 6 DoF's can be enabled for one joint.
- Added limits for translational joints.
- Z-axis rotation limits were not working, was using wrong flag.
- Don't allow min limit to go over max, or vice versa.
- Fix for jacobian getting overwritten with IK clamping.
Fix some warnings.
Merge with latest soc code.
What changed in IK lib:
Fully restructured, with components now as follows:
- IK_Solver: C <=> C++ interface
- IK_QSegment: base class for bone/segment with 0
to 3 DOF
- IK_QTask: base class for a task (currently there's
a position and a rotation task)
- IK_QJacobian: the Jacobian matrix, with SVD
decomposition, damping, etc
- IK_QJacobianSolver: the iterative solver
The exponential map parametrization is no longer used,
instead we have now:
- 3DOF and 2DOF XZ segments: directly update matrix
with Rodrigues' formula
- Other: Euler angles (no worries about singularities
here)
Computation of the Jacobian inverse has also changed:
- The SVD algorithm is now based on LAPACK code,
instead of NR, to avoid some problems with rounding
errors.
- When the problem is underconstrained (as is the case
most of the time), the SVD is computed for the transpose
of the Jacobian (faster).
- A new damping algorithm called the Selectively Damped
Least Squares is used, result in faster and more
stable convergence.
- Stiffness is implemented as if a weighted psuedo-inverse
was used.
Tree structure support.
Rotation limits:
- 3DOF and 2DOF XZ segments limits are based on a swing
(direct axis-angle over XZ) and twist/roll (rotation
over Y) decomposition. The swing region is an ellipse
on a sphere.
- Rotation limits are implemented using an inner clamping
loop: as long as there is a violation, a violating DOF
is clamped and removed from the Jacobian, and the solution
is recomputed.
Convergence checking is based now on the max norm of angle
change, or the maximum number of iterations.
64 bits systems... weird bug. :)
It now only does a unit-of-4 check, for all systems. This will work fine,
since the malloc code will return aligned anyway, and the guarded alloc
system only stores ints in the headers. Also, the sizeof() call will
correctly do padding, so there's no risk of allocating too small blocks.
- XCode project
- Scons :
scons stopped working for Os X in the last month (dont know when) :
* the '.' and '..' keywords in CCPPATH
are not recognized anymore for sconscripts compiling files at
a sub level
* when doing a scons clean, the 3 subdirs in build dir are removed
and scons then fail to recreate them (exten, intern, source)
this commit solve the first problem as a temp workaround
for the latter simply recreate the dirs manually
I will investigate that further when on vacations, which i should already
be.
;(
all 3 build systems are now working on Os X