From e1481ce730be60a0fd7ac45a29ad161ee0c99124 Mon Sep 17 00:00:00 2001 From: ktyl Date: Sat, 1 Nov 2025 13:39:09 +0000 Subject: [PATCH] feat: launch in webxr --- .gitignore | 2 ++ README.md | 1 + main.js | 13 ++++++------- server.py | 14 ++++++++++++++ 4 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 server.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f933710 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +cert.pem +key.pem diff --git a/README.md b/README.md new file mode 100644 index 0000000..e826bf0 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes diff --git a/main.js b/main.js index 94153ba..4e2651a 100644 --- a/main.js +++ b/main.js @@ -7,13 +7,17 @@ import * as THREE from 'three'; import { OrbitControls } from 'three/addons/controls/OrbitControls.js'; import * as BufferGeometryUtils from 'three/addons/utils/BufferGeometryUtils.js'; +import { VRButton } from 'three/addons/webxr/VRButton.js'; // Initialise scene const scene = new THREE.Scene(); const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); + const renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); +renderer.xr.enabled = true; document.body.appendChild(renderer.domElement); +document.body.appendChild(VRButton.createButton(renderer)); // Set up lights const ambientLight = new THREE.AmbientLight(0x404040); @@ -245,12 +249,7 @@ window.addEventListener('resize', () => { renderer.setSize(window.innerWidth, window.innerHeight); }); -// Animation loop -function animate() { - requestAnimationFrame(animate); - +renderer.setAnimationLoop(() => { controls.update(); renderer.render(scene, camera); -} -animate(); - +}); diff --git a/server.py b/server.py new file mode 100644 index 0000000..a4587ff --- /dev/null +++ b/server.py @@ -0,0 +1,14 @@ +from http.server import HTTPServer, SimpleHTTPRequestHandler +import ssl + +server_address = ('0.0.0.0', 4443) +httpd = HTTPServer(server_address, SimpleHTTPRequestHandler) + +context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) +context.load_cert_chain(certfile='cert.pem', keyfile='key.pem') + +httpd.socket = context.wrap_socket(httpd.socket, server_side=True) + +print('Serving HTTPS on 0.0.0.0 port 4443...') +httpd.serve_forever() +