[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12569] branches/particles: MerMerge from trunk: revisions 12400-12567

Janne Karhu jhkarh at utu.fi
Mon Nov 12 19:39:24 CET 2007


Revision: 12569
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12569
Author:   jhk
Date:     2007-11-12 19:39:23 +0100 (Mon, 12 Nov 2007)

Log Message:
-----------
MerMerge from trunk: revisions 12400-12567

Modified Paths:
--------------
    branches/particles/CMakeLists.txt
    branches/particles/extern/bFTGL/src/FTVectoriser.cpp
    branches/particles/intern/bmfont/intern/BMF_BitmapFont.cpp
    branches/particles/intern/iksolver/intern/IK_QJacobianSolver.cpp
    branches/particles/intern/iksolver/intern/IK_QJacobianSolver.h
    branches/particles/intern/iksolver/intern/IK_QSegment.cpp
    branches/particles/intern/iksolver/intern/IK_QSegment.h
    branches/particles/intern/iksolver/intern/IK_QTask.h
    branches/particles/intern/iksolver/intern/IK_Solver.cpp
    branches/particles/intern/opennl/extern/ONL_opennl.h
    branches/particles/intern/opennl/intern/opennl.c
    branches/particles/projectfiles_vc7/blender/blenkernel/BKE_blenkernel.vcproj
    branches/particles/projectfiles_vc7/blender/imbuf/BL_imbuf.vcproj
    branches/particles/projectfiles_vc7/blender/nodes/nodes.vcproj
    branches/particles/projectfiles_vc7/blender/src/BL_src.vcproj
    branches/particles/source/blender/blenkernel/BKE_DerivedMesh.h
    branches/particles/source/blender/blenkernel/BKE_bad_level_calls.h
    branches/particles/source/blender/blenkernel/BKE_global.h
    branches/particles/source/blender/blenkernel/BKE_image.h
    branches/particles/source/blender/blenkernel/BKE_mesh.h
    branches/particles/source/blender/blenkernel/BKE_node.h
    branches/particles/source/blender/blenkernel/BKE_texture.h
    branches/particles/source/blender/blenkernel/bad_level_call_stubs/stubs.c
    branches/particles/source/blender/blenkernel/intern/DerivedMesh.c
    branches/particles/source/blender/blenkernel/intern/action.c
    branches/particles/source/blender/blenkernel/intern/armature.c
    branches/particles/source/blender/blenkernel/intern/constraint.c
    branches/particles/source/blender/blenkernel/intern/curve.c
    branches/particles/source/blender/blenkernel/intern/image.c
    branches/particles/source/blender/blenkernel/intern/ipo.c
    branches/particles/source/blender/blenkernel/intern/material.c
    branches/particles/source/blender/blenkernel/intern/mesh.c
    branches/particles/source/blender/blenkernel/intern/modifier.c
    branches/particles/source/blender/blenkernel/intern/node.c
    branches/particles/source/blender/blenkernel/intern/object.c
    branches/particles/source/blender/blenkernel/intern/softbody.c
    branches/particles/source/blender/blenkernel/intern/texture.c
    branches/particles/source/blender/blenlib/BLI_arithb.h
    branches/particles/source/blender/blenlib/BLI_blenlib.h
    branches/particles/source/blender/blenlib/intern/arithb.c
    branches/particles/source/blender/blenlib/intern/util.c
    branches/particles/source/blender/blenloader/intern/readfile.c
    branches/particles/source/blender/blenloader/intern/writefile.c
    branches/particles/source/blender/blenpluginapi/iff.h
    branches/particles/source/blender/imbuf/IMB_imbuf.h
    branches/particles/source/blender/imbuf/intern/imageprocess.c
    branches/particles/source/blender/imbuf/intern/radiance_hdr.c
    branches/particles/source/blender/imbuf/intern/rectop.c
    branches/particles/source/blender/include/BDR_editcurve.h
    branches/particles/source/blender/include/BIF_editseq.h
    branches/particles/source/blender/include/BIF_filelist.h
    branches/particles/source/blender/include/BIF_meshlaplacian.h
    branches/particles/source/blender/include/BIF_transform.h
    branches/particles/source/blender/include/BIF_usiblender.h
    branches/particles/source/blender/include/BSE_trans_types.h
    branches/particles/source/blender/include/blendef.h
    branches/particles/source/blender/include/butspace.h
    branches/particles/source/blender/include/transform.h
    branches/particles/source/blender/makesdna/DNA_armature_types.h
    branches/particles/source/blender/makesdna/DNA_constraint_types.h
    branches/particles/source/blender/makesdna/DNA_curve_types.h
    branches/particles/source/blender/makesdna/DNA_ipo_types.h
    branches/particles/source/blender/makesdna/DNA_modifier_types.h
    branches/particles/source/blender/makesdna/DNA_node_types.h
    branches/particles/source/blender/makesdna/DNA_scene_types.h
    branches/particles/source/blender/makesdna/DNA_texture_types.h
    branches/particles/source/blender/makesdna/DNA_userdef_types.h
    branches/particles/source/blender/nodes/CMP_node.h
    branches/particles/source/blender/nodes/intern/CMP_nodes/CMP_blur.c
    branches/particles/source/blender/nodes/intern/CMP_nodes/CMP_defocus.c
    branches/particles/source/blender/nodes/intern/CMP_util.c
    branches/particles/source/blender/nodes/intern/CMP_util.h
    branches/particles/source/blender/python/BPY_interface.c
    branches/particles/source/blender/python/api2_2x/Armature.c
    branches/particles/source/blender/python/api2_2x/Blender.c
    branches/particles/source/blender/python/api2_2x/Constraint.c
    branches/particles/source/blender/python/api2_2x/CurNurb.c
    branches/particles/source/blender/python/api2_2x/Geometry.c
    branches/particles/source/blender/python/api2_2x/Pose.c
    branches/particles/source/blender/python/api2_2x/Scene.c
    branches/particles/source/blender/python/api2_2x/Texture.c
    branches/particles/source/blender/python/api2_2x/doc/Curve.py
    branches/particles/source/blender/python/api2_2x/doc/Geometry.py
    branches/particles/source/blender/python/api2_2x/doc/Pose.py
    branches/particles/source/blender/python/api2_2x/doc/Render.py
    branches/particles/source/blender/python/api2_2x/doc/Texture.py
    branches/particles/source/blender/python/api2_2x/sceneRender.c
    branches/particles/source/blender/render/intern/source/pipeline.c
    branches/particles/source/blender/render/intern/source/rayshade.c
    branches/particles/source/blender/render/intern/source/shadeoutput.c
    branches/particles/source/blender/src/buttons_editing.c
    branches/particles/source/blender/src/buttons_object.c
    branches/particles/source/blender/src/buttons_scene.c
    branches/particles/source/blender/src/drawipo.c
    branches/particles/source/blender/src/drawnode.c
    branches/particles/source/blender/src/drawobject.c
    branches/particles/source/blender/src/drawview.c
    branches/particles/source/blender/src/editaction.c
    branches/particles/source/blender/src/editarmature.c
    branches/particles/source/blender/src/editcurve.c
    branches/particles/source/blender/src/editimasel.c
    branches/particles/source/blender/src/editipo.c
    branches/particles/source/blender/src/editipo_lib.c
    branches/particles/source/blender/src/editmesh_add.c
    branches/particles/source/blender/src/editmesh_lib.c
    branches/particles/source/blender/src/editnla.c
    branches/particles/source/blender/src/editobject.c
    branches/particles/source/blender/src/editseq.c
    branches/particles/source/blender/src/filelist.c
    branches/particles/source/blender/src/filesel.c
    branches/particles/source/blender/src/ghostwinlay.c
    branches/particles/source/blender/src/header_action.c
    branches/particles/source/blender/src/header_info.c
    branches/particles/source/blender/src/header_nla.c
    branches/particles/source/blender/src/meshlaplacian.c
    branches/particles/source/blender/src/parametrizer.c
    branches/particles/source/blender/src/space.c
    branches/particles/source/blender/src/toets.c
    branches/particles/source/blender/src/transform.c
    branches/particles/source/blender/src/transform_conversions.c
    branches/particles/source/blender/src/transform_generics.c
    branches/particles/source/blender/src/transform_manipulator.c
    branches/particles/source/blender/src/usiblender.c
    branches/particles/source/blender/src/view.c
    branches/particles/source/blender/src/vpaint.c
    branches/particles/source/creator/creator.c
    branches/particles/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.cpp
    branches/particles/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp

