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

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

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

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

Q&A

解決済

1回答

3452閲覧

Three.jsで子オブジェクトに配置したビルボードをカメラに正対させたいです。

essex

総合スコア21

Three.js

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

0グッド

0クリップ

投稿2017/01/24 05:40

お世話になります。Three.jsについて勉強しておりますが、
ビルボードについて分からないことがあり質問させていただきます。

現在、Three.jsでビルボードを使用したいと思っています。
ビルボードをカメラに正対させているのは、以下の1行です。

billboard.rotation.setFromRotationMatrix( camera.matrix );

これですと、ビルボードがシーンに配置(add)されている場合は、
正常にカメラの方を向きますが、例えばキャラクタに追従するパーティクル等
シーン内にあるオブジェクトに配置する(ビルボードが子オブジェクトになる)
場合、カメラに正対してくれません。

どの様にすれば良いかご存じの方がいらっしゃいましたら、
ご教授下さい。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

これが正しいかどうかはわかりませんが、一応考え方としては、親オブジェクトの回転の逆の回転をさせて回転を帳消しにして、カメラの回転を与えた回転を子オブジェクトに与えるカメラに正対させることができました。

js

1var q = parentObj.quaternion.clone().inverse().multiply(camera.quaternion.clone()); 2for (var i = 0; i < meshCnt; i++) { 3 parentObj.children[i].quaternion.copy(q); 4}

デモページ

投稿2017/01/24 23:57

編集2017/01/25 00:05
turbgraphics200

総合スコア4267

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

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

essex

2017/01/25 08:47

turbgraphics200様、いつもご教授ありがとうございます。 サンプルまで作成していただいたおかげで、 やりたかったことが実現できました。 数学が苦手な私には難解ですが、 親オブジェクトとカメラの逆行列のかけ算は、 逆回転させて回転を帳消しにする…という処理なのですね。 試しに孫オブジェクトを作ってみましたが、 var q = mesh.quaternion.clone().inverse().multiply(camera.quaternion.clone());   q = mesh1.quaternion.clone().inverse().multiply(q.clone()); こんな風に2段階で逆行列をかけてやると、孫オブジェクトがカメラに正対するのですね。 勉強になります。 クオータニオンを頑張って勉強します。 ありがとうございました。
edo_m18

2017/01/26 04:42 編集

ちょっと重箱のすみをつつく感じになっちゃって申し訳ないですが、クォータニオンと行列は別物です。 なので「逆行列」というとちょっと意味が違ってきてしまいます。(ここでは逆クォータニオン) 例えばY軸で45度回転するクォータニオンの逆クォータニオンはY軸に対して-45度回転、という感じです。 そしてクォータニオンは掛け算することで回転を表すため、結果として逆クォータニオンを掛けるとプラスマイナスゼロになる、ということですね。 クォータニオンについてこんな記事があったので参考までに貼っておきます。 http://qiita.com/kenjihiranabe/items/945232fbde58fab45681#quaternion-%E3%81%AE%E6%80%A7%E8%B3%AA
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問