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

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

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

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

Q&A

1回答

7189閲覧

Three.jsのOBJLoaderをローカルPCで実行する方法

zero1962

総合スコア8

Three.js

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

0グッド

0クリップ

投稿2016/11/07 09:25

###前提・実現したいこと
Three.js をつかって3DモデルをローカルPCで表示したいのです。

###発生している問題・エラーメッセージ
Webサーバにアップした場合、正常に表示できますが、
ローカルPCで実行した場合、なにも表示できません。

エラーメッセージ
とくにありません。

###該当のソースコード
var onProgress = function ( xhr ) {
if ( xhr.lengthComputable ) {
var percentComplete = xhr.loaded / xhr.total * 100;
console.log( Math.round(percentComplete, 2) + '% downloaded' );
}
};
var onError = function ( xhr ) { };
THREE.Loader.Handlers.add( /.dds$/i, new THREE.DDSLoader() );
var mtlLoader = new THREE.MTLLoader();

mtlLoader.load( "mmd/ki61.mtl", function( materials ) { materials.preload(); var objLoader = new THREE.OBJLoader(); objLoader.setMaterials( materials ); objLoader.load( "mmd/ki61.obj", function ( object ) { object.scale.set( 0.1, 0.1, 0.1 ); object.position.set( 0, 0.45, 3 ); object.rotation.set( 0.2, 0, 0 ); mesh = object; meshShadow = new THREE.ShadowMesh( mesh ); scene.add( mesh ); scene.add( meshShadow ); Qbuff = mesh.quaternion; }, onProgress, onError ); });

###試したこと
Three.jsのサンプルプログラムでどこまでローカルで実行できるか試したところ、GUIメニューと、各種Loaderを利用している場合、ローカルPCで実行できないようです。

MTLLoader.js/OBJLoader.jsでwebサーバに依存する部分を探しましたが
わかりませんでした。
Loaderもほかの機能同様にローカルPCで実行できると開発試験が容易になるので、ぜひお教え願います。

###補足情報(言語/FW/ツール等のバージョンなど)
Three.jp r77

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

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

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

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

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

guest

回答1

0

WebGLやThree.jsの問題ではなく、たんにXHRのセキュリティの問題な気がします。
個人的な利用の範囲でローカル環境のファイルを表示したい、ということであれば
Chromeなどでは設定をすることで閲覧が可能になります。

こちらのリンクが参考になるかと思います。
【解説付き】chromeでXMLHttpRequestをローカルのファイルで行う方法

投稿2016/11/07 09:52

edo_m18

総合スコア2283

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

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

zero1962

2016/11/07 10:05

IE11を使っていてchromeを使っていませんでした。 紹介されたリンクを参考にchromeで試してみます。 迅速なご回答ありがとうございました。
zero1962

2016/11/07 12:32

chrome をインストールし、"--disable-web-security"オプションを有効にして確認しましたが、 OBJLoad/MTLLoad できませんでした。 ちなみに下記の部分を有効にしOBJLoad/MTLLoad以外の3Dオブジェクト表示させたところ 問題なくローカルPCで表示できました。 var onProgress = function ( xhr ) { if ( xhr.lengthComputable ) { var percentComplete = xhr.loaded / xhr.total * 100; console.log( Math.round(percentComplete, 2) + '% downloaded' ); } }; var onError = function ( xhr ) { }; THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() ); var mtlLoader = new THREE.MTLLoader(); このことから、以下の実行ができていないと思われます。 mtlLoader.load( "mmd/ki61.mtl", function( materials ) { materials.preload(); var objLoader = new THREE.OBJLoader(); objLoader.setMaterials( materials ); objLoader.load( "mmd/ki61.obj", function ( object ) { object.scale.set( 0.1, 0.1, 0.1 ); object.position.set( 0, 0.45, 3 ); object.rotation.set( 0.2, 0, 0 ); mesh = object; meshShadow = new THREE.ShadowMesh( mesh ); scene.add( mesh ); scene.add( meshShadow ); Qbuff = mesh.quaternion; }, onProgress, onError ); }); onProgress, onError がXHRのセキュリティの問題に引っかかっているのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問