« OPZ。 | トップページ | カメラのコネクタをオフ。 »

2014年3月24日 (月)

フラスタム。コーン。

カメラの視野角を表すハの字の線を表示させたかっただけです。 

個人的に、カメラにはこのハの字の線がないと気持ち悪いんです。 いやまあ、通常の時は無くてもいいか。 でもね、カメラに何が写っているのかを、そのカメラから見たビュー以外でも意識していたいことが多かったりするのでね。 あと、見えないオブジェクト削除とか、メッシュの分割減らしたりとか。 そういう時にもハの字は必須です。


XSI だとカメラごとに cone の表示をオンオフですね。 

Maya でのやり方を調べました。 というか教えて頂きました。


目的のカメラを選んで、

  Display > Rendering > Camera/Light Manipulator > Clipping Planes

を実行すると表示されます。

Cp

うん。 これでいいですね。 ちゃんと表示されています。


この機能、ハの字を表示させる機能と言うよりは、クリッピングプレーンを表示させるための機能なんですね。 そのプレーン2つ(Near と Far )を線で結ぶと結果的にハの字ができるので、それも表示させているような、そういう意味合いだと思います。


もっと言えば、クリッピングプレーンを 「表示させる」 機能ではなく、「エディットする」 ためのマニピュレータなんですねこれは。 プレーンの上にカーソルを置くと色が黄色に変わります。 ドラッグするとクリッピングプレーンが動きます。 アトリビュートエディタでカメラのクリッピングプレーンの値を見ながら操作すると、インタラクティブに値がアップデートされているのが分かります。 うん、良いですね。



XSI だとカメラの cone を表示させても、クリッピングプレーンをインタラクティブに操作することはできません。カメラの PPG から数値を手打ちするしかありません。 一方、XSI のスポットライトだけは、スポットライトのコーン(照射範囲)も、スタート/エンドもインタラクティブに操作できますよね(Bキーで)。 これ、カメラとほぼ同じしくみですよね。 なんでスポットライトだけそれができてカメラではできないのでしょう。XSI さま? 今さら何を言っても遅いのですが。

Xsicone

ただしこの Maya のクリッピングプレーンマニピュレータの場合、プレイバック中、あるいはタイムスライダをスクラブ中は表示が消えてしまうという欠点があります。


欠点と言いましたが、一概に欠点とは言えないですかね。これ、マニピュレータなので、移動や回転のマニピュレータと同じく再生中は邪魔だから消えましょう、という仕様になっているのですね。 なるほどね。 あくまでもマニピュレータですからね。


XSI の場合は、このクリッピングプレーンマニピュレータに限らず、全てのマニピュレータは、再生中に消えませんね。 Mayaは勝手に消してしまう。 ユーザが決められるようにするといいのにね。 XSI にはその設定あるでしょうか? 見たこと無いです。 どっちもユーザ側では決められないのかな。 知っている方がいらっしゃいましたら、どうか教えて下さい。

また、Mayaではこのハの字を選択しようとしても、選択できません。XSI の場合、コーンはカメラの一部みたいなもんで、コーンを選択すればカメラを選択できます。 混み合ったシーンでビューポートから特定のカメラを選択する時に、これ実はすごく便利でした。 Maya では、これはカメラではなくカメラのプレーンを操作するためのマニピュレータですから、マニピュレータを選択することは当然できませんよね。 しかたあるまい。
また、カメラごとにこのマニピュレータのオンオフを設定するわけだから、カメラのアトリビュートのどこかにこのスイッチがあるのかと思ったのですが、探しても見つかりません。 後に教えて頂いたところによると、昔はアトリビュートとして見えてたのだけど、現在は隠されているとのことでした。 オンオフの値をユーザに見せる必要は無いと思ったのでしょうか。いやいやいや、スクリプトを書く時なんかに、UI 上に出てないパラメータがあったりするとそりゃもう苦労します。 隠さずに表に出して欲しいです嘔吐デスク様。


ちなみにこのマニピュレータのオンオフを司るコマンドは、renderManip だそうです。 http://download.autodesk.com/global/docs/maya2014/en_us/Commands/renderManip.html







さて、再生/スクラブ中に表示が消えてしまうのが嫌だ、という場合にいい方法がありました。どなた様かが書いた MEL です。

https://github.com/bohdon/dilloTools/blob/master/scripts/createCameraFrustum.mel

いつも通りの 足りないものは自前で書く というカルチャーでしょうか。ほとんど足りないのでいちいち全部自前で書くことになる気がするんですが、そんなことはないですか。

カメラを選択した状態でこのスクリプトを走らせると、カメラの子供にfrustum というトランスフォームノード?ができます。 さらにその子供に、ナーブスカーブオブジェクトが4つあり、これでハの字の領域を作っています。 カメラのクリッピングプレーンや視野角を変更すると、このカーブもちゃんと連動して更新されます。 そしてこれはマニピュレータではなくただのカーブオブジェクトなので、再生やスクラブ中にも当然表示は消えません。 うん、スヴァらしい。

Mayafrustum

ちなみにこれらのカーブ、生成された時は選択不可の状態になってます。親である frustum というトランスフォームノードの Display のアトリビュートで Template がオンになってました。 子であるカーブたちが親からこの設定を引き継いで、選択できなくなってるのですね。だから親の Template を解除してやればカーブも選択できるようになります。選択してもあんまり意味なさそうですが。 だからこそ作者の人が選択不可にしたのでしょうが。


ちなみにこの Template って、選択不可だけではなくなぜかワイヤ表示にされてしまいますよね。 単に選択ができない Reference の方は分かるんですが、表示をワイヤにしてしまう Template 表示って、どういう時に使うのか、よく分かってません。 もしかしてアレかなあ。Mayaのビューポートって、ワイヤやシェーディングやテクスチャ表示などがオブジェクトごとに違うという、混ざった表示モードがないのかなあ。 XSI は普通にそれができるので便利ですよね。 Mayaでもそれ、できるのかなあ。 まだ調べてません。



カメラの視野角とクリッピングプレーンで囲まれた、いわば 「見える領域」 のことを、frustum って言うんですってね。 フラスタム。 そんな用語があるとは知らなかった。 錐台(すいだい)っていう図形の名前みたいですよ。

http://ja.wikipedia.org/wiki/%E9%8C%90%E5%8F%B0



Thanks to melonVFX 様 & しん様
すべてはこのお二人に教えて頂きました。 お世話になりました。 助かりました。




それにしてもまあ、こんな、cone を表示させるだけで大騒ぎして、全力メモとか。マジですか。先が思いやられます。エネルギー足りないっスよ。  Maya様なんて、仕事で必要な部分だけさっさと習得してしまって、あとは深入りせずに他のソフトウェアの習得にエネルギー注入した方が楽しい気がするんですが、どうですかね。 ブレンダとか。



---------------------------
追記:
そういえばこの話、最初は林田さんに教えてもらったような気がしてきた。 すいません、忘れちゃってて。  Thanks to 林田様。 を追記しておきます。
.

|

« OPZ。 | トップページ | カメラのコネクタをオフ。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/217974/59337001

この記事へのトラックバック一覧です: フラスタム。コーン。:

« OPZ。 | トップページ | カメラのコネクタをオフ。 »