Skip to content

Commit 4395a61

Browse files
authored
WebGPURenderer: Add XRManager. (#1510)
* Add export * Update three.js * Add src * Update patch and delete src * Update * Add src * Update patch and delete src * Update declarations * Add src * Update patch and delete src * Update declarations * Add src * Update patch and delete src * Update declarations * Add XRButtonGPU * Add examples * Update patch and delete examples
1 parent 0b2946b commit 4395a61

File tree

10 files changed

+766
-86
lines changed

10 files changed

+766
-86
lines changed

examples-testing/changes.patch

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17890,6 +17890,84 @@ index 76e09f1f..edefce0e 100644
1789017890

1789117891
gui.addColor(params, 'color').onChange(function (value) {
1789217892
waterNode.color.value.set(value);
17893+
diff --git a/examples-testing/examples/webgpu_xr_cubes.ts b/examples-testing/examples/webgpu_xr_cubes.ts
17894+
index 104e33ae..85925f77 100644
17895+
--- a/examples-testing/examples/webgpu_xr_cubes.ts
17896+
+++ b/examples-testing/examples/webgpu_xr_cubes.ts
17897+
@@ -1,18 +1,22 @@
17898+
-import * as THREE from 'three';
17899+
+import * as THREE from 'three/webgpu';
17900+
17901+
import { BoxLineGeometry } from 'three/addons/geometries/BoxLineGeometry.js';
17902+
import { XRButton } from 'three/addons/webxr/XRButtonGPU.js';
17903+
import { XRControllerModelFactory } from 'three/addons/webxr/XRControllerModelFactory.js';
17904+
17905+
+type CubeMesh = THREE.Mesh<THREE.BufferGeometry, THREE.MeshLambertMaterial> & {
17906+
+ currentHex: number;
17907+
+};
17908+
+
17909+
const clock = new THREE.Clock();
17910+
17911+
-let container;
17912+
-let camera, scene, raycaster, renderer;
17913+
+let container: HTMLDivElement;
17914+
+let camera: THREE.PerspectiveCamera, scene: THREE.Scene, raycaster: THREE.Raycaster, renderer: THREE.WebGPURenderer;
17915+
17916+
-let room;
17917+
+let room: THREE.LineSegments;
17918+
17919+
-let controller, controllerGrip;
17920+
-let INTERSECTED;
17921+
+let controller: THREE.XRTargetRaySpace, controllerGrip: THREE.XRGripSpace;
17922+
+let INTERSECTED: CubeMesh | undefined;
17923+
17924+
init();
17925+
17926+
@@ -75,21 +79,21 @@ function init() {
17927+
17928+
//
17929+
17930+
- function onSelectStart() {
17931+
+ function onSelectStart(this: THREE.XRTargetRaySpace) {
17932+
this.userData.isSelecting = true;
17933+
}
17934+
17935+
- function onSelectEnd() {
17936+
+ function onSelectEnd(this: THREE.XRTargetRaySpace) {
17937+
this.userData.isSelecting = false;
17938+
}
17939+
17940+
controller = renderer.xr.getController(0);
17941+
controller.addEventListener('selectstart', onSelectStart);
17942+
controller.addEventListener('selectend', onSelectEnd);
17943+
- controller.addEventListener('connected', function (event) {
17944+
- this.add(buildController(event.data));
17945+
+ controller.addEventListener('connected', function (this: THREE.XRTargetRaySpace, event) {
17946+
+ this.add(buildController(event.data)!);
17947+
});
17948+
- controller.addEventListener('disconnected', function () {
17949+
+ controller.addEventListener('disconnected', function (this: THREE.XRTargetRaySpace) {
17950+
this.remove(this.children[0]);
17951+
});
17952+
scene.add(controller);
17953+
@@ -107,7 +111,7 @@ function init() {
17954+
document.body.appendChild(XRButton.createButton(renderer));
17955+
}
17956+
17957+
-function buildController(data) {
17958+
+function buildController(data: XRInputSource) {
17959+
let geometry, material;
17960+
17961+
switch (data.targetRayMode) {
17962+
@@ -161,7 +165,7 @@ function animate() {
17963+
if (INTERSECTED != intersects[0].object) {
17964+
if (INTERSECTED) INTERSECTED.material.emissive.setHex(INTERSECTED.currentHex);
17965+
17966+
- INTERSECTED = intersects[0].object;
17967+
+ INTERSECTED = intersects[0].object as CubeMesh;
17968+
INTERSECTED.currentHex = INTERSECTED.material.emissive.getHex();
17969+
INTERSECTED.material.emissive.setHex(0xff0000);
17970+
}
1789317971
diff --git a/examples-testing/examples/webxr_ar_cones.ts b/examples-testing/examples/webxr_ar_cones.ts
1789417972
index 95eb3439..0e641cdb 100644
1789517973
--- a/examples-testing/examples/webxr_ar_cones.ts

0 commit comments

Comments
 (0)