Added Paths:
-----------
    branches/particles/release/scripts/wizard_curve2tree.py
    branches/particles/source/blender/nodes/intern/CMP_nodes/CMP_crop.c
    branches/particles/source/blender/nodes/intern/CMP_nodes/CMP_glare.c
    branches/particles/source/blender/nodes/intern/CMP_nodes/CMP_lensdist.c
    branches/particles/source/blender/nodes/intern/CMP_nodes/CMP_tonemap.c

Modified: branches/particles/CMakeLists.txt
===================================================================
--- branches/particles/CMakeLists.txt	2007-11-12 17:24:12 UTC (rev 12568)
+++ branches/particles/CMakeLists.txt	2007-11-12 18:39:23 UTC (rev 12569)
@@ -240,7 +240,11 @@
   SET(OPENEXR ${LIBDIR}/openexr)
   SET(OPENEXR_INC ${OPENEXR}/include ${OPENEXR}/include/IlmImf ${OPENEXR}/include/Iex ${OPENEXR}/include/Imath)
   SET(OPENEXR_LIB Iex Half IlmImf Imath IlmThread)
+  IF (MSVC80)
+  SET(OPENEXR_LIBPATH ${OPENEXR}/lib_vs2005)
+  ELSE (MSVC80)
   SET(OPENEXR_LIBPATH ${OPENEXR}/lib_msvc)
