« C4D 標準パーティクルで、つい… | トップページ | 昨日も、「C4D パーティクル」で検索して、ここにたどり着いた人がいたので… »

C4D R11.5Demo より C4D基本マテリアル

C4DでC.O.F.F.E.E.によって、各パラメータにアクセスする為に、以前はC.O.F.F.E.E.SDKを読み解かなければなりませんでしたが…
最近のC4Dでは、C.O.F.F.E.E.SDKを読まずして、簡単にアクセスできるようになりました。

嬉しいような… でもSDKと日々格闘してきたので、自分としては寂しいような…

さて、各パラメータにアクセスするユーザスクリプトを作る方法ですが…
ご存知の方も多いと思います。

アクセスが必要なパラメータの項目を右クリックし、コンテキストメニューを表示させます。
その中の、「スクリプトを作成...」を実行します。

Material_01

これで、スクリプトマネージャが呼ばれ、自動で現在のパラメータの数値を設定するスクリプトが生成されます。

Material_02

あとは、5行目の最後vector(0.8,0.8,0.8)の中の数値を0.0~1.0で自由に変更します。

ただ数値を変更するだけなら、わざわざ、スクリプトを生成してから変更するのではなく、ダイアログでパラメータを変更してから「スクリプトの作成...」を実行することでしょうね…

これで、選択された全てのマテリアルのカラーをグレー80%に設定するスクリプトが完成するわけです。

以前の記事でも紹介しましたが、SDKでは、「マテリアル」から「チャンネル」を取得し…
その「チャンネル」の「コンテナ」を取得… 更に、「コンテナ」から各パラメータの値を取得…
と言う手順でした。

変更を適用するには、その逆で、パラメータを「コンテナ」に格納し、「コンテナ」をチャンネルに適用…

と、言う具合でしたね。

さて、自動生成されたスクリプトを見てみます。
各パラメータは、直接マテリアルから、定数を使用してアクセスしています。
パラメータの取得も、適用もチャンネルを取得する事無く、ダイレクトに行われます。

次のリストは、「スクリプトを作成...」でスクリプトが生成されるパラメータのリストです。
全てが、生成されるわけではないようです。
生成されないのは「テクスチャ」のみのようです。
ただし、コンテキストメニューの「スクリプトを作成...」が無効になっているわけではありません。
実行ができる状態でありながら、スクリプトが生成されません。

