重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

OpenGLを使用していて,マウスのホイールを利用して
視点と注視点の距離を近づけたり遠くしたりできるようにしています.

ところが,マウスホイールを回して
視点と注視点の距離をどんどん遠くしていくと
距離が100を超えたあたりから
画面中心に表示した物体が欠けて見え始めて,
さらに遠くしていくと物体が見えなくなってしまいます.

視点は遠くしすぎてはダメなのでしょうか?
視点と注視点の距離には限界があるのでしょうか?

A 回答 (1件)

視点は遠くしすぎてはダメなのでしょうか?


⇒ダメです.
視点と注視点の距離には限界があるのでしょうか?
⇒あります.
いずれも自分で設定できますが...
gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar)
でググりましょう.

OpenGL は視錐台ってのが定義されています.
視錐台は三角錐を途中で切ったような形をしています.
その三角錐の頂点の部分に視点があります.
要するに視錐台が人間の視野になります.
視錐台の外にあるものは描画されません.

OpenGLでは

実際の人間の視点と同じように視野角が定義されています.
というか視錐台から定義されます.
当然, 視野角の外にあるものは見えませんよね?

すなわち視錐台には幅があります. まあ視錐台(三角錐)の底面の縦と横です. この縦と横の長さによって三角錐の側面間の角度が決まります. これが視野角です.

実際の人間の視点と同じように遠くのものを見るにも限界があります.
というか視錐台から定義されます.
視点から遠くに置き過ぎるとオブジェクトは見えなくなります.

すなわち視錐台には奥行きがあります. まあ視錐台(三角錐)の高さの事です. その高さよりも遠くへ置かれてしまったものは, 視野角内にあったとしても見えません.

ひとつだけ実際の人間の視点と違うものがあります. それは
近すぎるものは見えない
という事です.
なぜ見えないかというと視錐台の外に出てしまっているからです.
視錐台は三角錐を切り取った形になると言いましたが, 三角錐の
「どこ」から「どこ」までを切り取るかを決めなければなりません.

(三角錐の頂点)
視点→→→→→→→→→切り口1→→→→切り口2→→→→→→(三角錐の底面)

上の図は三角錐を切り取るときの図であると思ってください.
切り口1~切り口2が視錐台になるとすると
視点~切り口1の部分は見えません.
要は視点から近すぎるものは見えないって事になります.

そして
OpenGLで視野を広げるのは
視錐台の視野角を広くしたり狭くしたりして行なうのを知ってますか?

このとき
OpenGL で拡大をします.すると...

(三角錐の頂点)
視点→→→→→→→→→→→→→→→切り口1→→切り口2→→(三角錐の底面)

上の図のようになります. なぜかというと
拡大は視野角を狭くするという操作にあたるからです.
すなわち三角錐の側面間の角度を狭くするという操作になります.
当然の事ながら三角錐は細長くなっていきます.
すると今まで見えていた部分が見えなくなってしまう事もあるのです!
なぜなら視錐台が大きさが変わってしまうからです!



一応自分なりに説明をしましたが
図と数式があった方が絶対分かりやすいので
良いサイトを紹介させていただきます.

↓視錐台のイメージがわかると思います.
http://www.is.oit.ac.jp/~whashimo/server/~whashi …
http://mail2.nara-edu.ac.jp/~asait/open_gl/linea …
↓もう少し詳しく
http://angra.blog31.fc2.com/blog-entry-114.html
↓gluPerspectiveなどの解説が分かりやすい
http://www.wakayama-u.ac.jp/~tokoi/opengl/libglu …

良い書籍としては...

http://www.amazon.co.jp/%E3%82%B2%E3%83%BC%E3%83 …

を読めば全て分かります.

ネットで探すなら
射影変換 視錐台
とかでググるとより詳しい内容が分かると思います.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!