+  ENDIF(MSVC80)
   
   SET(QUICKTIME ${LIBDIR}/QTDevWin)
   SET(QUICKTIME_INC ${QUICKTIME}/CIncludes)

Modified: branches/particles/extern/bFTGL/src/FTVectoriser.cpp
===================================================================
--- branches/particles/extern/bFTGL/src/FTVectoriser.cpp	2007-11-12 17:24:12 UTC (rev 12568)
+++ branches/particles/extern/bFTGL/src/FTVectoriser.cpp	2007-11-12 18:39:23 UTC (rev 12569)
@@ -5,8 +5,12 @@
 #define CALLBACK
 #endif
 
-#ifdef __APPLE_CC__    
-    typedef GLvoid (*GLUTesselatorFunction)(...);
+#if defined(__APPLE_CC__) 
+    #if __APPLE_CC__ >= 5465
+        typedef GLvoid (*GLUTesselatorFunction)();
+    #else
+        typedef GLvoid (*GLUTesselatorFunction)(...);
+    #endif
 #elif defined( __mips ) || defined( __linux__ ) || defined( __FreeBSD__ ) || defined( __OpenBSD__ ) || defined( __sun ) || defined (__CYGWIN__)
     typedef GLvoid (*GLUTesselatorFunction)();
 #elif defined ( WIN32)

