本文整理汇总了C++中btRigidBody::getWorldTransform方法的典型用法代码示例。如果您正苦于以下问题:C++ btRigidBody::getWorldTransform方法的具体用法?C++ btRigidBody::getWorldTransform怎么用?C++ btRigidBody::getWorldTransform使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类btRigidBody
的用法示例。
在下文中一共展示了btRigidBody::getWorldTransform方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: utilSyncHeadRepresentation
void BulletWrapper::utilSyncHeadRepresentation(const EigenTypes::Vector3f& headPosition, float deltaTime)
{
// apply velocities or apply positions
btVector3 target = ToBullet(headPosition);
btVector3 current = m_HeadRepresentation->getWorldTransform().getOrigin();
btVector3 targetVelocity = (target - current) / deltaTime;
m_HeadRepresentation->setLinearVelocity(targetVelocity);
m_HeadRepresentation->setAngularVelocity(btVector3(0, 0, 0));
}
示例2: set_trans
void set_trans(cl_float4 clpos, quaternion m)
{
mat3f mat_diff = base_diff.get_rotation_matrix();
mat3f current_hand = m.get_rotation_matrix();
mat3f my_rot = current_hand * mat_diff;
quaternion n;
n.load_from_matrix(my_rot);
vec3f absolute_pos = {clpos.x, clpos.y, clpos.z};
///current hand does not take into account the rotation offset when grabbing
///ie we'll double rotate
vec3f offset_rot = current_hand * offset;
vec3f pos = absolute_pos + offset_rot;
btTransform newTrans;
//rigid_body->getMotionState()->getWorldTransform(newTrans);
newTrans.setOrigin(btVector3(pos.v[0], pos.v[1], pos.v[2]));
newTrans.setRotation(btQuaternion(n.x(), n.y(), n.z(), n.w()));
rigid_body->getMotionState()->setWorldTransform(newTrans);
//rigid_body->setInterpolationWorldTransform(newTrans);
//if(ctr)
// ctr->set_pos(conv_implicit<cl_float4>(pos));
slide_parent_init = true;
slide_saved_parent = absolute_pos;
remote_pos = pos;
remote_rot = n;
kinematic_old = kinematic_current;
kinematic_current = xyzf_to_vec(rigid_body->getWorldTransform().getOrigin());
}
示例3:
void BulletWrapper::utilBounceBodiesAt2mAway()
{
btVector3 headPosition = m_HeadRepresentation->getWorldTransform().getOrigin();
for (size_t i = 0; i < m_BodyDatas.size(); i++)
{
btRigidBody* body = m_BodyDatas[i].m_Body;
btVector3 position = body->getWorldTransform().getOrigin();
if ((position - headPosition).length2() > 2.0f * 2.0f)
{
// ensure velocity is not away from center
btVector3 velocity = body->getLinearVelocity();
btVector3 toCenter = (headPosition - position).normalized();
float dot = velocity.dot(toCenter);
if (dot < 0.0f)
{
velocity -= 2.0f * dot * toCenter;
body->setLinearVelocity(velocity);
}
}
}
}