首の制御で失敗した~!
最近クエリちゃん360VR(google play)をちょっと改良したのですが、
その際にカメラの方向を見るようにしました。
例によって以下のサイトからプログラム持ってきただけですがw
http://www40.atwiki.jp/spellbound/pages/1408.html
で、最初強めに方向制御したら、人間とは思えない状態になってしまいました、グキッ。
こりゃあかん、って事で今は角度抑えめで微妙に入ってる状態です。
(制御良くわからんです、すみませぬ)
本題、diveのfov効いてなくね?
前回、ハコスコに対応する為にDiveSDKのプログラム変更してましたが、
もともと参考にしたサイトが書いていた、fieldOfView(以下fov) を45に変更ってのは、
無効の様に見えました(実際右カメラに設定しても駄目だった。)
それで、DiveSDKのカメラのOpenDiveSenser.csを見た所、
独自のprojection変換行列が使われているようでした。(詳しくは以下)
http://docs.unity3d.com/ScriptReference/Camera-projectionMatrix.html
標準のパースペクティブカメラと違ってfovの値関係なさそうなので、
行列に入力される値を弄って画角かえます、具体的には以下の部分ですね。
cameraright.projectionMatrix = PerspectiveOffCenter((-zoom-correction)*(znear/0.1f), (zoom-correction)*(znear/0.1f), -zoom*(znear/0.1f)*aspectRatio, zoom*(znear/0.1f)*aspectRatio, znear, zfar);
後ろ二つのnearとfarは関係なさそうなので、テストで0.1fって値を4か所、右カメラだけ0.05fと小さくしてみました。
cameraright.projectionMatrix = PerspectiveOffCenter((-zoom-correction)*(znear/0.05f), (zoom-correction)*(znear/0.05f), -zoom*(znear/0.05f)*aspectRatio, zoom*(znear/0.05f)*aspectRatio, znear, zfar);
なんか右だけ広角っぽくなってますね!
なので、該当部分を以下みたいに書き換えてparamを0.1より増やせば望遠、減らせば広角になるのではないでしょうか?
float param=0.1f;
cameraleft.projectionMatrix = PerspectiveOffCenter(
(-zoom+correction)*(znear/param), (zoom+correction)*(znear/param),
-zoom*(znear/param)*aspectRatio, zoom*(znear/param)*aspectRatio,
znear, zfar);
cameraright.projectionMatrix = PerspectiveOffCenter(
(-zoom-correction)*(znear/param), (zoom-correction)*(znear/param),
-zoom*(znear/param)*aspectRatio, zoom*(znear/param)*aspectRatio,
znear, zfar);
fovと違って値から絵が予想できないのですが、何度かテストすれば最適な画角が得られそうです。
cardboardとハコスコ両方でdiveつかったり、タオバイザーのレンズを広角に変更したりする場合は試してみてください!
"Query-Chan model" by Pocket Queries, Inc. is licensed under a Creative Commons Attribution 4.0 International License(CC-BY).
0 件のコメント:
コメントを投稿