Modified: branches/particles/intern/bmfont/intern/BMF_BitmapFont.cpp
===================================================================
--- branches/particles/intern/bmfont/intern/BMF_BitmapFont.cpp	2007-11-12 17:24:12 UTC (rev 12568)
+++ branches/particles/intern/bmfont/intern/BMF_BitmapFont.cpp	2007-11-12 18:39:23 UTC (rev 12569)
@@ -268,7 +268,7 @@
 				for (y = 0; y < cd.height; y++) {
 					unsigned char* chrRow = &m_fontData->bitmap_data[cd.data_offset + ((cd.width+7)/8)*y];
 					for (x = cd.xorig; x < cd.width; x++) {
-						pixel = buf + 4 * (((posy + y) * w) + (posx + x));
+						pixel = buf + 4 * (((posy + y - cd.yorig) * w) + (posx + x));
 						if ((pixel < max) && (pixel > buf)) {
 							int byteIdx = x/8;
 							int bitIdx = 7 - (x%8);

Modified: branches/particles/intern/iksolver/intern/IK_QJacobianSolver.cpp
===================================================================
--- branches/particles/intern/iksolver/intern/IK_QJacobianSolver.cpp	2007-11-12 17:24:12 UTC (rev 12568)
+++ branches/particles/intern/iksolver/intern/IK_QJacobianSolver.cpp	2007-11-12 18:39:23 UTC (rev 12569)
@@ -42,6 +42,36 @@
 	m_rootmatrix.setIdentity();
 }
 
+MT_Scalar IK_QJacobianSolver::ComputeScale()
+{
+	std::vector<IK_QSegment*>::iterator seg;
+	float length = 0.0f;
+
+	for (seg = m_segments.begin(); seg != m_segments.end(); seg++)
+		length += (*seg)->MaxExtension();
+	
+	if(length == 0.0f)
+		return 1.0f;
+	else
+		return 1.0f/length;
+}
+
+void IK_QJacobianSolver::Scale(float scale, std::list<IK_QTask*>& tasks)
+{
+	std::list<IK_QTask*>::iterator task;
+	std::vector<IK_QSegment*>::iterator seg;
+
+	for (task = tasks.begin(); task != tasks.end(); task++)
+		(*task)->Scale(scale);
+
+	for (seg = m_segments.begin(); seg != m_segments.end(); seg++)
+		(*seg)->Scale(scale);
+	
+	m_rootmatrix.getOrigin() *= scale;
+	m_goal *= scale;
+	m_polegoal *= scale;
+}
+
 void IK_QJacobianSolver::AddSegmentList(IK_QSegment *seg)
 {
 	m_segments.push_back(seg);
@@ -293,9 +323,12 @@
 	const int max_iterations
 )
 {
+	float scale = ComputeScale();
 	bool solved = false;
 	//double dt = analyze_time();
 
+	Scale(scale, tasks);
+
 	ConstrainPoleVector(root, tasks);
 
 	root->UpdateTransform(m_rootmatrix);
@@ -346,15 +379,14 @@
 		if (norm < 1e-3) {
 			solved = true;
 			break;
-			//analyze_add_run(iterations, analyze_time()-dt);
-
-			return true;
 		}
 	}
 
 	if(m_poleconstraint)
 		root->PrependBasis(m_rootmatrix.getBasis());
 
+	Scale(1.0f/scale, tasks);
+
 	//analyze_add_run(max_iterations, analyze_time()-dt);
 
 	return solved;

Modified: branches/particles/intern/iksolver/intern/IK_QJacobianSolver.h
===================================================================
--- branches/particles/intern/iksolver/intern/IK_QJacobianSolver.h	2007-11-12 17:24:12 UTC (rev 12568)
+++ branches/particles/intern/iksolver/intern/IK_QJacobianSolver.h	2007-11-12 18:39:23 UTC (rev 12569)
@@ -75,6 +75,9 @@
 	bool UpdateAngles(MT_Scalar& norm);
 	void ConstrainPoleVector(IK_QSegment *root, std::list<IK_QTask*>& tasks);
 
+	MT_Scalar ComputeScale();
+	void Scale(float scale, std::list<IK_QTask*>& tasks);
+
 private:
 
 	IK_QJacobian m_jacobian;

Modified: branches/particles/intern/iksolver/intern/IK_QSegment.cpp
===================================================================
--- branches/particles/intern/iksolver/intern/IK_QSegment.cpp	2007-11-12 17:24:12 UTC (rev 12568)
+++ branches/particles/intern/iksolver/intern/IK_QSegment.cpp	2007-11-12 18:39:23 UTC (rev 12569)
@@ -343,6 +343,16 @@
 	m_basis = m_rest_basis.inverse() * mat * m_rest_basis * m_basis;
 }
 
+void IK_QSegment::Scale(float scale)
+{
+	m_start *= scale;
+	m_translation *= scale;
+	m_orig_translation *= scale;
+	m_global_start *= scale;
+	m_global_transform.getOrigin() *= scale;
+	m_max_extension *= scale;
+}
+
 // IK_QSphericalSegment
 
 IK_QSphericalSegment::IK_QSphericalSegment()
@@ -1026,3 +1036,17 @@
 	m_limit[axis]= true;
 }
 
