Maya で XSI Toon を使ってみる。 [後編]

新年あけましておめでとうございます、ペリーです。

正月休みを満喫…と言う訳にはいかず、何とこちらは2日から通常営業開始です。早ッ!
まあ、その分早くから休みが取れていたので、行って来いでチャラって感じですが…。


(追記)
siToon のインストール方法や使い方をまとめたページを作りました。
ファイルもそちらで配布するようにしたので、興味のある方はDOWNLOADページより、siToon for Mayaの記事を参照してみてください。

2013年最後の記事で、みごと Softimage  のトゥーンシェーダを Maya に移植する事には成功したのですが、いざアトリビュートを開いてみると変数名がそのまま表示されていると言う、何ともカオスな状態になってしまいました(汗
 (前回の記事はこちら


なんでこんな状態になっているかと言うと、シェーダを読み込む際に、Maya のアトリビュート上でどの変数をどのパラメータ名でに表示するかを書いた AE Template(Attribute Editor Template)というファイルがなかった事が原因だったりします。

この事は前回ご紹介した DFさんの記事「MayaでsiToon![デジタル・フロンティア-Digital Frontier | DF TALK]」の中でも触れられていたのでそれほど驚きはしなかったのですが、やはりこのままでは今後の作業に影響がでそうです。

まあ、自分だけが使うのならこのままでも良いのですが、作業を手伝ってくれている Steiner や Elmira がこの変数名から意味を理解するのはほぼ不可能だと思うので、ちょっと面倒ですが自分で AE Template を書いてみる事にしました。

sitoon.mi を書いた時は mental ray 言語だったのでかなり苦戦しましたが、AE Template は基本 MEL なので、少しでもMELを書いたことがある方ならそれほど苦戦しないかと思います。分かりにくいパラメータ名などは自分で変えて頂いても大丈夫です。 (Bypass ⇒ No Ink とか)
(ちなみに AE Template を書くのはこれが初めてだったりします。)

Web で表示するにはかなり長いソースコードになってしまったので、一度どこかに保存してから、お使いのエディタで開いてみてください。

global proc AEsitoon_inkTemplate ( string $nodeName )
{
 AEswatchDisplay $nodeName;
 editorTemplate -beginScrollLayout;
 
  editorTemplate -beginLayout "Basic Appearance" -collapse 0 ;
   editorTemplate -label "Bypass" -addControl "bypass";
   editorTemplate -addSeparator;
   editorTemplate -label "Ink Only" -addControl "ct_only";
   editorTemplate -addSeparator;
   editorTemplate -label "Color" -addControl "color";
   editorTemplate -callCustom "mixModeBuild" "mixModeUpdate" "mix_mode";
   editorTemplate -label "Spread" -addControl "spread";   
  editorTemplate -endLayout;

  editorTemplate -beginLayout "Taper" -collapse 1 ;  
   editorTemplate -beginLayout "Anisotropy" -collapse 0 ;
    editorTemplate -label "Amount" -addControl "aniso_mag";
    editorTemplate -label "Angle" -addControl "aniso_angle";
   editorTemplate -endLayout;
   
   editorTemplate -beginLayout "Direction" -collapse 0 ;
    editorTemplate -label "Amount" -addControl "n_taper";
    editorTemplate -label "Vector" -addControl "n_taper_vec";
    editorTemplate -callCustom "vectorSelectBuild" "vectorSelectUpdate" "n_taper_vec_select";
    editorTemplate -callCustom "spaceSelectBuild" "spaceSelectUpdate" "n_taper_space_select";
    
    editorTemplate -beginLayout "Direction/Spread" -collapse 0 ;
     editorTemplate -label "Direction Min" -addControl "n_taper_dir_min";
     editorTemplate -label "Direction Max" -addControl "n_taper_dir_max";
     editorTemplate -label "Spread Min" -addControl "n_taper_spread_min";
     editorTemplate -label "Spread Max" -addControl "n_taper_spread_max";
    editorTemplate -endLayout;
    
    editorTemplate -beginLayout "Profile" -collapse 0 ;
     editorTemplate -callCustom "dirProfOpBuild" "dirProfOpUpdate" "n_taper_profile_math";
     editorTemplate -label "Power" -addControl "n_taper_profile";
    editorTemplate -endLayout;
   editorTemplate -endLayout;
   
   editorTemplate -beginLayout "Distance" -collapse 0 ;
    editorTemplate -label "Amount" -addControl "z_taper";
    
    editorTemplate -beginLayout "Distance/Spread" -collapse 0 ;
     editorTemplate -label "Distance Min" -addControl "z_taper_dist_min";
     editorTemplate -label "Distance Max" -addControl "z_taper_dist_max";
     editorTemplate -label "Spread Min" -addControl "z_taper_spread_min";
     editorTemplate -label "Spread Max" -addControl "z_taper_spread_max";
    editorTemplate -endLayout;

    editorTemplate -beginLayout "Profile" -collapse 0 ;
     editorTemplate -callCustom "disProfOpBuild" "disProfOpUpdate" "z_taper_profile_math";
     editorTemplate -label "Power" -addControl "z_taper_profile";
    editorTemplate -endLayout;
   editorTemplate -endLayout;
   
   editorTemplate -beginLayout "Other" -collapse 0 ;
    editorTemplate -label "Trace Depth" -addControl "trace_taper";
   editorTemplate -endLayout;   
  editorTemplate -endLayout;

  editorTemplate -beginLayout "Variation" -collapse 1 ;
   editorTemplate -beginLayout "Spread" -collapse 0 ;
    editorTemplate -label "Amount" -addControl "variation";
    editorTemplate -label "Frequency" -addControl "variation_frequency";
    editorTemplate -label "Animation" -addControl "variation_animation";
    editorTemplate -callCustom "spreadBasisBuild" "spreadBasisUpdate" "variation_basis";
    editorTemplate -callCustom "spreadSpaceBuild" "spreadSpaceUpdate" "variation_space";
    
    editorTemplate -beginLayout "Variation/Spread" -collapse 0 ;
     editorTemplate -label "Variation Min" -addControl "variation_var_min";
     editorTemplate -label "Variation Max" -addControl "variation_var_max";
     editorTemplate -label "Spread Min" -addControl "variation_spread_min";
     editorTemplate -label "Spread Max" -addControl "variation_spread_max";
    editorTemplate -endLayout; 
    
    editorTemplate -beginLayout "Profile" -collapse 0 ;
     editorTemplate -callCustom "varProfOpBuild" "varProfOpUpdate" "variation_profile_math";
     editorTemplate -label "Power" -addControl "variation_profile";
    editorTemplate -endLayout; 
   editorTemplate -endLayout; 
  editorTemplate -endLayout;
  
  editorTemplate -beginLayout "Pressure" -collapse 1 ;
   editorTemplate -beginLayout "Brightness" -collapse 0 ;
    editorTemplate -label "Enable" -addControl "pressure_v_enable";
    editorTemplate -label "Spread Min" -addControl "pressure_v_org_min";
    editorTemplate -label "Spread Max" -addControl "pressure_v_org_max";
    editorTemplate -label "Brightness Min" -addControl "pressure_v_dest_min";
    editorTemplate -label "Brightness Max" -addControl "pressure_v_dest_max";
   editorTemplate -endLayout;

   editorTemplate -beginLayout "Saturation" -collapse 0 ;
    editorTemplate -label "Enable" -addControl "pressure_s_enable";
    editorTemplate -label "Spread Min" -addControl "pressure_s_org_min";
    editorTemplate -label "Spread Max" -addControl "pressure_s_org_max";
    editorTemplate -label "Saturation Min" -addControl "pressure_s_dest_min";
    editorTemplate -label "Saturation Max" -addControl "pressure_s_dest_max";
   editorTemplate -endLayout;
   
   editorTemplate -beginLayout "Alpha" -collapse 0 ;
    editorTemplate -label "Enable" -addControl "pressure_a_enable";
    editorTemplate -label "Spread Min" -addControl "pressure_a_org_min";
    editorTemplate -label "Spread Max" -addControl "pressure_a_org_max";
    editorTemplate -label "Alpha Min" -addControl "pressure_a_dest_min";
    editorTemplate -label "Alpha Max" -addControl "pressure_a_dest_max";
   editorTemplate -endLayout;
  editorTemplate -endLayout;
  
  editorTemplate -beginLayout "Sampling" -collapse 1 ;
   editorTemplate -label "Samples" -addControl "max_samples";
   editorTemplate -label "Trace Depth" -addControl "max_trace_depth";
   
   editorTemplate -beginLayout "Boundaries" -collapse 0 ;
    editorTemplate -label "Environment" -addControl "detect_obj_bg";
    editorTemplate -label "Object" -addControl "detect_obj_obj";
    editorTemplate -label "Material" -addControl "detect_mat_mat";
    
    editorTemplate -beginLayout "Host Materials" -collapse 0 ;
     editorTemplate -label "Paint" -addControl "detect_paint";
     editorTemplate -label "Shadow" -addControl "detect_shadow";
     editorTemplate -label "Transparency" -addControl "detect_transparency";
    editorTemplate -endLayout;
    
    editorTemplate -beginLayout "Facet" -collapse 0 ;
     editorTemplate -label "Enable" -addControl "detect_facet_enable";
     editorTemplate -label "Merge Coplanar" -addControl "detect_facet_merge_coplanar";
    editorTemplate -endLayout;
   editorTemplate -endLayout;
   
   editorTemplate -beginLayout "Threshholds" -collapse 0 ;
    editorTemplate -label "Direction" -addControl "detect_n_delta_min";
    editorTemplate -label "Didtance" -addControl "detect_z_delta_min";
   editorTemplate -endLayout;
  editorTemplate -endLayout;
  
  editorTemplate -beginLayout "Background" -collapse 1 ;
   editorTemplate -label "Enable" -addControl "bg_comp_enable";
   editorTemplate -label "Color" -addControl "bg_comp_color";
  editorTemplate -endLayout;
  
  editorTemplate -beginLayout "Lens Effects" -collapse 1 ;
   editorTemplate -beginLayout "Fisheys" -collapse 0 ;
    editorTemplate -label "Enable" -addControl "fisheye_enable";
    editorTemplate -label "Amount" -addControl "fisheye_amount";
    editorTemplate -beginLayout "Scale" -collapse 0 ;
     editorTemplate -label "X" -addControl "fisheye_scale_x";
     editorTemplate -label "Y" -addControl "fisheye_scale_y";
     editorTemplate -label "Uniform" -addControl "fisheye_scale_uniform";
    editorTemplate -endLayout;
   editorTemplate -endLayout;
   
   editorTemplate -beginLayout "Bulge" -collapse 0 ;
    editorTemplate -label "Enable" -addControl "bulge_enable";
    editorTemplate -label "Amount" -addControl "bulge_amount";
    editorTemplate -beginLayout "Magnitude" -collapse 0 ;
     editorTemplate -label "X" -addControl "bulge_scale_x";
     editorTemplate -label "Y" -addControl "bulge_scale_y";
    editorTemplate -endLayout;
   editorTemplate -endLayout;
  editorTemplate -endLayout; 
  
  editorTemplate -beginLayout "Advanced" -collapse 1 ;
   editorTemplate -label "Require Host" -addControl "host_mat_only";
   editorTemplate -callCustom "inkOnlyBuild" "inkOnlyUpdate" "ct_only_surface";
   editorTemplate -label "Sorting Tolence" -addControl "near_epsilon";
   editorTemplate -callCustom "distributionBuild" "distributionUpdate" "aperture";
   editorTemplate -label "Modify State" -addControl "state_modify";
   editorTemplate -callCustom "spreadScaleBuild" "spreadScaleUpdate" "spread_absrel";
   editorTemplate -label "to X-Res" -addControl "spread_rel_xres";
   
   editorTemplate -beginLayout "Fade Sampling Thresholds" -collapse 0;
    editorTemplate -label "Amount" -addControl "detect_delta_fade_amount";
    editorTemplate -beginLayout "Distance" -collapse 0;
     editorTemplate -label "Near" -addControl "detect_delta_fade_dist_min";
     editorTemplate -label "Far" -addControl "detect_delta_fade_dist_max";
    editorTemplate -endLayout;
    editorTemplate -beginLayout "Far Thresholds" -collapse 0;
     editorTemplate -label "Direction" -addControl "detect_n_delta_max";
     editorTemplate -label "Distance" -addControl "detect_z_delta_max";
    editorTemplate -endLayout;
   editorTemplate -endLayout;
  editorTemplate -endLayout;
   
  editorTemplate -addExtraControls;
  
 editorTemplate -endScrollLayout;
}

global proc mixModeBuild(string $compositionMenu)
{
    attrEnumOptionMenuGrp
        -label "Composition"
        -attribute $compositionMenu
        -enumeratedItem 0 "Normal"
        -enumeratedItem 1 "Add"
        -enumeratedItem 2 "Multiply"
        -enumeratedItem 3 "Screen"
        -enumeratedItem 4 "Overlay"
        -enumeratedItem 5 "Lighten"
        -enumeratedItem 6 "Darken"
        -enumeratedItem 7 "Difference"
        -enumeratedItem 8 "Hue"
        -enumeratedItem 9 "Saturation"
  -enumeratedItem 10 "Value"
  -enumeratedItem 11 "Soft Light"
  -enumeratedItem 12 "Hard Light"
  -enumeratedItem 13 "Exclusion"
  compMenuAttrOptionGrp;
}
global proc mixModeUpdate(string $compositionMenu)
{
    attrEnumOptionMenuGrp -e -attribute $compositionMenu compMenuAttrOptionGrp;
}

global proc vectorSelectBuild(string $vectorSelectMenu)
{
    attrEnumOptionMenuGrp
        -label "Vector"
        -attribute $vectorSelectMenu
        -enumeratedItem 0 "Camera"
        -enumeratedItem 1 "Custom"
        -enumeratedItem 2 "Over"
  -enumeratedItem 3 "Under"
  -enumeratedItem 4 "Left"
  -enumeratedItem 5 "Right"
  -enumeratedItem 6 "Above Left"
  -enumeratedItem 7 "Above Right"
  -enumeratedItem 8 "Below Left"
  -enumeratedItem 9 "Below Right"
  vectorSelectMenuAttrOptionGrp;
}
global proc vectorSelectUpdate(string $vectorSelectMenu)
{
    attrEnumOptionMenuGrp -e -attribute $vectorSelectMenu vectorSelectMenuAttrOptionGrp;
}

global proc spaceSelectBuild(string $spaceSelectMenu)
{
    attrEnumOptionMenuGrp
        -label "Custom Only: Space"
        -attribute $spaceSelectMenu
        -enumeratedItem 0 "World"
        -enumeratedItem 1 "Camera"
  spaceSelectMenuAttrOptionGrp;
}
global proc spaceSelectUpdate(string $spaceSelectMenu)
{
    attrEnumOptionMenuGrp -e -attribute $spaceSelectMenu spaceSelectMenuAttrOptionGrp;
}

global proc dirProfOpBuild(string $dirProfOpMenu)
{
    attrEnumOptionMenuGrp
        -label "Operation"
        -attribute $dirProfOpMenu
        -enumeratedItem 7 "Bias"
        -enumeratedItem 8 "Gain"
  dirProfOpMenuAttrOptionGrp;
}
global proc dirProfOpUpdate(string $dirProfOpMenu)
{
    attrEnumOptionMenuGrp -e -attribute $dirProfOpMenu dirProfOpMenuAttrOptionGrp;
}

global proc disProfOpBuild(string $disProfOpMenu)
{
    attrEnumOptionMenuGrp
        -label "Operation"
        -attribute $disProfOpMenu
        -enumeratedItem 7 "Bias"
        -enumeratedItem 8 "Gain"
  disProfOpMenuAttrOptionGrp;
}
global proc disProfOpUpdate(string $disProfOpMenu)
{
    attrEnumOptionMenuGrp -e -attribute $disProfOpMenu disProfOpMenuAttrOptionGrp;
}

global proc spreadBasisBuild(string $basisMenu)
{
    attrEnumOptionMenuGrp
        -label "Basis"
        -attribute $basisMenu
        -enumeratedItem 0 "Ray Direction"
        -enumeratedItem 1 "Intersection Point"
        -enumeratedItem 2 "Intersection Normal"
  basisMenuAttrOptionGrp;
}
global proc spreadBasisUpdate(string $basisMenu)
{
    attrEnumOptionMenuGrp -e -attribute $basisMenu basisMenuAttrOptionGrp;
}

global proc spreadSpaceBuild(string $spaceMenu)
{
    attrEnumOptionMenuGrp
        -label "Space"
        -attribute $spaceMenu
        -enumeratedItem 0 "World"
        -enumeratedItem 1 "Camera"
        -enumeratedItem 2 "Object"
  spaceMenuAttrOptionGrp;
}
global proc spreadBasisUpdate(string $spaceMenu)
{
    attrEnumOptionMenuGrp -e -attribute $spaceMenu spaceMenuAttrOptionGrp;
}

global proc varProfOpBuild(string $varProfOpMenu)
{
    attrEnumOptionMenuGrp
        -label "Operation"
        -attribute $varProfOpMenu
        -enumeratedItem 7 "Bias"
        -enumeratedItem 8 "Gain"
  varProfOpMenuAttrOptionGrp;
}
global proc varProfOpUpdate(string $varProfOpMenu)
{
    attrEnumOptionMenuGrp -e -attribute $varProfOpMenu varProfOpMenuAttrOptionGrp;
}

global proc inkOnlyBuild(string $inkOnlyMenu)
{
    attrEnumOptionMenuGrp
        -label "Ink Only"
        -attribute $inkOnlyMenu
        -enumeratedItem 0 "Exclude Surface Color"
        -enumeratedItem 1 "Include Surface Color"
  inkOnlyMenuAttrOptionGrp;
}
global proc inkOnlyUpdate(string $inkOnlyMenu)
{
    attrEnumOptionMenuGrp -e -attribute $inkOnlyMenu inkOnlyMenuAttrOptionGrp;
}

global proc spreadScaleBuild(string $spreadScaleMenu)
{
    attrEnumOptionMenuGrp
        -label "Spread Scale"
        -attribute $spreadScaleMenu
        -enumeratedItem 0 "Relative"
        -enumeratedItem 1 "Absolute"
  spreadScaleMenuAttrOptionGrp;
}
global proc spreadScaleUpdate(string $spreadScaleMenu)
{
    attrEnumOptionMenuGrp -e -attribute $spreadScaleMenu spreadScaleMenuAttrOptionGrp;
}

global proc distributionBuild(string $distributionMenu)
{
    attrEnumOptionMenuGrp
        -label "Distribution"
        -attribute $distributionMenu
        -enumeratedItem 0 "Area"
        -enumeratedItem 1 "Angular"
  distributionMenuAttrOptionGrp;
}
global proc distributionUpdate(string $distributionMenu)
{
    attrEnumOptionMenuGrp -e -attribute $distributionMenu distributionMenuAttrOptionGrp;
}

コピーしたら、ファイルを「AEsitoon_inkTemplate.mel」と名付けて保存します。
AE Template ファイルには命名規則(AEノード名Template.mel) があるので、これ以外の名前で保存してしまうと、アトリビュートが正しく表示されないので注意してください。

保存したら、このファイルを MELのPath が通っているフォルダの中に保存します。
自分の場合、mental ray 系の AE Template が保存してある \Autodesk\Maya2013\mentalray\scripts\AETemplates\ の中に放り込んでおきました。

あとは前回と同じように Maya を起動して、Hypershade ウインドウから sitoon ノードを作成。
アトリビュートタブを見てみると、今度は分かりやすく各パラメータが表示されていると思います。


ふつくしいw

ちなみに、各パラメータ名は基本Softimage上で表示されていたものと同じ名前を使っているので、SoftimageでsiToonを使った事のある方なら、そのままの感覚で使う事が出来ると思います。

ただ、見た目上は全ての機能がうまく動いている様に見えるのですが、正直 Softimage で試した事がないので、もしかしたら何か正しく動いていない機能があるかもしれません。
もし何かバグを見つけた方がいらしたら、ぜひご一報をよろしくお願いします。

それでは、またー。

0 コメント :

コメントを投稿

 

©Copyright Perry Street. All rights reserved.