項目 ID スクリプト生成
カラー MATERIAL_USE_COLOR
カラー MATERIAL_COLOR_COLOR
明るさ MATERIAL_COLOR_BRIGHTNESS
テクスチャ MATERIAL_COLOR_SHADER ×
混合モード MATERIAL_COLOR_TEXTUREMIXING
強度 MATERIAL_COLOR_TEXTURESTRENGTH
拡散 MATERIAL_USE_DIFFUSION
拡散率 MATERIAL_DIFFUSION_BRIGHTNESS
発光に影響 MATERIAL_DIFFUSION_AFFECT_LUMINANCE
スペキュラに影響 MATERIAL_DIFFUSION_AFFECT_SPECULAR
鏡面反射に影響 MATERIAL_DIFFUSION_AFFECT_REFLECTION
テクスチャ MATERIAL_DIFFUSION_SHADER ×
混合モード MATERIAL_DIFFUSION_TEXTUREMIXING
強度 MATERIAL_DIFFUSION_TEXTURESTRENGTH
発光 MATERIAL_USE_LUMINANCE
発光色 MATERIAL_LUMINANCE_COLOR
明るさ MATERIAL_LUMINANCE_BRIGHTNESS
テクスチャ MATERIAL_LUMINANCE_SHADER ×
混合モード MATERIAL_LUMINANCE_TEXTUREMIXING
強度 MATERIAL_LUMINANCE_TEXTURESTRENGTH
透過 MATERIAL_USE_TRANSPARENCY
透過色 MATERIAL_TRANSPARENCY_COLOR
透明度 MATERIAL_TRANSPARENCY_BRIGHTNESS
屈折率 MATERIAL_TRANSPARENCY_REFRACTION
フレネル MATERIAL_TRANSPARENCY_FRESNEL
放出鏡面反射 MATERIAL_TRANSPARENCY_EXITREFLECTIONS
透過フレネルの鏡面反射度 MATERIAL_TRANSPARENCY_FRESNELREFLECTIVITY
加算 MATERIAL_TRANSPARENCY_ADDITIVE
テクスチャ MATERIAL_TRANSPARENCY_SHADER ×
混合モード MATERIAL_TRANSPARENCY_TEXTUREMIXING
強度 MATERIAL_TRANSPARENCY_TEXTURESTRENGTH
吸収色 MATERIAL_TRANSPARENCY_ABSORPTIONCOLOR
吸収距離 MATERIAL_TRANSPARENCY_ABSORPTIONDISTANCE
拡散屈折 MATERIAL_TRANSPARENCY_DISPERSION
最小サンプル数 MATERIAL_TRANSPARENCY_MINSAMPLES
最大サンプル数 MATERIAL_TRANSPARENCY_MAXSAMPLES
計算精度 MATERIAL_TRANSPARENCY_ACCURACY
鏡面反射 MATERIAL_USE_REFLECTION
鏡面反射色 MATERIAL_REFLECTION_COLOR
反射率 MATERIAL_REFLECTION_BRIGHTNESS
加算 MATERIAL_REFLECTION_ADDITIVE
テクスチャ MATERIAL_REFLECTION_SHADER ×
混合モード MATERIAL_REFLECTION_TEXTUREMIXING
強度 MATERIAL_REFLECTION_TEXTURESTRENGTH
拡散鏡面反射 MATERIAL_REFLECTION_DISPERSION
最小サンプル数 MATERIAL_REFLECTION_MINSAMPLES
最大サンプル数 MATERIAL_REFLECTION_MAXSAMPLES
計算精度 MATERIAL_REFLECTION_ACCURACY
環境 MATERIAL_USE_ENVIRONMENT
環境色 MATERIAL_ENVIRONMENT_COLOR
明るさ MATERIAL_ENVIRONMENT_BRIGHTNESS
テクスチャ MATERIAL_ENVIRONMENT_SHADER ×
混合モード MATERIAL_ENVIRONMENT_TEXTUREMIXING
強度 MATERIAL_ENVIRONMENT_TEXTURESTRENGTH
X方向タイル数 MATERIAL_ENVIRONMENT_TILESX
Y方向タイル数 MATERIAL_ENVIRONMENT_TILESY
除外 MATERIAL_ENVIRONMENT_EXCLUSIVE
MATERIAL_USE_FOG
霧の色 MATERIAL_FOG_COLOR
明るさ MATERIAL_FOG_BRIGHTNESS
桐に隠れる距離 MATERIAL_FOG_DISTANCE
バンプ MATERIAL_USE_BUMP
バンプ強度 MATERIAL_BUMP_STRENGTH
MIP 減衰 MATERIAL_BUMP_MIPFALLOFF
テクスチャ MATERIAL_BUMP_SHADER ×
法線 MATERIAL_USE_NORMAL
強度 MATERIAL_NORMAL_STRENGTH
方式 MATERIAL_NORMAL_SPACE
反転X(R/赤) MATERIAL_NORMAL_REVERSEX
反転Y(G/緑) MATERIAL_NORMAL_REVERSEY
反転Z(B/青) MATERIAL_NORMAL_REVERSEZ
YとZを入れ替え(Yを上) MATERIAL_NORMAL_SWAP
テクスチャ MATERIAL_NORMAL_SHADER ×
アルファ MATERIAL_USE_ALPHA
切り抜く色 MATERIAL_ALPHA_COLOR
切り抜く範囲 MATERIAL_ALPHA_DELTA
反転 MATERIAL_ALPHA_INVERT
画像の濃度を使う MATERIAL_ALPHA_SOFT
アルファチャンネルを使う MATERIAL_ALPHA_IMAGEALPHA
プレマルチプライド MATERIAL_ALPHA_PREMULTIPLIED
テクスチャ MATERIAL_ALPHA_SHADER ×
スペキュラ MATERIAL_USE_SPECULAR
スペキュラモード MATERIAL_SPECULAR_MODE
MATERIAL_SPECULAR_WIDTH
高さ MATERIAL_SPECULAR_HEIGHT
減衰 MATERIAL_SPECULAR_FALLOFF
フラット部分 MATERIAL_SPECULAR_INNERWIDTH
スペキュラ色 MATERIAL_USE_SPECULARCOLOR
スペキュラ色 MATERIAL_SPECULAR_COLOR
明るさ MATERIAL_SPECULAR_BRIGHTNESS
テクスチャ MATERIAL_SPECULAR_SHADER ×
混合モード MATERIAL_SPECULAR_TEXTUREMIXING
強度 MATERIAL_SPECULAR_TEXTURESTRENGTH
グロー MATERIAL_USE_GLOW
グローカラー MATERIAL_GLOW_COLOR
明るさ MATERIAL_GLOW_BRIGHTNESS
内側の強度 MATERIAL_GLOW_INNERSTRENGTH
外側の強度 MATERIAL_GLOW_OUTERSTRENGTH
半径 MATERIAL_GLOW_RADIUS
ばらつき MATERIAL_GLOW_RANDOM
周波数 MATERIAL_GLOW_FREQUENCY
マテリアルの色を使用 MATERIAL_GLOW_USEMATERIALCOLOR
変位 MATERIAL_USE_DISPLACEMENT
変位量 MATERIAL_DISPLACEMENT_STRENGTH
最大高さ MATERIAL_DISPLACEMENT_HEIGHT
タイプ MATERIAL_DISPLACEMENT_TYPE
テクスチャ MATERIAL_DISPLACEMENT_SHADER ×
SPD(サブポリゴン変位) MATERIAL_DISPLACEMENT_SUBPOLY
分割数 MATERIAL_DISPLACEMENT_SUBPOLY_SUBDIVISION
形状を丸める MATERIAL_DISPLACEMENT_SUBPOLY_ROUND
角を丸める MATERIAL_DISPLACEMENT_SUBPOLY_ROUNDCONTOUR
丸めた後でマップする MATERIAL_DISPLACEMENT_SUBPOLY_HQREMAPPING
変位後にマップする MATERIAL_DISPLACEMENT_SUBPOLY_MAPRESULT
シャープエッジを維持 MATERIAL_DISPLACEMENT_SUBPOLY_KEEPEDGES
法線方向に押し出す MATERIAL_DISPLACEMENT_SUBPOLY_DISTRIBUTION
エディタ MATERIAL_PAGE_EDITOR
アニメーションプレビュ MATERIAL_ANIMATEPREVIEW
テクスチャプレビュサイズ MATERIAL_PREVIEWSIZE
エディタ表示 MATERIAL_EDITORDISPLAY
カラーを表示 MATERIAL_DISPLAY_USE_COLOR
拡散を表示 MATERIAL_DISPLAY_USE_DIFFUSION
発光を表示 MATERIAL_DISPLAY_USE_LUMINANCE
透過を表示 MATERIAL_DISPLAY_USE_TRANSPARENCY
環境を表示 MATERIAL_DISPLAY_USE_ENVIRONMENT
バンプを表示 MATERIAL_DISPLAY_USE_BUMP
法線を表示 MATERIAL_DISPLAY_USE_NORMAL
アルファを表示 MATERIAL_DISPLAY_USE_ALPHA
スペキュラを表示 MATERIAL_DISPLAY_USE_SPECULAR
スペキュラ色を表示 MATERIAL_DISPLAY_USE_SPECULARCOLOR
GIと照明モデル MATERIAL_PAGE_ILLUMINATION
GIを生成 MATERIAL_GLOBALILLUM_GENERATE
強度 MATERIAL_GLOBALILLUM_GENERATE_STRENGTH
サチュレーション MATERIAL_GLOBALILLUM_GENERATE_SATURATION
GIを受ける MATERIAL_GLOBALILLUM_RECEIVE
GIを受ける強度 MATERIAL_GLOBALILLUM_RECEIVE_STRENGTH
サチュレーション MATERIAL_GLOBALILLUM_SATURATION
GIポータル MATERIAL_GLOBALILLUM_PORTAL
サンプリングモード MATERIAL_GLOBALILLUM_SAMPLINGMODE
最大サンプル数 MATERIAL_GLOBALILLUM_MAXSAMPLES
精度 MATERIAL_GLOBALILLUM_ACCURACY
精密色 MATERIAL_GLOBALILLUM_PRECISE
自己影 MATERIAL_GLOBALILLUM_SELFSHADOW
コースティクスを生成 MATERIAL_CAUSTICS_GENERATE
強度 MATERIAL_CAUSTICS_GENERATE_STRENGTH
コースティクスを受ける MATERIAL_CAUSTICS_RECEIVE
強度 MATERIAL_CAUSTICS_RECEIVE_STRENGTH
半径 MATERIAL_CAUSTICS_SAMPLERADIUS
サンプル数 MATERIAL_CAUSTICS_SAMPLES
照明モデル MATERIAL_ILLUMINATION_MODEL
拡散の減衰 MATERIAL_ILLUMINATION_DIFFUSEFALLOFF
拡散レベル MATERIAL_ILLUMINATION_DIFFUSELEVEL
表面粗さ MATERIAL_ILLUMINATION_ROUGHNESS
適用オブジェクト MATERIAL_PAGE_ASSIGNMENT