+void IK_QTranslateSegment::Scale(float scale)
+{
+	int i;
+
+	IK_QSegment::Scale(scale);
+
+	for (i = 0; i < 3; i++) {
+		m_min[0] *= scale;
+		m_max[1] *= scale;
+	}
+
+	m_new_translation *= scale;
+}
+

Modified: branches/particles/intern/iksolver/intern/IK_QSegment.h
===================================================================
--- branches/particles/intern/iksolver/intern/IK_QSegment.h	2007-11-12 17:24:12 UTC (rev 12568)
+++ branches/particles/intern/iksolver/intern/IK_QSegment.h	2007-11-12 18:39:23 UTC (rev 12569)
@@ -169,6 +169,9 @@
 	void PrependBasis(const MT_Matrix3x3& mat);
 	void Reset();
 
+	// scale
+	virtual void Scale(float scale);
+
 protected:
 
 	// num_DoF: number of degrees of freedom
@@ -335,6 +338,8 @@
 	void SetWeight(int axis, MT_Scalar weight);
 	void SetLimit(int axis, MT_Scalar lmin, MT_Scalar lmax);
 
+	void Scale(float scale);
+
 private:
 	int m_axis[3];
 	bool m_axis_enabled[3], m_limit[3];

Modified: branches/particles/intern/iksolver/intern/IK_QTask.h
===================================================================
--- branches/particles/intern/iksolver/intern/IK_QTask.h	2007-11-12 17:24:12 UTC (rev 12568)
+++ branches/particles/intern/iksolver/intern/IK_QTask.h	2007-11-12 18:39:23 UTC (rev 12569)
@@ -77,6 +77,8 @@
 
 	virtual bool PositionTask() const { return false; }
 
+	virtual void Scale(float scale) {}
+
 protected:
 	int m_id;
 	int m_size;
@@ -100,6 +102,7 @@
 	MT_Scalar Distance() const;
 
 	bool PositionTask() const { return true; }
+	void Scale(float scale) { m_goal *= scale; m_clamp_length *= scale; }
 
 private:
 	MT_Vector3 m_goal;
@@ -137,6 +140,8 @@
 
 	MT_Scalar Distance() const;
 
+	void Scale(float scale) { m_goal_center *= scale; m_distance *= scale; }
+
 private:
 	MT_Scalar ComputeTotalMass(const IK_QSegment *segment);
 	MT_Vector3 ComputeCenter(const IK_QSegment *segment);

