[auto] stub out empty AR scene to remove three.js dependency
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>main
parent
9390be7f1a
commit
6f5d7381b4
|
|
@ -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) {}
|
||||
|
|
|
|||
Loading…
Reference in New Issue