()
| 66 | } |
| 67 | |
| 68 | function init() |
| 69 | { |
| 70 | let canvas = document.getElementById('webglcanvas'); |
| 71 | |
| 72 | // Handle material selection changes |
| 73 | let materialsSelect = document.getElementById('materials'); |
| 74 | materialsSelect.value = materialFilename; |
| 75 | materialsSelect.addEventListener('change', (e) => |
| 76 | { |
| 77 | materialFilename = e.target.value; |
| 78 | viewer.getEditor().initialize(); |
| 79 | viewer.getMaterial().loadMaterials(viewer, materialFilename); |
| 80 | viewer.getEditor().updateProperties(0.9); |
| 81 | }); |
| 82 | |
| 83 | // Handle geometry selection changes |
| 84 | const scene = viewer.getScene(); |
| 85 | let geometrySelect = document.getElementById('geometry'); |
| 86 | geometrySelect.value = scene.getGeometryURL(); |
| 87 | geometrySelect.addEventListener('change', (e) => |
| 88 | { |
| 89 | console.log('Change geometry to:', e.target.value); |
| 90 | scene.setGeometryURL(e.target.value); |
| 91 | scene.loadGeometry(viewer, orbitControls); |
| 92 | }); |
| 93 | |
| 94 | // Set up scene |
| 95 | scene.initialize(); |
| 96 | |
| 97 | // Set up renderer |
| 98 | renderer = new THREE.WebGLRenderer({ antialias: true, canvas }); |
| 99 | renderer.setSize(window.innerWidth, window.innerHeight); |
| 100 | renderer.outputColorSpace = THREE.SRGBColorSpace; |
| 101 | renderer.debug.checkShaderErrors = false; |
| 102 | |
| 103 | window.addEventListener('resize', onWindowResize); |
| 104 | |
| 105 | // Set up controls |
| 106 | orbitControls = new OrbitControls(scene.getCamera(), renderer.domElement); |
| 107 | |
| 108 | // Add hotkey 'f' to capture the current frame and save an image file. |
| 109 | // See check inside the render loop when a capture can be performed. |
| 110 | |
| 111 | document.addEventListener('keydown', (event) => { |
| 112 | // Toggle FPS timer with T key |
| 113 | if (event.key === 't' || event.key === 'T') { |
| 114 | showFPS = !showFPS; |
| 115 | setFPSOverlayVisible(showFPS); |
| 116 | event.preventDefault(); |
| 117 | } |
| 118 | // Capture frame with Shift+F |
| 119 | else if ((event.key === 'f' || event.key === 'F') && event.shiftKey) { |
| 120 | captureRequested = true; |
| 121 | } |
| 122 | }); |
| 123 | |
| 124 | // Initialize editor |
| 125 | viewer.getEditor().initialize(); |
no test coverage detected