小编Tom*_*ith的帖子

刚体仿真摩擦力

我目前正在研究3D刚体仿真程序.我目前设法让刚体与地板碰撞并使用冲动正确弹跳.然而,我的问题是,一旦它们反弹,它们会不断加速,尽管使用摩擦矢量试图减慢它们.

当你到达地面时,这是代码

Rvector fDirection(m_Bodies[i].Vel.x,0.0,m_Bodies[i].Vel.z);
Rvector relativeVelocities = m_Bodies[i].Vel - floorVelocity;
fDirection.normalize();


Real impulse = -(1+e) * (Rvector::dotProduct(relativeVelocities,floorNormal)) 
/ (1/m_Bodies[i].mass + floorMass);
Rvector friction = fDirection*mu*gravity.length()*m_Bodies[i].mass;

Rvector collision_forces = Rvector(0,1,0)*impulse;
collision_forces += friction ;

m_Bodies[i].Vel += (collision_forces/m_Bodies[i].mass);
Run Code Online (Sandbox Code Playgroud)

谢谢

编辑:这是集成代码.

void RigidBodySimulation::eulerIntegration(float dTime)
{
    Rvector newVel;
    Rvector newPos;
    Rvector zero(0.0, 0.0, 0.0);
    Real one_over_mass;
    Rvector accel;
    for( unsigned int i = 0 ; i < m_Bodies.size(); i++)
    {   
        one_over_mass = 1/m_Bodies[i].mass;
        newVel = m_Bodies[i].Vel + m_Bodies[i].force*one_over_mass*dTime;
        newPos = m_Bodies[i].Pos + m_Bodies[i].Vel*dTime;
        accel …
Run Code Online (Sandbox Code Playgroud)

c++ 3d physics rigid-bodies

5
推荐指数
1
解决办法
2897
查看次数

标签 统计

3d ×1

c++ ×1

physics ×1

rigid-bodies ×1