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

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

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

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

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

Q&A

1回答

864閲覧

three.js 多角形が全画面になるようなカメラ位置の算出

firstbiz

総合スコア60

Three.js

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

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

0グッド

0クリップ

投稿2018/10/19 20:27

ある多角形または平面が配置してあります。

ほぼ全画面になるような位置までカメラを動かそうと思い、以下の算出をしました。

(多角形の高さ / 2) / (Math.tan(camera.fov/2));

※実際には横幅でも似た計算をして(アスペクト比を考慮)、大きい方に合わせる必要がありますが、とりあえず高さだけで試しています。

camera.fovは以下の「y FOV」に相当すると思います。

![イメージ説明

三角関数を使うために直角三角形で考える必要があるので、このfovを半分にし、対象となる多角形の高さも半分にしました。
計算上はこれで底辺の長さ、つまりカメラから対象となる多角形の中心までの直線距離が出るはずです。

この直線距離の位置にカメラを配置したら、ちょうど画面いっぱいに多角形が表示されると思いましたが、そうはなりませんでした。

多角形のサイズによりますが、基本的にはズームが不足している状態です。

間違いがわかるようでしたら、ヒントでもいただけると助かります。

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

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

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

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

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

guest

回答1

0

three.jsは使ったことがないので今調べたのですがどうやらfovの単位は度のようですね。
JavaScriptの三角関数の角度の単位はラジアンですのでその違いではないでしょうか。
ラジアンを入れるべき関数に度を入れると何周もするのでメチャクチャな値が出ます。
Math.PI/180を掛けてみてください。

投稿2018/10/20 19:06

ikadzuchi

総合スコア3047

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

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

firstbiz

2018/10/21 12:50

すいません。実際にはラジアンを使っています。
ikadzuchi

2018/10/25 15:25

(すいません数日前に返信したつもりが書き込まれていなかったようです) そうでしたか。そうなるとちょっと分かりません。 とりあえず、具体的な数値や実際のプログラムを書くと何か分かるかもしれません。
firstbiz

2018/10/26 04:07

対象オブジェクトが小さすぎる場合に、四捨五入されるなどの影響かもしれず、調査を続けます。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問