feat: launch in webxr

This commit is contained in:
ktyl 2025-11-01 13:39:09 +00:00
parent 61a461bff8
commit e1481ce730
4 changed files with 23 additions and 7 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
cert.pem
key.pem

1
README.md Normal file
View File

@ -0,0 +1 @@
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

13
main.js
View File

@ -7,13 +7,17 @@
import * as THREE from 'three'; import * as THREE from 'three';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js'; import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
import * as BufferGeometryUtils from 'three/addons/utils/BufferGeometryUtils.js'; import * as BufferGeometryUtils from 'three/addons/utils/BufferGeometryUtils.js';
import { VRButton } from 'three/addons/webxr/VRButton.js';
// Initialise scene // Initialise scene
const scene = new THREE.Scene(); const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer(); const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight); renderer.setSize(window.innerWidth, window.innerHeight);
renderer.xr.enabled = true;
document.body.appendChild(renderer.domElement); document.body.appendChild(renderer.domElement);
document.body.appendChild(VRButton.createButton(renderer));
// Set up lights // Set up lights
const ambientLight = new THREE.AmbientLight(0x404040); const ambientLight = new THREE.AmbientLight(0x404040);
@ -245,12 +249,7 @@ window.addEventListener('resize', () => {
renderer.setSize(window.innerWidth, window.innerHeight); renderer.setSize(window.innerWidth, window.innerHeight);
}); });
// Animation loop renderer.setAnimationLoop(() => {
function animate() {
requestAnimationFrame(animate);
controls.update(); controls.update();
renderer.render(scene, camera); renderer.render(scene, camera);
} });
animate();

14
server.py Normal file
View File

@ -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()