fix(physics): made the physics slightly less jittery, but only slightly
This commit is contained in:
parent
9e43c63c4e
commit
1617086692
2 changed files with 14 additions and 7 deletions
|
@ -35,6 +35,8 @@ void Workspace::InitService() {
|
|||
// world->setContactsPositionCorrectionTechnique(rp3d::ContactsPositionCorrectionTechnique::BAUMGARTE_CONTACTS);
|
||||
physicsWorld->setNbIterationsPositionSolver(2000);
|
||||
physicsWorld->setNbIterationsVelocitySolver(2000);
|
||||
// physicsWorld->setSleepLinearVelocity(10);
|
||||
// physicsWorld->setSleepAngularVelocity(5);
|
||||
|
||||
// physicsWorld->setEventListener(&eventListener);
|
||||
|
||||
|
@ -61,17 +63,22 @@ void Workspace::SyncPartPhysics(std::shared_ptr<Part> part) {
|
|||
|
||||
rp::BoxShape* shape = physicsCommon->createBoxShape(glmToRp(part->size * glm::vec3(0.5f)));
|
||||
|
||||
if (part->rigidBody->getNbColliders() > 0) {
|
||||
if (part->rigidBody->getNbColliders() > 0)
|
||||
part->rigidBody->removeCollider(part->rigidBody->getCollider(0));
|
||||
}
|
||||
|
||||
if (part->rigidBody->getNbColliders() == 0)
|
||||
part->rigidBody->addCollider(shape, rp::Transform());
|
||||
part->rigidBody->setType(part->anchored ? rp::BodyType::STATIC : rp::BodyType::DYNAMIC);
|
||||
part->rigidBody->getCollider(0)->setCollisionCategoryBits(0b11);
|
||||
|
||||
float density = 1.f;
|
||||
part->rigidBody->setMass(density * part->size.x * part->size.y * part->size.z);
|
||||
rp::Material& material = part->rigidBody->getCollider(0)->getMaterial();
|
||||
material.setFrictionCoefficient(0.35);
|
||||
material.setMassDensity(1.f);
|
||||
|
||||
//https://github.com/DanielChappuis/reactphysics3d/issues/170#issuecomment-691514860
|
||||
part->rigidBody->updateMassFromColliders();
|
||||
part->rigidBody->updateLocalInertiaTensorFromColliders();
|
||||
|
||||
// part->rigidBody->setMass(density * part->size.x * part->size.y * part->size.z);
|
||||
|
||||
part->rigidBody->setUserData(&*part);
|
||||
}
|
||||
|
|
|
@ -155,7 +155,7 @@ MainWindow::MainWindow(QWidget *parent)
|
|||
auto part0 = ui->mainWidget->lastPart;
|
||||
|
||||
gWorkspace()->AddChild(ui->mainWidget->lastPart = Part::New({
|
||||
.position = glm::vec3(1.6691498, 0.82489049, -0.73040605),
|
||||
.position = glm::vec3(1.7610925, 0.48568499, -0.82623518),
|
||||
// .rotation = glm::vec3(0.5, 2, 1),
|
||||
.rotation = glm::vec3(-2.6415927, 1.1415926, -2.141639),
|
||||
.size = glm::vec3(4, 1.2, 2),
|
||||
|
|
Loading…
Add table
Reference in a new issue