2011年10月23日日曜日

Batch Renderメモ

あるものを複数のカメラからレンダリングする場合やオブジェクトごとにレンダリングを分ける場合はバッチレンダリングを使用しレンダリング管理すると非常に楽だ。

つまりレンダリングしたい素材ごとにシーン状態、レンダリング設定(プリセット)、カメラ設定、保存設定を登録できる。
いちいちレンダリングするために保存先変えたり、カメラ変えたりしなくて済む。
詳しい設定方法などはヘルプに載っていると思いますので省きます。

とまあ便利は便利だが、色々と不便さも兼ね備えている。

・現状不便だと感じたところ
①名前のソートが出来ない。
②選択が一つ一つしかできない
③間違って消してしまったとき、ctrl+Zが使えない

②を解決する方法としてBatch Render Assistantのスクリプトを使うと解決。


上のリンクのscriptspotに他にも使えそうなパッチレンダ系のスクリプトありそうだが、どうなんだろ??
誰かオススメのバッチレンダがあれば教えてください{%ピクトハカセhdeco%}
とりあえず上記①の不便さを解消したいっす!!


後、気をつけたいのがレンダーエレメントをプリセットで保存して使用する場合だ。
commonタブで保存先が指定されている場合(チェックボックス有無問わず)、レンダーエレメントの保存先を決めてプリセット保存し、ロードするとcommonタブでのファイル名を元にエレメントのファイル名が変更される。
なので、エレメントをプリセット保存する場合はRenderOutputFilename = ""でcommonタブでのファイルパスを空にしてやらなければいけないようだ。とりあえず、バッチレンダを使うときは空にしたほうが良い。



maxバージョンアップしても改善されないし、使いやすくならないのが不思議に思う。。




2011年10月17日月曜日

ゲーム開発のための数学・物理学入門 改訂版


ゲーム開発のための数学・物理学入門 改訂版
ソフトバンククリエイティブ
ウェンディ・スターラー

amazon.co.jpで買う
Amazonアソシエイト by ゲーム開発のための数学・物理学入門 改訂版 の詳しい情報を見る / ウェブリブログ商品ポータル



最近は、暇なときは上記の本を読んでる。。
スクリプト勉強しているときに、ベクトルの正規化に躓いてから、こりゃいかんと思って基礎を学んでいます。
まだ途中だけど、何とか進めてる。いつもこういう類の本は三日坊主なんですがね。
まあ続いている理由としては、分かりやすい。
数学で何が出来るかを知りたい人にはオススメかも。将来、子供にも3dsmax使って「三角関数はこんなこと出来るんだぜっ!」と教えたい{%うれしいwebry%}



ゲーム開発のための数学・物理学入門 改訂版


ゲーム開発のための数学・物理学入門 改訂版
ソフトバンククリエイティブ
ウェンディ・スターラー

amazon.co.jpで買う
Amazonアソシエイト by ゲーム開発のための数学・物理学入門 改訂版 の詳しい情報を見る / ウェブリブログ商品ポータル



最近は、暇なときは上記の本を読んでる。。
スクリプト勉強しているときに、ベクトルの正規化に躓いてから、こりゃいかんと思って基礎を学んでいます。
まだ途中だけど、何とか進めてる。いつもこういう類の本は三日坊主なんですがね。
まあ続いている理由としては、分かりやすい。
数学で何が出来るかを知りたい人にはオススメかも。将来、子供にも3dsmax使って「三角関数はこんなこと出来るんだぜっ!」と教えたい{%うれしいwebry%}



2011年10月3日月曜日

ベクトルの正規化について

Zで行こう!さんのサイトでスクリプトを勉強してたら、ベクトルの正規化というものが出てきた。エフェクトアーティストたるものこれは見逃せないことだと思い色々と調べてみた。高校時代の数学ことなんて全く覚えてません。{%泣くwebry%}

まずベクトルの正規化を学ぶにあたって、以下のお題を進めながら学んでいこうと思う。


お題:3D空間に存在する球(sphB)を球(sphA)に接するように移動する

デカルト座標で示すとこんな感じ。分かりやすく2Dで考えていきます。

画像


この図から見るように、moveメソッドに引数として赤の矢印のベクトル値を渡してやれば、OKだ。


①赤いベクトルの大きさを求める。
大きさをsph_distanceとすると、
sph_distance = (distance sphA.pos sphB.pos)-(sphA.radius+sphB.radius)
となる。

②赤いベクトルの単位ベクトル(方向)を求める。
①の大きさのベクトルを求めるとなると、大きさ1となる単位ベクトルが必要になる。
なぜなら、ベクトルは大きさと単位ベクトルの積で表されるからである。

画像

こんな感じかな{%トホホwebry%}

単位ベクトルが必要ということで、それを出すにはnormalize を使う。赤いベクトルの単位ベクトルをsph_unit_vectorとすると、
sph_unit_vector=normalize (sphA.pos-sphB.pos)
となる。

③上記のように①*②で赤いベクトルの値が求められる。
赤いベクトルをsph_vectorとすると、
sph_vector = sph_distance*sph_unit_vector

④最後にmoveメソッドに③を渡してやればOKだ。
move $sphB sph_vector


以上、ベクトルを使った移動を見てきたが、ベクトルの正規化という言葉が出てきてない。
ベクトルの正規化というのは②で見られるようにベクトルを単位ベクトル化するということである。
メソッドで言うと、normalize  がそれにあたる。