2011年3月9日水曜日

レイトレースシャドウの輪郭をぼかす

エリアライト以外のライトでレイトレースシャドウを用いた場合でも、
影の輪郭をぼかすことが出来る。



1.ライトのアトリビュート[Shadows]内の[Use Ray Trace Shadows]にチェック

2.ライトの種類によって名称が違う以下の項目の数値を上げる
 ライト毎に効果の強さは違うが、総じて数値が大きいほどボケは大きくなる
 ・アンビエントライト  ・・・[Shadow Radius]
 ・ディレクショナルライト・・・[Light Angle]
 ・ポイント/スポットライト・・・[Light Radius]

3.ボケあしが大きいほど影がノイズ状になるため、[Shadow Rays]の値を上げる


       【ディレクショナルライト】

Directionallight_n 
      LightAngle 0 , ShadowRays 1
 
 

Directionallight_b
      LightAngle 8 , ShadowRays 50
 
 
 
          【ポイントライト】

 
Pointlight_n
     LightRadius 0 , ShadowRays 1
 
 
Pointlight_b
     LightRadius 20 , ShadowRays 30
 
 
綺麗なボケが作成できるが、擬似的なものなので正確性はエリアライトに劣る筈。



2011年3月3日木曜日

Maya2012発表

今年も前年と同じく、GDCでAutodesk製品の2012バージョンが発表された。
Mayaは2010→2011の大刷新に比べると、だいぶ地味な印象。
2011は1年間のうちに、SAP含めると6バージョンリリースされているし、
2012はその延長線上かなと思った。
個人的には2011は結構気に入っているのでこのままの感じで行って欲しい。



Maya2012



すでにいろんな場所で紹介されている、動画による新機能紹介は下記(動画は英語)
http://www.autodesk.co.jp/adsk/servlet/pc/index?siteID=1169823&id=14515689



日本語の新機能一覧はボーンデジタル様のサイトが一番見やすいと感じた。
http://www.borndigital.co.jp/software/info.php?id=88&pid=1



とりあえず触ってみたいのは、MotionBuilderとUI・ソルバが統一されたというHIKかな。



2011年2月4日金曜日

保存時の作業状態を書き込まない/読み込まない

デフォルトのOpen scene/Save sceneの設定では、
保存時に開いていたウィンドウの状態やツールセッティングの
パラメータなども同時に保存/読み込んでしまう。



なので、うっかり重いシーンでRenderViewやHyperShadeウィンドウを
開いたまま保存してしまうと、スペックの低いPCでは開く事が
できないなど、トラブルの原因になってしまう。それを避ける方法。



1.[Window]→[Setting/Preferences]→[Preferences]を選択。
2.開いたウィンドウの左端、[Categories]で[UI Elements]を選択
3.開いた項目中[Panel Configurations]欄内、
 [When saving]と[When opening]のチェックを外す



Saveset_001



これによって、データのみ保存/開く事ができ、作業設定はデフォルト状態が保たれる。



個人で作業する分にはどちらかのチェックが外れていれば問題ないのだが、
複数人での作業がある場合は[When saving]のチェックを外しておくのがマナー?



2011年1月10日月曜日

ハイディティールモデルからのノーマルマップ生成

Normalmap_02
        【ノーマルマップ適用後】



Normalmap_01
        【ジオメトリのみの状態】



ZBrushやその他スカルプトツールなどで作成したハイディティールモデルから
ノーマルマップを生成し、ローポリゴンモデルに転写する方法。
 
 
Normalmap_03



転写される側のローモデルは、事前にUV展開しておく。
その際、展開したUV同士が重ならないように配置する。
ハイモデルのUVは特に考慮する必要はない。
 
 
1.[Lighting/Shading]→[Transfer Maps…]を選択。
2.開いたウインドウの左上[Edit]→[Reset Setting]で初期設定に戻す。
3.初期設定の状態から以下の項目を変更する



Normalmap_04



・ローモデルのみを選択した状態で、[Target Meshes]欄内の[Add Selected]ボタンをクリック
・ハイモデルのみを選択した状態で、[Source Meshes]欄内の[Add Selected]ボタンをクリック
・[Output Maps]欄内の[Normal]アイコンをクリックし、NormalMap設定を追加する



・[Normal map]から生成した画像の保存先を指定する
・[File format:]から画像形式を選ぶ。非圧縮フォーマットが無難。
・[Use Maya common settings]にチェック。



・[Maya Common Output]欄を開く。
・[Map width:][Map height:]で出力画像サイズを指定。
・[Transfer in:]から転写方法を選択。
  双方のジオメトリ形状の誤差が少ないなら[UV Space]が精度高く転写できる。
  誤差が大きい場合は[World Space][Object Space]の方がうまく転写できる。
・[Filter size]の数値を1.5~2.0程度に下げる。初期値ではボケ過ぎる為。



・[Bake and Close]か[Bake]ボタンを押し、ノーマルマップの生成/転写を行う。



