Spaces:
Paused
Paused
| function main() { | |
| prepareToUploadFile(); | |
| } | |
| function prepareToUploadFile(){ | |
| /* | |
| * 送信イベントが発生したら実行 | |
| */ | |
| document.querySelector("#upload").addEventListener("submit", (e)=>{ | |
| const targetImage = document.querySelector("#targetImage"); | |
| // 規定の送信処理をキャンセル(画面遷移などしない) | |
| e.preventDefault(); | |
| // 送信データの準備 | |
| const formData = new FormData(); | |
| formData.append("targetImage", targetImage.files[0]); // ファイル内容を詰める | |
| const param = { | |
| method: "POST", | |
| body: formData | |
| } | |
| // アップロードする | |
| fetch(`/prediction`, param) | |
| .then((res)=>{ | |
| return( res.json() ); | |
| }) | |
| .then((json)=>{ | |
| // 通信が成功した際の処理 | |
| load3dModel(json["path"], json["name"]); | |
| }) | |
| .catch((error)=>{ | |
| // エラー処理 | |
| alert("残念、なんかエラー!") | |
| }); | |
| }); | |
| } | |
| function load3dModel(rcPath, rcName){ | |
| const canvas = document.getElementById('renderCanvas'); | |
| const engine = new BABYLON.Engine(canvas); | |
| // ここから | |
| function createScene() { | |
| // シーンを作成 | |
| const scene = new BABYLON.Scene(engine); | |
| // カメラを作成 | |
| const camera = new BABYLON.ArcRotateCamera("camera", -Math.PI / 2, Math.PI / 2.5, 3, new BABYLON.Vector3(0, 0, 0), scene); | |
| // カメラがユーザからの入力で動くように | |
| camera.attachControl(canvas, true); | |
| // ライトを作成 | |
| const light = new BABYLON.HemisphericLight("light", new BABYLON.Vector3(0, 1, 0), scene); | |
| // 画像を読み込む | |
| BABYLON.SceneLoader.ImportMesh("", `/${rcPath}/`, `${rcName}`, scene, function (newMeshes) { | |
| // Create a default arc rotate camera and light. | |
| // createArcRotateCamera | |
| scene.createDefaultCameraOrLight(true, true, true); | |
| }); | |
| return scene; | |
| } | |
| const scene = createScene(); | |
| engine.runRenderLoop(() => { | |
| scene.render(); | |
| }); | |
| window.addEventListener('resize', () => { | |
| engine.resize(); | |
| }); | |
| } | |
| window.addEventListener('DOMContentLoaded', main); |