[auto] stub out empty AR scene to remove three.js dependency

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
main
name 2026-04-11 17:28:30 -07:00
parent 9390be7f1a
commit 6f5d7381b4
1 changed files with 8 additions and 49 deletions

View File

@ -1,58 +1,17 @@
import * as THREE from 'three'
export interface ARState {
renderer: THREE.WebGLRenderer
scene: THREE.Scene
camera: THREE.PerspectiveCamera
logFrame: number
}
function computeVFov(hfovDeg: number, aspect: number): number {
const hfovRad = hfovDeg * Math.PI / 180
return 2 * Math.atan(Math.tan(hfovRad / 2) / aspect) * 180 / Math.PI
canvas: HTMLCanvasElement
}
export function createARScene(
canvas: HTMLCanvasElement,
width: number,
height: number,
hfov: number,
heightOffset: number,
_width: number,
_height: number,
_hfov: number,
_heightOffset: number,
): ARState {
const renderer = new THREE.WebGLRenderer({
canvas,
alpha: true,
antialias: true,
premultipliedAlpha: false,
})
renderer.setSize(width, height)
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2))
renderer.setClearColor(0x000000, 0)
const scene = new THREE.Scene()
const aspect = width / height
const vfov = computeVFov(hfov, aspect)
const camera = new THREE.PerspectiveCamera(vfov, aspect, 0.01, 100)
camera.position.set(0, heightOffset + 0.75, 0)
camera.lookAt(0, 0, -5)
return { renderer, scene, camera, logFrame: 0 }
return { canvas }
}
export function updateARScene(state: ARState) {
state.logFrame++
state.renderer.render(state.scene, state.camera)
}
export function updateARScene(_state: ARState) {}
export function disposeARScene(state: ARState) {
state.renderer.dispose()
state.scene.traverse((obj) => {
if (obj instanceof THREE.Mesh || obj instanceof THREE.Line) {
obj.geometry.dispose()
const mats = Array.isArray(obj.material) ? obj.material : [obj.material]
mats.forEach((m) => m.dispose())
}
})
}
export function disposeARScene(_state: ARState) {}