生成後には、ローモデルにノーマルマップがアサインされた新しいマテリアルが適用される。
これを確認するにはビューポートを[High Quality Rendering]にするか(グラボ性能による)、
mentalrayを使ってレンダリングを行う。
MayaSoftwareではノーマルマップは確認出来ないので注意。



Normalmap_05
        【生成されたノーマルマップ】



2011年始のご挨拶

Newyear



すっかり遅くなりましたが、明けましておめでとうございます。
昨年末は若干更新が滞りましたが今年もぼちぼちメモ書きを続けようと思います。



今年は予想通りに進めば、



・FBX出力設定の再確認
・リアルタイムシェーダへの(何度目かの)挑戦
・ゲームエンジン「Unity」の運用
・MayaのMEL、PSのjavascript、SIのvbsの作成、運用



などに挑戦することになりそうです。
なんだかMaya関連が少ないですが…。



近しいテーマで作業されている方がいらっしゃったら、
ぜひ情報交換できればと思います。
Twitterなどにもおりますのでお気軽に。



それでは今年もよろしくお願い致します。



2010年11月10日水曜日

[MEL] SI方式の表示/非表示切り替え

ひさしぶりの更新。
 
最近ちょっとSoftimage触っていて、Hideの仕様がいいなと思ったのでMELで作ってみた。
仕様の違いはこんな感じ。

 
【Maya】

 オブジェクトを選択後、Ctrl+hで非表示。選択状態は解除される。
 HyperGraph等で再選択後、Shift+hで再表示。選択状態は維持。
 特に非表示にした後、再表示するのに手間が掛かる印象。

 
【Softimage】
 表示中のオブジェクトを選択後、hで非表示。選択状態は維持。
 非表示のオブジェクトを選択後、hで再表示。選択状態は維持。
 選択状態が維持されるので、hを押す度に表示/非表示を切り替えられる。
 
で、作ってみたのが以下のMEL。
"h"のホットキーに登録して使う。





global proc hideSIstyle()
{
    string $hideObj[] = `ls -sl`;
    int $i = `getAttr ($hideObj[0]+".visibility")`;

    switch($i)
    {
        case 0:
        showHidden;
        break;

        case 1:
        hide;
        select -r $hideObj;

        default:
        break;
    }
}







複数選択の場合、最初に選んだモデルの表示状態に揃う。
便利かどうかは、好みの問題かもしれない。



2013/7/31
本当のSIのhideはトグルですよ、との指摘を頂いたので
一応それも作ってみた。
ただ、どうしても個別に表示を切り替える必要があるため
大量にオブジェクトを選択していると動作が重くなる…。






global proc hideSIstyle()

{
    int $tgl;
   
int $vis;
   
string $hideObj[] = `ls -sl`;
   
for ($Object in $hideObj)
    {
       
$vis = `getAttr ($Object+".visibility")`;
       
$tgl = abs($vis - 1);
        setAttr ($Object+".visibility") $tgl;
    }
    select -r $hideObj;
}



2010年10月5日火曜日

[MEL]法線を転写する

Normalcopy00
 
 
同一頂点数の2つのジオメトリ間で、法線情報のみ
コピーペーストする手法を探したがなかったので、
簡単なMELを作成してみた。
コピー元→コピー先の順にモデルを選択しMELを
実行すると法線が転写される。
 
 
作成意図は、最近のアニメ的表現でよく用いられている、
膨らませたモデルの法線を転写する事によって陰影を
簡略化する手法を実現するため。
 
Normalcopy01
 
作成したMELは以下。
 
 
 
// 法線の転写実験
//
// 変数定義
string $objname[]; // 選択オブジェクト名
int $vertexNo[]; // オブジェクトのバーテックス数
float $normalX[]; // 法線X
float $normalY[]; // 法線Y
float $normalZ[]; // 法線Z



// 選択オブジェクトの取得と頂点数カウント
$objname = `ls -sl`;
$vertexNo = `polyEvaluate -v $objname[0]`;



// 法線情報の取得と転写
for ($i=0 ; $i<$vertexNo[0] ; $i++)
{
// 取得情報を初期化
clear $normalX;
clear $normalY;
clear $normalZ;
// 最初に選択したオブジェクトの法線を取得
$normalX = `polyNormalPerVertex -q -x ($objname[0] + ".vtx[" + $i + "]")`;
$normalY = `polyNormalPerVertex -q -y ($objname[0] + ".vtx[" + $i + "]")`;
$normalZ = `polyNormalPerVertex -q -z ($objname[0] + ".vtx[" + $i + "]")`;
// 2番目に選択したオブジェクトに法線をペースト
polyNormalPerVertex -xyz $normalX[0] $normalY[0] $normalZ[0] ($objname[1] + ".vtx[" + $i + "]");
}
 
 
 
 
実験的に作成したものなので、実用化するには
以下のような状況への対応が最低限必要と思われる。
 
・3つ以上のオブジェクトが選択された場合の処理
・オブジェクト間で頂点数が違った場合の処理
・1頂点に複数法線がある場合(共有法線でない場合)

 
作成してみるとこの処理、法線情報の平均化という手法が
いわゆるNormalMapの使用意図の間逆である点が面白いと思った。