[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11604] branches/particles: Merge from trunk: revisions 11297-11589
Janne Karhu
jhkarh at utu.fi
Tue Aug 14 23:58:53 CEST 2007
Revision: 11604
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11604
Author: jhk
Date: 2007-08-14 23:58:53 +0200 (Tue, 14 Aug 2007)
Log Message:
-----------
Merge from trunk: revisions 11297-11589
+ a forgotten dna file
Modified Paths:
--------------
branches/particles/extern/bullet2/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp
branches/particles/extern/bullet2/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h
branches/particles/intern/bsp/intern/BSP_CSGMesh_CFIterator.h
branches/particles/intern/opennl/extern/ONL_opennl.h
branches/particles/intern/opennl/intern/opennl.c
branches/particles/projectfiles_vc7/blender/ftfont/FTF_ftfont.vcproj
branches/particles/projectfiles_vc7/blender/render/BRE_render.vcproj
branches/particles/projectfiles_vc7/blender/src/BL_src.vcproj
branches/particles/release/scripts/3ds_import.py
branches/particles/release/scripts/DirectX8Importer.py
branches/particles/release/scripts/ac3d_import.py
branches/particles/release/scripts/bpymodules/BPyMesh.py
branches/particles/release/scripts/bpymodules/colladaImEx/collada.py
branches/particles/release/scripts/bpymodules/colladaImEx/cstartup.py
branches/particles/release/scripts/bpymodules/colladaImEx/cutils.py
branches/particles/release/scripts/bpymodules/colladaImEx/helperObjects.py
branches/particles/release/scripts/bpymodules/colladaImEx/xmlUtils.py
branches/particles/release/scripts/bvh_import.py
branches/particles/release/scripts/colladaExport14.py
branches/particles/release/scripts/colladaImport14.py
branches/particles/release/scripts/export_fbx.py
branches/particles/release/scripts/import_obj.py
branches/particles/release/scripts/lightwave_import.py
branches/particles/release/scripts/ply_import.py
branches/particles/release/scripts/uv_export.py
branches/particles/release/scripts/vertexpaint_selfshadow_ao.py
branches/particles/release/text/BlenderQuickStart.pdf
branches/particles/source/blender/blenkernel/BKE_DerivedMesh.h
branches/particles/source/blender/blenkernel/BKE_action.h
branches/particles/source/blender/blenkernel/BKE_constraint.h
branches/particles/source/blender/blenkernel/BKE_global.h
branches/particles/source/blender/blenkernel/BKE_lattice.h
branches/particles/source/blender/blenkernel/BKE_modifier.h
branches/particles/source/blender/blenkernel/BKE_object.h
branches/particles/source/blender/blenkernel/intern/DerivedMesh.c
branches/particles/source/blender/blenkernel/intern/action.c
branches/particles/source/blender/blenkernel/intern/anim.c
branches/particles/source/blender/blenkernel/intern/armature.c
branches/particles/source/blender/blenkernel/intern/constraint.c
branches/particles/source/blender/blenkernel/intern/ipo.c
branches/particles/source/blender/blenkernel/intern/key.c
branches/particles/source/blender/blenkernel/intern/modifier.c
branches/particles/source/blender/blenkernel/intern/object.c
branches/particles/source/blender/blenkernel/intern/particle.c
branches/particles/source/blender/blenkernel/intern/particle_system.c
branches/particles/source/blender/blenkernel/intern/softbody.c
branches/particles/source/blender/blenkernel/intern/subsurf_ccg.c
branches/particles/source/blender/blenlib/BLI_arithb.h
branches/particles/source/blender/blenlib/intern/arithb.c
branches/particles/source/blender/blenloader/intern/readfile.c
branches/particles/source/blender/blenloader/intern/writefile.c
branches/particles/source/blender/ftfont/CMakeLists.txt
branches/particles/source/blender/ftfont/FTF_Api.h
branches/particles/source/blender/ftfont/SConscript
branches/particles/source/blender/ftfont/intern/FTF_Api.cpp
branches/particles/source/blender/ftfont/intern/Makefile
branches/particles/source/blender/include/BIF_editarmature.h
branches/particles/source/blender/include/BIF_editconstraint.h
branches/particles/source/blender/include/BIF_interface.h
branches/particles/source/blender/include/BIF_poseobject.h
branches/particles/source/blender/include/BIF_resources.h
branches/particles/source/blender/include/BIF_transform.h
branches/particles/source/blender/include/BSE_editipo.h
branches/particles/source/blender/include/BSE_node.h
branches/particles/source/blender/include/butspace.h
branches/particles/source/blender/include/multires.h
branches/particles/source/blender/include/transform.h
branches/particles/source/blender/makesdna/DNA_action_types.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_group_types.h
branches/particles/source/blender/makesdna/DNA_image_types.h
branches/particles/source/blender/makesdna/DNA_ipo_types.h
branches/particles/source/blender/makesdna/DNA_lamp_types.h
branches/particles/source/blender/makesdna/DNA_mesh_types.h
branches/particles/source/blender/makesdna/DNA_meshdata_types.h
branches/particles/source/blender/makesdna/DNA_modifier_types.h
branches/particles/source/blender/makesdna/DNA_nla_types.h
branches/particles/source/blender/makesdna/DNA_object_types.h
branches/particles/source/blender/makesdna/DNA_scene_types.h
branches/particles/source/blender/makesdna/DNA_screen_types.h
branches/particles/source/blender/makesdna/DNA_sequence_types.h
branches/particles/source/blender/makesdna/DNA_space_types.h
branches/particles/source/blender/makesdna/DNA_texture_types.h
branches/particles/source/blender/makesdna/DNA_world_types.h
branches/particles/source/blender/nodes/intern/CMP_nodes/CMP_math.c
branches/particles/source/blender/python/BPY_extern.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/Bone.c
branches/particles/source/blender/python/api2_2x/Constraint.c
branches/particles/source/blender/python/api2_2x/Curve.c
branches/particles/source/blender/python/api2_2x/Draw.c
branches/particles/source/blender/python/api2_2x/Draw.h
branches/particles/source/blender/python/api2_2x/Effect.c
branches/particles/source/blender/python/api2_2x/Material.c
branches/particles/source/blender/python/api2_2x/Mathutils.c
branches/particles/source/blender/python/api2_2x/Mesh.c
branches/particles/source/blender/python/api2_2x/Object.c
branches/particles/source/blender/python/api2_2x/Scene.c
branches/particles/source/blender/python/api2_2x/SurfNurb.c
branches/particles/source/blender/python/api2_2x/Texture.c
branches/particles/source/blender/python/api2_2x/Window.c
branches/particles/source/blender/python/api2_2x/doc/Blender.py
branches/particles/source/blender/python/api2_2x/doc/Constraint.py
branches/particles/source/blender/python/api2_2x/doc/Draw.py
branches/particles/source/blender/python/api2_2x/doc/Mesh.py
branches/particles/source/blender/python/api2_2x/sceneSequence.h
branches/particles/source/blender/render/intern/include/render_types.h
branches/particles/source/blender/render/intern/include/rendercore.h
branches/particles/source/blender/render/intern/source/convertblender.c
branches/particles/source/blender/render/intern/source/envmap.c
branches/particles/source/blender/render/intern/source/pipeline.c
branches/particles/source/blender/render/intern/source/rendercore.c
branches/particles/source/blender/render/intern/source/shadeoutput.c
branches/particles/source/blender/render/intern/source/texture.c
branches/particles/source/blender/src/buttons_editing.c
branches/particles/source/blender/src/buttons_object.c
branches/particles/source/blender/src/buttons_shading.c
branches/particles/source/blender/src/drawaction.c
branches/particles/source/blender/src/drawarmature.c
branches/particles/source/blender/src/drawimage.c
branches/particles/source/blender/src/drawipo.c
branches/particles/source/blender/src/drawobject.c
branches/particles/source/blender/src/drawscript.c
branches/particles/source/blender/src/drawseq.c
branches/particles/source/blender/src/drawview.c
branches/particles/source/blender/src/edit.c
branches/particles/source/blender/src/editaction.c
branches/particles/source/blender/src/editarmature.c
branches/particles/source/blender/src/editconstraint.c
branches/particles/source/blender/src/editface.c
branches/particles/source/blender/src/editipo.c
branches/particles/source/blender/src/editipo_mods.c
branches/particles/source/blender/src/editkey.c
branches/particles/source/blender/src/editmesh_mods.c
branches/particles/source/blender/src/editnode.c
branches/particles/source/blender/src/editobject.c
branches/particles/source/blender/src/editscreen.c
branches/particles/source/blender/src/editseq.c
branches/particles/source/blender/src/edittime.c
branches/particles/source/blender/src/filesel.c
branches/particles/source/blender/src/header_action.c
branches/particles/source/blender/src/header_filesel.c
branches/particles/source/blender/src/header_info.c
branches/particles/source/blender/src/header_view3d.c
branches/particles/source/blender/src/interface_draw.c
branches/particles/source/blender/src/multires.c
branches/particles/source/blender/src/outliner.c
branches/particles/source/blender/src/poseobject.c
branches/particles/source/blender/src/seqeffects.c
branches/particles/source/blender/src/sequence.c
branches/particles/source/blender/src/space.c
branches/particles/source/blender/src/toolbox.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/vpaint.c
branches/particles/source/gameengine/Converter/BL_ActionActuator.cpp
branches/particles/source/gameengine/Converter/BL_SkinDeformer.cpp
branches/particles/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
Added Paths:
-----------
branches/particles/release/scripts/bpymodules/colladaImEx/translator.py
branches/particles/release/scripts/weightpaint_average.py
branches/particles/source/blender/include/BIF_meshlaplacian.h
branches/particles/source/blender/makesdna/DNA_bake_types.h
branches/particles/source/blender/render/extern/include/RE_raytrace.h
branches/particles/source/blender/render/intern/source/rayshade.c
branches/particles/source/blender/render/intern/source/raytrace.c
branches/particles/source/blender/src/meshlaplacian.c
Removed Paths:
-------------
branches/particles/bin/.blender/locale/pt_br/
branches/particles/bin/.blender/locale/zh_cn/
branches/particles/release/scripts/bpymodules/colladaImEx/translator.py
branches/particles/source/blender/render/intern/source/ray.c
Modified: branches/particles/extern/bullet2/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp
===================================================================
--- branches/particles/extern/bullet2/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp 2007-08-14 20:55:59 UTC (rev 11603)
+++ branches/particles/extern/bullet2/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp 2007-08-14 21:58:53 UTC (rev 11604)
@@ -17,176 +17,58 @@
#include "btHingeConstraint.h"
#include "BulletDynamics/Dynamics/btRigidBody.h"
#include "LinearMath/btTransformUtil.h"
-#include "LinearMath/btSimdMinMax.h"
#include <new>
-
btHingeConstraint::btHingeConstraint():
m_enableAngularMotor(false)
{
}
btHingeConstraint::btHingeConstraint(btRigidBody& rbA,btRigidBody& rbB, const btVector3& pivotInA,const btVector3& pivotInB,
- btVector3& axisInA,btVector3& axisInB)
- :btTypedConstraint(rbA,rbB),
- m_angularOnly(false),
- m_enableAngularMotor(false)
+ btVector3& axisInA,btVector3& axisInB)
+:btTypedConstraint(rbA,rbB),m_pivotInA(pivotInA),m_pivotInB(pivotInB),
+m_axisInA(axisInA),
+m_axisInB(-axisInB),
+m_angularOnly(false),
+m_enableAngularMotor(false)
{
- m_rbAFrame.getOrigin() = pivotInA;
-
- // since no frame is given, assume this to be zero angle and just pick rb transform axis
- btVector3 rbAxisA1 = rbA.getCenterOfMassTransform().getBasis().getColumn(0);
- btScalar projection = rbAxisA1.dot(axisInA);
- if (projection > SIMD_EPSILON)
- rbAxisA1 = rbAxisA1*projection - axisInA;
- else
- rbAxisA1 = rbA.getCenterOfMassTransform().getBasis().getColumn(1);
-
- btVector3 rbAxisA2 = rbAxisA1.cross(axisInA);
- m_rbAFrame.getBasis().setValue( rbAxisA1.getX(),rbAxisA2.getX(),axisInA.getX(),
- rbAxisA1.getY(),rbAxisA2.getY(),axisInA.getY(),
- rbAxisA1.getZ(),rbAxisA2.getZ(),axisInA.getZ() );
-
- btQuaternion rotationArc = shortestArcQuat(axisInA,axisInB);
- btVector3 rbAxisB1 = quatRotate(rotationArc,rbAxisA1);
- btVector3 rbAxisB2 = rbAxisB1.cross(axisInB);
-
-
- m_rbBFrame.getOrigin() = pivotInB;
- m_rbBFrame.getBasis().setValue( rbAxisB1.getX(),rbAxisB2.getX(),-axisInB.getX(),
- rbAxisB1.getY(),rbAxisB2.getY(),-axisInB.getY(),
- rbAxisB1.getZ(),rbAxisB2.getZ(),-axisInB.getZ() );
-
- //start with free
- m_lowerLimit = btScalar(1e30);
- m_upperLimit = btScalar(-1e30);
- m_biasFactor = 0.3f;
- m_relaxationFactor = 1.0f;
- m_limitSoftness = 0.9f;
- m_solveLimit = false;
-
}
btHingeConstraint::btHingeConstraint(btRigidBody& rbA,const btVector3& pivotInA,btVector3& axisInA)
-:btTypedConstraint(rbA), m_angularOnly(false), m_enableAngularMotor(false)
-{
-
- // since no frame is given, assume this to be zero angle and just pick rb transform axis
- // fixed axis in worldspace
- btVector3 rbAxisA1 = rbA.getCenterOfMassTransform().getBasis().getColumn(0);
- btScalar projection = rbAxisA1.dot(axisInA);
- if (projection > SIMD_EPSILON)
- rbAxisA1 = rbAxisA1*projection - axisInA;
- else
- rbAxisA1 = rbA.getCenterOfMassTransform().getBasis().getColumn(1);
-
- btVector3 rbAxisA2 = axisInA.cross(rbAxisA1);
-
- m_rbAFrame.getOrigin() = pivotInA;
- m_rbAFrame.getBasis().setValue( rbAxisA1.getX(),rbAxisA2.getX(),axisInA.getX(),
- rbAxisA1.getY(),rbAxisA2.getY(),axisInA.getY(),
- rbAxisA1.getZ(),rbAxisA2.getZ(),axisInA.getZ() );
-
-
- btVector3 axisInB = rbA.getCenterOfMassTransform().getBasis() * -axisInA;
-
- btQuaternion rotationArc = shortestArcQuat(axisInA,axisInB);
- btVector3 rbAxisB1 = quatRotate(rotationArc,rbAxisA1);
- btVector3 rbAxisB2 = axisInB.cross(rbAxisB1);
-
-
- m_rbBFrame.getOrigin() = rbA.getCenterOfMassTransform()(pivotInA);
- m_rbBFrame.getBasis().setValue( rbAxisB1.getX(),rbAxisB2.getX(),axisInB.getX(),
- rbAxisB1.getY(),rbAxisB2.getY(),axisInB.getY(),
- rbAxisB1.getZ(),rbAxisB2.getZ(),axisInB.getZ() );
-
- //start with free
- m_lowerLimit = btScalar(1e30);
- m_upperLimit = btScalar(-1e30);
- m_biasFactor = 0.3f;
- m_relaxationFactor = 1.0f;
- m_limitSoftness = 0.9f;
- m_solveLimit = false;
-}
-
-btHingeConstraint::btHingeConstraint(btRigidBody& rbA,btRigidBody& rbB,
- const btTransform& rbAFrame, const btTransform& rbBFrame)
-:btTypedConstraint(rbA,rbB),m_rbAFrame(rbAFrame),m_rbBFrame(rbBFrame),
+:btTypedConstraint(rbA),m_pivotInA(pivotInA),m_pivotInB(rbA.getCenterOfMassTransform()(pivotInA)),
+m_axisInA(axisInA),
+//fixed axis in worldspace
+m_axisInB(rbA.getCenterOfMassTransform().getBasis() * -axisInA),
m_angularOnly(false),
m_enableAngularMotor(false)
{
- // flip axis
- m_rbBFrame.getBasis()[2][0] *= btScalar(-1.);
- m_rbBFrame.getBasis()[2][1] *= btScalar(-1.);
- m_rbBFrame.getBasis()[2][2] *= btScalar(-1.);
-
- //start with free
- m_lowerLimit = btScalar(1e30);
- m_upperLimit = btScalar(-1e30);
- m_biasFactor = 0.3f;
- m_relaxationFactor = 1.0f;
- m_limitSoftness = 0.9f;
- m_solveLimit = false;
-}
-
-
-
-btHingeConstraint::btHingeConstraint(btRigidBody& rbA, const btTransform& rbAFrame)
-:btTypedConstraint(rbA),m_rbAFrame(rbAFrame),m_rbBFrame(rbAFrame),
-m_angularOnly(false),
-m_enableAngularMotor(false)
-{
- // flip axis
- m_rbBFrame.getBasis()[2][0] *= btScalar(-1.);
- m_rbBFrame.getBasis()[2][1] *= btScalar(-1.);
- m_rbBFrame.getBasis()[2][2] *= btScalar(-1.);
-
-
- //start with free
- m_lowerLimit = btScalar(1e30);
- m_upperLimit = btScalar(-1e30);
- m_biasFactor = 0.3f;
- m_relaxationFactor = 1.0f;
- m_limitSoftness = 0.9f;
- m_solveLimit = false;
+
}
void btHingeConstraint::buildJacobian()
{
m_appliedImpulse = btScalar(0.);
+ btVector3 normal(0,0,0);
+
if (!m_angularOnly)
{
- btVector3 pivotAInW = m_rbA.getCenterOfMassTransform()*m_rbAFrame.getOrigin();
- btVector3 pivotBInW = m_rbB.getCenterOfMassTransform()*m_rbBFrame.getOrigin();
- btVector3 relPos = pivotBInW - pivotAInW;
-
- btVector3 normal[3];
- if (relPos.length2() > SIMD_EPSILON)
- {
- normal[0] = relPos.normalized();
- }
- else
- {
- normal[0].setValue(btScalar(1.0),0,0);
- }
-
- btPlaneSpace1(normal[0], normal[1], normal[2]);
-
for (int i=0;i<3;i++)
{
+ normal[i] = 1;
new (&m_jac[i]) btJacobianEntry(
m_rbA.getCenterOfMassTransform().getBasis().transpose(),
m_rbB.getCenterOfMassTransform().getBasis().transpose(),
- pivotAInW - m_rbA.getCenterOfMassPosition(),
- pivotBInW - m_rbB.getCenterOfMassPosition(),
- normal[i],
+ m_rbA.getCenterOfMassTransform()*m_pivotInA - m_rbA.getCenterOfMassPosition(),
+ m_rbB.getCenterOfMassTransform()*m_pivotInB - m_rbB.getCenterOfMassPosition(),
+ normal,
m_rbA.getInvInertiaDiagLocal(),
m_rbA.getInvMass(),
m_rbB.getInvInertiaDiagLocal(),
m_rbB.getInvMass());
+ normal[i] = 0;
}
}
@@ -197,12 +79,12 @@
btVector3 jointAxis0local;
btVector3 jointAxis1local;
- btPlaneSpace1(m_rbAFrame.getBasis().getColumn(2),jointAxis0local,jointAxis1local);
+ btPlaneSpace1(m_axisInA,jointAxis0local,jointAxis1local);
- getRigidBodyA().getCenterOfMassTransform().getBasis() * m_rbAFrame.getBasis().getColumn(2);
+ getRigidBodyA().getCenterOfMassTransform().getBasis() * m_axisInA;
btVector3 jointAxis0 = getRigidBodyA().getCenterOfMassTransform().getBasis() * jointAxis0local;
btVector3 jointAxis1 = getRigidBodyA().getCenterOfMassTransform().getBasis() * jointAxis1local;
- btVector3 hingeAxisWorld = getRigidBodyA().getCenterOfMassTransform().getBasis() * m_rbAFrame.getBasis().getColumn(2);
+ btVector3 hingeAxisWorld = getRigidBodyA().getCenterOfMassTransform().getBasis() * m_axisInA;
new (&m_jacAng[0]) btJacobianEntry(jointAxis0,
m_rbA.getCenterOfMassTransform().getBasis().transpose(),
@@ -223,71 +105,44 @@
m_rbB.getInvInertiaDiagLocal());
- // Compute limit information
- btScalar hingeAngle = getHingeAngle();
- //set bias, sign, clear accumulator
- m_correction = btScalar(0.);
- m_limitSign = btScalar(0.);
- m_solveLimit = false;
- m_accLimitImpulse = btScalar(0.);
-
- if (m_lowerLimit < m_upperLimit)
- {
- if (hingeAngle <= m_lowerLimit*m_limitSoftness)
- {
- m_correction = (m_lowerLimit - hingeAngle);
- m_limitSign = 1.0f;
- m_solveLimit = true;
- }
- else if (hingeAngle >= m_upperLimit*m_limitSoftness)
- {
- m_correction = m_upperLimit - hingeAngle;
- m_limitSign = -1.0f;
- m_solveLimit = true;
- }
- }
-
- //Compute K = J*W*J' for hinge axis
- btVector3 axisA = getRigidBodyA().getCenterOfMassTransform().getBasis() * m_rbAFrame.getBasis().getColumn(2);
- m_kHinge = 1.0f / (getRigidBodyA().computeAngularImpulseDenominator(axisA) +
- getRigidBodyB().computeAngularImpulseDenominator(axisA));
-
}
void btHingeConstraint::solveConstraint(btScalar timeStep)
{
- btVector3 pivotAInW = m_rbA.getCenterOfMassTransform()*m_rbAFrame.getOrigin();
- btVector3 pivotBInW = m_rbB.getCenterOfMassTransform()*m_rbBFrame.getOrigin();
+ btVector3 pivotAInW = m_rbA.getCenterOfMassTransform()*m_pivotInA;
+ btVector3 pivotBInW = m_rbB.getCenterOfMassTransform()*m_pivotInB;
+ btVector3 normal(0,0,0);
btScalar tau = btScalar(0.3);
btScalar damping = btScalar(1.);
//linear part
if (!m_angularOnly)
{
- btVector3 rel_pos1 = pivotAInW - m_rbA.getCenterOfMassPosition();
- btVector3 rel_pos2 = pivotBInW - m_rbB.getCenterOfMassPosition();
-
- btVector3 vel1 = m_rbA.getVelocityInLocalPoint(rel_pos1);
- btVector3 vel2 = m_rbB.getVelocityInLocalPoint(rel_pos2);
- btVector3 vel = vel1 - vel2;
-
for (int i=0;i<3;i++)
{
- const btVector3& normal = m_jac[i].m_linearJointAxis;
+ normal[i] = 1;
btScalar jacDiagABInv = btScalar(1.) / m_jac[i].getDiagonal();
+ btVector3 rel_pos1 = pivotAInW - m_rbA.getCenterOfMassPosition();
+ btVector3 rel_pos2 = pivotBInW - m_rbB.getCenterOfMassPosition();
+
+ btVector3 vel1 = m_rbA.getVelocityInLocalPoint(rel_pos1);
+ btVector3 vel2 = m_rbB.getVelocityInLocalPoint(rel_pos2);
+ btVector3 vel = vel1 - vel2;
btScalar rel_vel;
rel_vel = normal.dot(vel);
//positional error (zeroth order error)
btScalar depth = -(pivotAInW - pivotBInW).dot(normal); //this is the error projected on the normal
- btScalar impulse = depth*tau/timeStep * jacDiagABInv - rel_vel * jacDiagABInv;
+ btScalar impulse = depth*tau/timeStep * jacDiagABInv - damping * rel_vel * jacDiagABInv * damping;
m_appliedImpulse += impulse;
btVector3 impulse_vector = normal * impulse;
m_rbA.applyImpulse(impulse_vector, pivotAInW - m_rbA.getCenterOfMassPosition());
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list