diff --git a/doc/classes/RigidBody.xml b/doc/classes/RigidBody.xml
index 2ae6ec1a553..a67513e26e2 100644
--- a/doc/classes/RigidBody.xml
+++ b/doc/classes/RigidBody.xml
@@ -120,6 +120,13 @@
Sets an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior.
+
+
+
+
+ Returns the inverse inertia tensor basis. This is used to calculate the angular acceleration resulting from a torque applied to the RigidBody.
+
+
diff --git a/scene/3d/physics_body.cpp b/scene/3d/physics_body.cpp
index 1e9e6672262..2c1b4799e85 100644
--- a/scene/3d/physics_body.cpp
+++ b/scene/3d/physics_body.cpp
@@ -453,6 +453,7 @@ void RigidBody::_direct_state_changed(Object *p_state) {
set_global_transform(state->get_transform());
linear_velocity = state->get_linear_velocity();
angular_velocity = state->get_angular_velocity();
+ inverse_inertia_tensor = state->get_inverse_inertia_tensor();
if (sleeping != state->is_sleeping()) {
sleeping = state->is_sleeping();
emit_signal(SceneStringNames::get_singleton()->sleeping_state_changed);
@@ -765,6 +766,10 @@ Vector3 RigidBody::get_angular_velocity() const {
return angular_velocity;
}
+Basis RigidBody::get_inverse_inertia_tensor() {
+ return inverse_inertia_tensor;
+}
+
void RigidBody::set_use_custom_integrator(bool p_enable) {
if (custom_integrator == p_enable)
@@ -956,6 +961,8 @@ void RigidBody::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_angular_velocity", "angular_velocity"), &RigidBody::set_angular_velocity);
ClassDB::bind_method(D_METHOD("get_angular_velocity"), &RigidBody::get_angular_velocity);
+ ClassDB::bind_method(D_METHOD("get_inverse_inertia_tensor"), &RigidBody::get_inverse_inertia_tensor);
+
ClassDB::bind_method(D_METHOD("set_gravity_scale", "gravity_scale"), &RigidBody::set_gravity_scale);
ClassDB::bind_method(D_METHOD("get_gravity_scale"), &RigidBody::get_gravity_scale);
diff --git a/scene/3d/physics_body.h b/scene/3d/physics_body.h
index 05bcbe22f00..c263ce59565 100644
--- a/scene/3d/physics_body.h
+++ b/scene/3d/physics_body.h
@@ -135,6 +135,7 @@ protected:
Vector3 linear_velocity;
Vector3 angular_velocity;
+ Basis inverse_inertia_tensor;
real_t gravity_scale;
real_t linear_damp;
real_t angular_damp;
@@ -224,6 +225,8 @@ public:
void set_angular_velocity(const Vector3 &p_velocity);
Vector3 get_angular_velocity() const;
+ Basis get_inverse_inertia_tensor();
+
void set_gravity_scale(real_t p_gravity_scale);
real_t get_gravity_scale() const;