質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Three.js

Three.jsはWebGLをサポートしているJavaScriptの3D描画用ライブラリです。

Q&A

0回答

2313閲覧

Uncaught SyntaxError: Invalid or unexpected token

aiai8976

総合スコア112

Three.js

Three.jsはWebGLをサポートしているJavaScriptの3D描画用ライブラリです。

0グッド

0クリップ

投稿2019/06/26 10:41

編集2019/06/29 01:16

前提・実現したいこと

csvファイルを非同期で読み込んでthree.js上で点モデリングを表示したいのですが、以下のエラーが出て困っています。
調べたところ構文エラーなのですが、一向に見当たりません。
何か改善策がある方はコメントお願いします。

発生している問題・エラーメッセージ

Uncaught SyntaxError: Invalid or unexpected token

これで言われている行が

var scene = new THREE.Scene();

ここなのですが文法上のエラーは無いように思われます。

該当のソースコード

sample.py

1<html> 2<head> 3 <style> 4 div#WebGL-area{ 5 width: 900px; 6 height: 600px; 7 } 8 </style> 9 <script type="text/javascript" src="../three.js-master/build/three.min.js"></script> 10 <script type="text/javascript" src="js/OrbitControls.js"></script> 11 <script type="text/javascript"> 12 //CSVファイルを読み込む関数getCSV()の定義 13 /*function getCSV(){ 14 var req = new XMLHttpRequest(); // HTTPでファイルを読み込むためのXMLHttpRrequestオブジェクトを生成 15 req.open("get", "test.csv", true); // アクセスするファイルを指定 16 req.send(null); // HTTPリクエストの発行 17 18 // レスポンスが返ってきたらconvertCSVtoArray()を呼ぶ 19 req.onload = function(){ 20 return convertCSVtoArray(req.responseText); // 渡されるのは読み込んだCSVデータ 21 } 22 }*/ 23 24 function getCSV() { 25 //promiseをを使うことで簡潔に記述できる 26 return new Promise((resolve, reject) => { //resolveまたはrejectの結果を返す 27 var req = new XMLHttpRequest(); // HTTPでファイルを読み込むためのXMLHttpRrequestオブジェクトを生成、サーバと非同期通信するためのAPI 28 req.open("get", "test.csv", true); // アクセスするファイルを指定 29 //受信が成功した時に呼び出されるイベント 30 req.onload = () => { 31 //通信が正常に終了したかを確認する 32 if (req.readyState === 4 && req.status === 0) { 33 resolve(convertCSVtoArray(req.responseText)); 34 } else { 35 reject(new Error(req.statusText)); 36 } 37 }; 38 //受信が失敗した時に呼び出されるイベント 39 req.onerror = () => { 40 reject(new Error(req.statusText)); 41 }; 42 req.send(null); // HTTPリクエストの発行 43 }); 44 } 45 46 47 // 読み込んだCSVデータを二次元配列に変換する関数convertCSVtoArray()の定義 48 function convertCSVtoArray(str){ // 読み込んだCSVデータが文字列として渡される 49 var result = []; // 最終的な二次元配列を入れるための配列 50 var tmp = str.split("\n"); // 改行を区切り文字として行を要素とした配列を生成 51 52 // 各行ごとにカンマで区切った文字列を要素とした二次元配列を生成 53 for(var i=0;i<tmp.length;++i){ 54 result[i] = tmp[i].split(','); 55 } 56 alert(result[0][1]); 57 return result; 58 } 59 60 async function init() { 61 ///////////////////////three.js初期化/////////////////////// 62 var scene = new THREE.Scene(); //仮想空間に各種オブジェクトを配置するシーンオブジェクト生成 63 64 var renderer = new THREE.WebGLRenderer(); //レンダラーオブジェクトの生成 65 renderer.setSize(900, 600); //レンダラーサイズの設定 66 67 //自動生成されるcanvas要素を指定した要素の子要素として追加 68 document.getElementById("WebGL-area").appendChild(renderer.domElement); 69 70 71 ///////////////////カメラ初期化///////////////////// 72 73 var camera = new THREE.PerspectiveCamera(45, 1.5, 0.1, 1000); //透視投影カメラオブジェクト生成 74 //(fov:視野角,aspect:縦横比,near:カメラから視体積の手前までの距離,far:カメラから視体積の奥までの距離) 75 76 camera.position.set(30, 45, 30); 77 camera.lookAt(scene.position); //カメラの視野中心座標 78 79 var controls = new THREE.OrbitControls(camera); //カメラコントローラー生成 80 controls.autoRotate = true; //自動周回 81 82 83 84 ///////////////////オブジェクト初期化/////////////////// 85 86 // 座標軸を表示 87 var axes = new THREE.AxisHelper(100); //引数は線の長さ 88 scene.add(axes); 89 90 //形状オブジェクトの宣言と生成 91 var geometry= new THREE.Geometry(); 92 //頂点座標データの追加 93 /*for(i=0;i<30;i++){ 94 geometry.vertices[i]= new THREE.Vector3(30,30,30-i); 95 } 96 for(i;i<60;i++){ 97 geometry.vertices[i]= new THREE.Vector3(i-30,30,30); 98 }*/ 99 var data=[]; 100 data = await getCSV(); 101 102 for(var i=0;i<1000;i++){ 103 geometry.vertices[i]= new THREE.Vector3((data[i][0] * Math.cos( data[i][1] * (Math.PI / 180) ))/2, 104 0, 105 (data[i][0] * Math.sin( data[i][1] * (Math.PI / 180) ))/2); 106 } 107 108 //geometry.vertices[0]= new THREE.Vector3(30,30,28);//(x軸,z軸,y軸) 109 //geometry.vertices[1]= new THREE.Vector3(30,30,29); 110 //geometry.vertices[2]= new THREE.Vector3(30,30,30); 111 //材質オブジェクトの宣言と生成 112 var material=new THREE.ParticleBasicMaterial({color: 0xFF0000, size: 10.0}); 113 //点オブジェクトの生成 114 particles = new THREE.ParticleSystem(geometry,material); 115 //点オブジェクトのシーンへの追加 116 scene.add(particles); 117 118 119 120 //////////////////描画関数の定義////////////////////// 121 122 render(); 123 124 function render() { 125 controls.update(); //再描画 126 requestAnimationFrame(render); //アニメーション実装時など、再描画が頻繁に行われる処理に使えるメソッド 127 renderer.render(scene, camera); 128 } 129 } 130 window.onload = init 131 </script> 132 133</head> 134 135<body> 136 <div id="WebGL-area"></div> 137</body> 138</html> 139

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問