diff --git a/src/systems/userinput/devices/oculus-touch-controller.js b/src/systems/userinput/devices/oculus-touch-controller.js
index 7ca3e6d2ec77cd486e499ede22fcc0654bf182e0..207d5af2284a11b79dc50d0c97f87f594838dfb9 100644
--- a/src/systems/userinput/devices/oculus-touch-controller.js
+++ b/src/systems/userinput/devices/oculus-touch-controller.js
@@ -66,10 +66,10 @@ export class OculusTouchControllerDevice {
       frame[this.path.axis(axis.name)] = frame[paths.device.gamepad(this.gamepad.index).axis(axis.axisId)];
     });
 
-    const rayObject = document.querySelector(this.selector).object3D;
-    rayObject.updateMatrixWorld();
-    this.rayObjectRotation.setFromRotationMatrix(rayObject.matrixWorld);
-    this.pose.position.setFromMatrixPosition(rayObject.matrixWorld);
+    this.rayObject = this.rayObject || document.querySelector(this.selector).object3D;
+    this.rayObject.updateMatrixWorld();
+    this.rayObjectRotation.setFromRotationMatrix(this.rayObject.matrixWorld);
+    this.pose.position.setFromMatrixPosition(this.rayObject.matrixWorld);
     this.pose.direction.set(0, 0, -1).applyQuaternion(this.rayObjectRotation);
     this.pose.fromOriginAndDirection(this.pose.position, this.pose.direction);
     frame[this.path.pose] = this.pose;