■スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--/--/-- --:-- | スポンサー広告 | page top↑
■vrm3 Dx9ビュアーのカメラ挙動
まさか日向車両でvrmの文字列がまた出てくるなんて夢にも思ってみませんが(笑)それは言い過ぎ。
 
vrm3の一番新しいビュアー(Directx9Type)では少なくとも、カメラの動き方が最新版vrm4以降vrm5等とでは大幅に違っています。
ついったで文字だけで書いてみたら、自分の文章力の無さも手伝ってワケ若布だったので、昨晩~今朝にかけてしこしこと図を作ってみました。
 
そもそも、何故こんな事を書いているかと言うと、V3のカメラの使用感がV4以降のそれに比べて格段に劣るからです。いや劣るんじゃなくてちょっと不便。上手く扱うにはコツが要る、上級者向けなのかなぁと。ただし使いこなせればかなり自由度があります。
V3から始めたオイラでさえ、今になってようやく仕組みが分ったのですから、今までなんだったのって話ですけど(笑
特に上下に首を振る操作の後に、左右の回りこみ操作を行った時にエラいスピードでカメラが振られてしまって、迷子になってしまうという事がしょっちゅう起きるんですが、こうなった時にフライスルー以外の、デフォルト座標情報を持ったカメラならテンキー[5]を押せばアングルごと元に戻ってリセットがききますが、フライスルーカメラがこうなってしまうとビュアー再起動しかリセットの手段が無いんです。そんなワケあるか(爆
 

先ずは断りを入れておきますが、図解に於いての便宜上、上の図のように名称します。
カメラ及びフィールドの転地方向をY軸、前後方向をZ軸、それぞれ矢印向きが+の値です。
カメラそのものの位置をローカル座標(オレンジ)、カメラが向いている先をターゲット座標(ピンク)とします。
文中の[数字or記号]はテンキーのボタンです。
 
先ずは上下首振り関連

[Ctrl][-]/[+]では、カメラのローカル座標をY軸方向に移動します。ターゲット座標は動きません。
図中では[Ctrl][+]の例ですが、ターゲット座標よりローカル座標のYが+である時、視線は下を向いています。ローカル座標を-Y方向に移動させていくと、ターゲット座標のYと同じ値まで下がればカメラ向きは平行になり、それを通り過ぎてマイナスに転じれば(ターゲット座標のYが+になる。)視線は上を向きます。[Ctrl][-]では逆に+Y方向に移動していきます。
ターゲット座標がZ方向に近くにある時は、視線の上下としての操作もできますが、ターゲット座標が遠い場合はただ単にローカル座標の高度が変わるだけ、といった感じになります。ターゲット座標が近くにあっても、例えば真下に向かせようとすればするほど、ローカル座標の高度は高くなってしまいますし、真下は向けません。
 

[Shift][-]/[+]では、カメラのターゲット座標をZ軸方向に移動します。ローカル座標は動きません。
図中では[Shift][+]の例。ターゲット座標よりローカル座標のY値が+で尚且つ、ローカル座標よりもターゲット座標のZが+である時、視線は斜め下を向いています。ターゲット座標を-Z方向に移動させていくと、ローカル座標のZ値に近づく程に視線は下を向いていき、ローカル座標のZ値と同じ位置までいくと真下を向きます。(ローカル座標とターゲット座標のYの位置関係が逆転すれば真上ですが。)ターゲット座標のZ値がローカル座標のZ値を下回る前に移動をやめないと、そのまま視線が固まることがあります。
[Shift][-]では逆にターゲット座標が+Z方向に遠のいていくので、ローカル座標Yが+の時には視線が上を向いていくように見えます。ある程度まで上を向くと動きが渋くなります。が、このまま頑張って上に向けようと思っても平行に到達する事はありません。当然平行を超えて上を向く事もありません。むしろ渋くなってきたらターゲット座標が遠くなっている証拠です。
 

[-]/[+]では、ローカル座標、ターゲット座標共にY軸方向に同期移動します。
図中では[+]なので-Y方向に移動してます。ターゲット座標をY軸方向に移動させる唯一の方法です。
 
続いて左右首振り関連。

[7]/[9]で、カメラのローカル座標を中心にして、その場で左右に首を振ります。
まぁこれは普通というか常用手段だと思いますが。
 

それに対して[1]/[3]は、ターゲット座標を中心にして、回り込むように左右旋回します。
ターゲットつまり被写体から目を離さずに旋回できるので、よく使うって人も居ると思いますが、今回問題になってるのはこの操作です。
ターゲット座標を中心に旋回ということは、ローカル座標の動線は、ターゲット座標Zからローカル座標Zまでの距離=半径の円の円周上ということです。先の上下首振りにより、ターゲット座標のZ値が遥か彼方の位置に行ってしまってる場合、この操作をしてしまうと、遥か遠くのターゲット位置から振り回される事になるわけです。

この事象が発生する原因は、ビュアー展開時のフライスルーカメラのアングル・・・仮にローカル座標がY=5/X=0、ターゲット座標がY=0/X=5として、視線を上に向けるために[Shift][-]を行う。ある程度良い角度まで上がったところで、カメラの左右向きを変えようと[1]または[3]で回り込み旋回をしてしまう。→レイアウトの範囲から放り出されて迷子(涙)という展開が殆どかと思います。
 
こうなってしまった場合の対処法としては、視線が(平行に対して)下を向いてるなら、先ず[Ctrl][-]でローカル座標を+Y方向に若干移動させて(確実にターゲット座標Yより+であればOK。)[Shift][+]でターゲット座標を-Z側に寄せます。結果としては視線が下を向くと思います。その後、[Ctrl][+]でローカル座標を-Y方向に移動させて、平行に近づけていくと、あ、この辺を中心に動いてるなというポイントがあると思います。つまりはそれがターゲット座標の位置なワケですが。
 
基本的には、ターゲット座標をZ軸方向に動かしすぎないように・・・、と、いう事であります。
 
カメラを上下方向に首振りさせる場合は、基本的には[Shift][-]/[+]ではなくて、[Ctrl][-]/[+]で角度を決めてから、[-]/[+]で高度を調整するのが良いのかなと思います。ターゲット座標がY=0の場合にカメラを上に向けたい場合はローカル座標が地面にめり込みますからね。
vrm3までは、鉄道模型のシミュレータという色が濃かったのでしょう。フライスルーカメラとは、模型を操る我々目線という設定だとすれば、ターゲット座標の高度が地表ほぼ0を指してるのは恐らくこのためかなとか。意味解んないですかそうですか。
地表を見ていれば、[Shift][-]/[+]により今どのへんがターゲットになってるかが判ります。[Shift][-]/[+]はカメラの上下首振りじゃなくて、ターゲット座標のZ軸調整用だと思うといいです。
 
というわけで、全国3万人のVRM3ユーザーの為にオイラは勝手に燃え尽きたったZE。真っピンクにな。。。
2011/11/13 18:15 | 電波 | コメント(2) | トラックバック(0) | page top↑
n e w < < vrm4ビュアーのカメラ挙動 | H o m e | No.800 - 5 > > o l d
コメント
勝手にwww
うーん、素晴らしい解説。特に被写体をフォローしてる時の動きと、迷子になった時の戻し方はわかり易いね。俺はどうにもならなくて、諦めて再起動してたしw。
by:はやぶさ | URL | #3QJrKhto【2011/11/13 18:36】 [ 編集] | page top↑
どもです。
V3全盛~V4初期の頃に、こういう解説が目に付くところにあったら良かったんでしょうけども、今更何頑張って勝手に燃え尽きてるんだwwって感じかもですが、これがオイラなりの愛の形ですwwぇw
 
V5とかだと座標叩き込んでカメラ制御するスクリプトもありましたよね。
頭の中に三角形を描くと判りやすいかなとか思います。それにFovも絡んで来るとまた複雑なんですけどね。。
ローカルポジションからターゲットまでの距離と画角で描写範囲が割り出せますけど・・・なんて、カメラ屋みたいな話になっちゃいますね。
by:moko | URL | #uBfUABJ6【2011/11/13 19:42】 [ 編集] | page top↑
コメントの投稿














トラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。