Modified: branches/particles/intern/iksolver/intern/IK_Solver.cpp
===================================================================
--- branches/particles/intern/iksolver/intern/IK_Solver.cpp	2007-11-12 17:24:12 UTC (rev 12568)
+++ branches/particles/intern/iksolver/intern/IK_Solver.cpp	2007-11-12 18:39:23 UTC (rev 12569)
@@ -41,7 +41,7 @@
 
 class IK_QSolver {
 public:
-	IK_QSolver() {};
+	IK_QSolver() : root(NULL) {};
 
 	IK_QJacobianSolver solver;
 	IK_QSegment *root;
@@ -197,13 +197,12 @@
 	if (stiffness < 0.0)
 		return;
 	
-	if (stiffness > 0.99)
-		stiffness = 0.99;
+	if (stiffness > 0.999)
+		stiffness = 0.999;
 
 	IK_QSegment *qseg = (IK_QSegment*)seg;
 	MT_Scalar weight = 1.0-stiffness;
 
-
 	if (axis >= IK_TRANS_X) {
 		if(!qseg->Translational())
 			if(qseg->Composite() && qseg->Composite()->Translational())

Modified: branches/particles/intern/opennl/extern/ONL_opennl.h
===================================================================
--- branches/particles/intern/opennl/extern/ONL_opennl.h	2007-11-12 17:24:12 UTC (rev 12568)
+++ branches/particles/intern/opennl/extern/ONL_opennl.h	2007-11-12 18:39:23 UTC (rev 12569)
@@ -79,21 +79,17 @@
 
 #define NL_SYSTEM  0x0
 #define NL_MATRIX  0x1
-#define NL_ROW     0x2
 
 /* Solver Parameters */
 
-#define NL_SOLVER           0x100
-#define NL_NB_VARIABLES     0x101
-#define NL_LEAST_SQUARES    0x102
-#define NL_SYMMETRIC        0x106
-#define NL_ERROR            0x108
+#define NL_SOLVER              0x100
+#define NL_NB_VARIABLES        0x101
+#define NL_LEAST_SQUARES       0x102
+#define NL_SYMMETRIC           0x106
+#define NL_ERROR               0x108
+#define NL_NB_ROWS             0x110
+#define NL_NB_RIGHT_HAND_SIDES 0x112 /* 4 max */
 
-/* Row parameters */
-
-#define NL_RIGHT_HAND_SIDE 0x500
-#define NL_ROW_SCALING     0x501
-
 /* Contexts */
 
 NLContext nlNewContext(void);
@@ -106,9 +102,6 @@
 void nlSolverParameterf(NLenum pname, NLfloat param);
 void nlSolverParameteri(NLenum pname, NLint param);
 
-void nlRowParameterf(NLenum pname, NLfloat param);
-void nlRowParameteri(NLenum pname, NLint param);
-
 void nlGetBooleanv(NLenum pname, NLboolean* params);
 void nlGetFloatv(NLenum pname, NLfloat* params);
 void nlGetIntergerv(NLenum pname, NLint* params);
@@ -119,8 +112,8 @@
 
 /* Variables */
 
-void nlSetVariable(NLuint index, NLfloat value);
-NLfloat nlGetVariable(NLuint index);
+void nlSetVariable(NLuint rhsindex, NLuint index, NLfloat value);
+NLfloat nlGetVariable(NLuint rhsindex, NLuint index);
 void nlLockVariable(NLuint index);
 void nlUnlockVariable(NLuint index);
 NLboolean nlVariableIsLocked(NLuint index);
@@ -129,15 +122,17 @@
 
 void nlBegin(NLenum primitive);
 void nlEnd(NLenum primitive);
-void nlCoefficient(NLuint index, NLfloat value);
 
-/* Setting random elements matrix/vector - not supported for
-   least squares! */
+/* Setting elements in matrix/vector */
 
 void nlMatrixAdd(NLuint row, NLuint col, NLfloat value);
-void nlRightHandSideAdd(NLuint index, NLfloat value);
-void nlRightHandSideSet(NLuint index, NLfloat value);
+void nlRightHandSideAdd(NLuint rhsindex, NLuint index, NLfloat value);
+void nlRightHandSideSet(NLuint rhsindex, NLuint index, NLfloat value);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list