diff --git a/interface/resources/qml/Stats.qml b/interface/resources/qml/Stats.qml
index d89e3333e6..54798f8762 100644
--- a/interface/resources/qml/Stats.qml
+++ b/interface/resources/qml/Stats.qml
@@ -61,7 +61,7 @@ Item {
                         text: "Game Rate: " + root.gameLoopRate
                     }
                     StatText {
-                        text: "Physics Body Count: " + root.physicsBodyCount
+                        text: "Physics Object Count: " + root.physicsObjectCount
                     }
                     StatText {
                         visible: root.expanded
diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp
index 9057bdea28..b27af7316f 100644
--- a/interface/src/Application.cpp
+++ b/interface/src/Application.cpp
@@ -6184,8 +6184,8 @@ bool Application::isHMDMode() const {
     return getActiveDisplayPlugin()->isHmd();
 }
 
-float Application::getNumRigidBodies() const {
-    return _physicsEngine ? _physicsEngine->getNumRigidBodies() : 0;
+float Application::getNumCollisionObjects() const {
+    return _physicsEngine ? _physicsEngine->getNumCollisionObjects() : 0;
 }
 
 float Application::getTargetRenderFrameRate() const { return getActiveDisplayPlugin()->getTargetFrameRate(); }
diff --git a/interface/src/Application.h b/interface/src/Application.h
index e415b28343..ae7e686f35 100644
--- a/interface/src/Application.h
+++ b/interface/src/Application.h
@@ -207,7 +207,7 @@ public:
 
     size_t getRenderFrameCount() const { return _renderFrameCount; }
     float getRenderLoopRate() const { return _renderLoopCounter.rate(); }
-    float getNumRigidBodies() const;
+    float getNumCollisionObjects() const;
     float getTargetRenderFrameRate() const; // frames/second
 
     float getFieldOfView() { return _fieldOfView.get(); }
diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp
index 9c1e1802c7..557635469b 100644
--- a/interface/src/ui/Stats.cpp
+++ b/interface/src/ui/Stats.cpp
@@ -121,7 +121,7 @@ void Stats::updateStats(bool force) {
     auto avatarManager = DependencyManager::get<AvatarManager>();
     // we need to take one avatar out so we don't include ourselves
     STAT_UPDATE(avatarCount, avatarManager->size() - 1);
-    STAT_UPDATE(physicsBodyCount, qApp->getNumRigidBodies());
+    STAT_UPDATE(physicsObjectCount, qApp->getNumCollisionObjects());
     STAT_UPDATE(updatedAvatarCount, avatarManager->getNumAvatarsUpdated());
     STAT_UPDATE(notUpdatedAvatarCount, avatarManager->getNumAvatarsNotUpdated());
     STAT_UPDATE(serverCount, (int)nodeList->size());
diff --git a/interface/src/ui/Stats.h b/interface/src/ui/Stats.h
index 35eeb78caa..84a114b72d 100644
--- a/interface/src/ui/Stats.h
+++ b/interface/src/ui/Stats.h
@@ -49,7 +49,7 @@ private: \
  * @property {number} presentdroprate - <em>Read-only.</em>
  * @property {number} gameLoopRate - <em>Read-only.</em>
  * @property {number} avatarCount - <em>Read-only.</em>
- * @property {number} physicsBodyCount - <em>Read-only.</em>
+ * @property {number} physicsObjectCount - <em>Read-only.</em>
  * @property {number} updatedAvatarCount - <em>Read-only.</em>
  * @property {number} notUpdatedAvatarCount - <em>Read-only.</em>
  * @property {number} packetInCount - <em>Read-only.</em>
@@ -196,7 +196,7 @@ class Stats : public QQuickItem {
     STATS_PROPERTY(float, presentdroprate, 0)
     STATS_PROPERTY(int, gameLoopRate, 0)
     STATS_PROPERTY(int, avatarCount, 0)
-    STATS_PROPERTY(int, physicsBodyCount, 0)
+    STATS_PROPERTY(int, physicsObjectCount, 0)
     STATS_PROPERTY(int, updatedAvatarCount, 0)
     STATS_PROPERTY(int, notUpdatedAvatarCount, 0)
     STATS_PROPERTY(int, packetInCount, 0)
@@ -413,7 +413,7 @@ signals:
      * @function Stats.numPhysicsBodiesChanged
      * @returns {Signal}
      */
-    void physicsBodyCountChanged();
+    void physicsObjectCountChanged();
 
     /**jsdoc
      * Triggered when the value of the <code>avatarCount</code> property changes.
diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp
index 8c7b63e046..d5ce60bef9 100644
--- a/libraries/physics/src/PhysicsEngine.cpp
+++ b/libraries/physics/src/PhysicsEngine.cpp
@@ -77,6 +77,10 @@ uint32_t PhysicsEngine::getNumSubsteps() const {
     return _dynamicsWorld->getNumSubsteps();
 }
 
+int32_t PhysicsEngine::getNumCollisionObjects() const {
+    return _dynamicsWorld ? _dynamicsWorld->getNumCollisionObjects() : 0;
+}
+
 // private
 void PhysicsEngine::addObjectToDynamicsWorld(ObjectMotionState* motionState) {
     assert(motionState);
@@ -93,7 +97,6 @@ void PhysicsEngine::addObjectToDynamicsWorld(ObjectMotionState* motionState) {
                 btCollisionShape* shape = const_cast<btCollisionShape*>(motionState->getShape());
                 assert(shape);
                 body = new btRigidBody(mass, motionState, shape, inertia);
-                ++_numRigidBodies;
                 motionState->setRigidBody(body);
             } else {
                 body->setMassProps(mass, inertia);
@@ -117,7 +120,6 @@ void PhysicsEngine::addObjectToDynamicsWorld(ObjectMotionState* motionState) {
             shape->calculateLocalInertia(mass, inertia);
             if (!body) {
                 body = new btRigidBody(mass, motionState, shape, inertia);
-                ++_numRigidBodies;
                 motionState->setRigidBody(body);
             } else {
                 body->setMassProps(mass, inertia);
@@ -141,7 +143,6 @@ void PhysicsEngine::addObjectToDynamicsWorld(ObjectMotionState* motionState) {
             if (!body) {
                 assert(motionState->getShape());
                 body = new btRigidBody(mass, motionState, const_cast<btCollisionShape*>(motionState->getShape()), inertia);
-                ++_numRigidBodies;
                 motionState->setRigidBody(body);
             } else {
                 body->setMassProps(mass, inertia);
@@ -209,7 +210,6 @@ void PhysicsEngine::removeObjects(const VectorOfMotionStates& objects) {
         if (body) {
             removeDynamicsForBody(body);
             _dynamicsWorld->removeRigidBody(body);
-            --_numRigidBodies;
 
             // NOTE: setRigidBody() modifies body->m_userPointer so we should clear the MotionState's body BEFORE deleting it.
             object->setRigidBody(nullptr);
@@ -227,7 +227,6 @@ void PhysicsEngine::removeSetOfObjects(const SetOfMotionStates& objects) {
         if (body) {
             removeDynamicsForBody(body);
             _dynamicsWorld->removeRigidBody(body);
-            --_numRigidBodies;
 
             // NOTE: setRigidBody() modifies body->m_userPointer so we should clear the MotionState's body BEFORE deleting it.
             object->setRigidBody(nullptr);
@@ -279,7 +278,6 @@ void PhysicsEngine::reinsertObject(ObjectMotionState* object) {
     btRigidBody* body = object->getRigidBody();
     if (body) {
         _dynamicsWorld->removeRigidBody(body);
-        --_numRigidBodies;
         // add it back
         addObjectToDynamicsWorld(object);
     }
@@ -292,7 +290,6 @@ void PhysicsEngine::processTransaction(PhysicsEngine::Transaction& transaction)
         if (body) {
             removeDynamicsForBody(body);
             _dynamicsWorld->removeRigidBody(body);
-            --_numRigidBodies;
 
             // NOTE: setRigidBody() modifies body->m_userPointer so we should clear the MotionState's body BEFORE deleting it.
             object->setRigidBody(nullptr);
diff --git a/libraries/physics/src/PhysicsEngine.h b/libraries/physics/src/PhysicsEngine.h
index 74e0c046a1..317f7ef312 100644
--- a/libraries/physics/src/PhysicsEngine.h
+++ b/libraries/physics/src/PhysicsEngine.h
@@ -87,6 +87,7 @@ public:
     void init();
 
     uint32_t getNumSubsteps() const;
+    int32_t getNumCollisionObjects() const;
 
     void removeObjects(const VectorOfMotionStates& objects);
     void removeSetOfObjects(const SetOfMotionStates& objects); // only called during teardown
@@ -143,8 +144,6 @@ public:
     // See PhysicsCollisionGroups.h for mask flags.
     std::vector<ContactTestResult> contactTest(uint16_t mask, const ShapeInfo& regionShapeInfo, const Transform& regionTransform, uint16_t group = USER_COLLISION_GROUP_DYNAMIC) const;
 
-    int32_t getNumRigidBodies() const { return _numRigidBodies; }
-
 private:
     QList<EntityDynamicPointer> removeDynamicsForBody(btRigidBody* body);
     void addObjectToDynamicsWorld(ObjectMotionState* motionState);
@@ -177,7 +176,6 @@ private:
     CharacterController* _myAvatarController;
 
     uint32_t _numContactFrames { 0 };
-    int32_t _numRigidBodies { 0 };
 
     bool _dumpNextStats { false };
     bool _saveNextStats { false };