パラメータにアクセスする為の定数は、ドラッグ&ドロップで取得できますし、「スクリプトを作成...」で自動生成されるので全てを覚える必要は無いでしょう。

では、「スクリプトを作成...」で生成されない「テクスチャ」を少し見てみましょう。

チャンネルのテクスチャが「スクリプトを作成...」で生成されなくても、他の項目でスクリプトを生成したスクリプトにドラッグ&ペーストでIDを追加し変更します。

カラーチャンネルのカラーのスクリプトを生成しました。

var i;
for (i=0; material(i); i++)
{
  doc->AddUndo(UNDO_CHANGE_SMALL,material(i));
  material(i)#MATERIAL_COLOR_COLOR=vector(0.8,0.8,0.8);
  material(i)->Update();
}

カラーチャンネルのテクスチャMATERIAL_COLOR_SHADERに変更します。
マテリアルのカラーチャンネルのテクスチャを取得し、コンソールに表示します。
取得できなければ、「nil」が表示される事でしょう。

var i;
for (i=0; material(i); i++)
{
  doc->AddUndo(UNDO_CHANGE_SMALL,material(i));
  println(material(i)#MATERIAL_COLOR_SHADER);
  material(i)->Update();
}

では、実行してください。
カラーチャンネルの「テクスチャ」がカラの状態ですと、コンソールには、

nil

と表示され、何か設定されていれば、

[Object-xxxxxxxx]

という様に表示されます。

「スクリプトを作成...」で生成できないだけで、スクリプトでテクスチャが取得できないわけではないようです。

では、カラーチャンネルのテクスチャに「カラー」シェーダを適用します。

Material_03

テクスチャにカラーシェーダを設定しました。
カラーシェーダのカラーの項目のコンテキストメニューを出し「スクリプトを作成...」を確認します。

Material_04

「スクリプトを作成...」が無効になっています。

全てのチャンネルシェーダの項目の、「スクリプトを作成...」が無効なのかはわかりませんが、確認した分のチャンネルシェーダの項目は、全て無効になっていました。

ただし、項目からのドラッグ&ドロップでIDを取得はできます。

では、「テクスチャ」の時と同じように、ドラッグ&ドロップでIDを取得していきます。
カラーチャンネルシェーダのカラーのIDは、COLORSHADER_COLORです。
先ほどの、スクリプトに追加します。

var i;
var ch_shader;
for (i=0; material(i); i++)
{
  doc->AddUndo(UNDO_CHANGE_SMALL,material(i));
  ch_shader = material(i)#MATERIAL_COLOR_SHADER;
  println(ch_shader#COLORSHADER_COLOR);
  material(i)->Update();
}

現在のカラーは、RGB(255 , 255 , 255)です。

Material_05

では、実行です。

[1.000000,1.000000,1.000000]

問題なく、取得ができました。

そうなると、なぜ各チャンネルの「テクスチャ」のコンテキストメニューの「スクリプトを作成...」で、スクリプトが生成されないのかが疑問に残るところですね…

Demo版だから、だろうか…

|

« C4D 標準パーティクルで、つい… | トップページ | 昨日も、「C4D パーティクル」で検索して、ここにたどり着いた人がいたので… »