{"schemaVersion":2,"kind":"generated","engine":"threejs","id":"e3200085809013e7b8e43b4d87","title":"Camera FPS test cube","description":"A test fixture for verifying live camera and hand-steering performance.","version":1,"root":{"id":"48793b91-4006-45c9-b8ef-58051b672647-root","type":"group"},"source":{"format":"javascript","text":"var scene = new THREE.Scene();\nvar camera = new THREE.PerspectiveCamera(75, 1, 0.1, 1000);\ncamera.position.z = 5;\n\nvar renderer = new THREE.WebGLRenderer({ antialias: true });\nvar container = document.getElementById('art-piece-container');\nrenderer.setSize(container.clientWidth, container.clientHeight);\ncontainer.appendChild(renderer.domElement);\n\nvar geometry = new THREE.BoxGeometry(1, 1, 1);\nvar material = new THREE.MeshBasicMaterial({ color: 0xff0000 });\nvar cube = new THREE.Mesh(geometry, material);\nscene.add(cube);\n\nwindow.__registerArtPieceCamera({\n  getPose: function () {\n    return { x: camera.position.x, y: camera.position.y, z: camera.position.z };\n  },\n  setPose: function (x, y, z) {\n    camera.position.set(x, y, z);\n    camera.lookAt(0, 0, 0);\n  }\n});\n\nvar startTime = Date.now();\nfunction animate() {\n  var elapsed = (Date.now() - startTime) / 1000;\n  cube.rotation.x = elapsed;\n  cube.rotation.y = elapsed;\n  renderer.render(scene, camera);\n  requestAnimationFrame(animate);\n}\nanimate();"},"capabilities":{"sound":false,"download":false,"keyboard":false,"immersive":false,"fullscreen":false,"microphone":false,"screenshot":false,"camera_view":true,"hand_steering":true}}