この章では、ペイント エフェクト(Paint Effects)の使用中に発生する可能性のある問題と、その解決方法について説明します。
ブラシの処理が非常に重く、1 つのブラシ ストロークでセグメントまたはポリゴン フェースの数が 1,000,000 個を超える場合、メッセージが表示され、ブラシ ストロークは描画されません。これは、表示がロックされたり、ストロークの滑らかさが損なわれたりするのを防止します。
この問題を解決するには、ブラシを単純なものに変更します。あるいは、メモリが問題ではない場合は、非表示の maxDrawSegments アトリビュートの値を大きくしてください(既定値は 1000000 です)。
maxDrawSegments をもっと大きい値(5000000 など)に変更するには、次の MEL コマンドを実行します。
setAttr strokeShape1.maxDrawSegments 5000000
ここで、strokeShape1 はストロークか、pfxHair または pfxToon ノードの名前です。
無制限の設定にするには、次のように記述します。
setAttr strokeShape1.maxDrawSegments 0
三角形の数を減らすには、チューブのセクション(Tube Sections)の値を低くします(生成 > メッシュ精度アトリビュート(Generate > Mesh Quality Attributes))。
次のいずれかを実行します。
ブラシのグローバル スケール(Global Scale)アトリビュートの値を大きくするか、シーン スケール(Scene Scale)アトリビュートの値を大きくします。
スタンプの数があまり多くならないように、ブラシのスタンプ密度(Stamp Density)アトリビュートの値を少しずつ大きくします。
チューブ > 作成(Tubes > Creation)を選択して、チューブのセグメント数を増やします。
ストロークの表示精度(Display Quality)を上げます。また、シーン ペインティング ビューであることを確認してください。
アルファ プレーンが表示されている可能性があります。ディスプレイ > すべてのチャネル(Display > All Channels)を選択して、もう一度クリアしてください。
単一のサーフェス上の結合されたエッジ(たとえば、2 分割した半分のサーフェス同士を結合したときに生成されたセンター ラインなど)をペイントすると、結合部分からストロークが漏れて裏側に飛ぶように見える場合があります。
サーフェスが UV 方向に継ぎ目がないか確認してください。
ペイント エフェクト グローバル(Paint Effects Globals)ウィンドウの設定を確認します。次回のプリセット ブラシに適用されるグローバル スケール(Global Scale)には、ペイントを行っている場所(キャンバスまたはシーン)に応じて、キャンバス スケール(Canvas Scale)またはシーン スケール(Scene Scale)の値が掛けられます。
生成> 1 つのブラシを共有(Generate > Share One Brush)を選択すると、最後にクリック(選択)されたストロークのブラシが共有されます(最後に選択されたストロークは一次選択オブジェクトとも呼ばれ、既定では緑色で強調表示されます)。
ブラシのカラーにテクスチャをマッピングしてストロークをペイントすると、実際にペイントされるテクスチャ カラーが事前に指定したテクスチャ カラーと一致しない場合があります。
ブラシのカラーにテクスチャをマップすると、テクスチャのカラー値(テクスチャ カラー 1 (Tex Color1)とテクスチャ カラー 2 (Tex Color2))にブラシのカラー値(カラー 1 (Color1))が掛けられます。実際にペイントされるテクスチャ カラーを事前に指定したテクスチャ カラーと一致させるには、ブラシのカラー値(カラー1)を白(値 1)に設定する必要があります。
Linux 環境でペイント エフェクト(Paint Effects) ストロークをペイントするときに、Wacom のスタイラスとタブレットが圧力に反応しない場合があります。
その場合は、任意のアーティザン(Artisan)ツール(選択範囲ペイント ツール(Paint Selection Tool)など)を選択し、ツール設定(Tool Settings)エディタを開いて スタイラス圧力(Stylus Pressure)セクションを展開します。スタイラス圧力(Stylus Pressure)オプションがグレー表示される場合は、Wacom タブレットが Maya 環境内で認識されていません (「tablet」という汎用名で Wacom タブレットがインストールされている可能性があります)。
Linux でこの問題を解決するには、Wacom の Web サイト (http://www.wacom.com) で Linux に関する製品サポート情報をお読みください。
新たにインストールしたタブレットがペイント エフェクト(Paint Effects)環境で圧力に反応しない場合は、
ブラシをリセットします(生成 > テンプレート ブラシのリセット(Generate > Reset Template Brush))。
プリセット ブラシを選択してストロークをペイントしたときに、そのプリセット ブラシで設定した値がストロークに適用されていないように見える場合があります。
その場合は、プリセット ブラシのブレンド(Brush Preset Blend)ウィンドウが開いている可能性があります。このウィンドウが開いていると、ブレンドの設定に基づき、選択したプリセット ブラシのシェーディングとシェイプの値がテンプレート ブラシの値とブレンドされます。
このような状況を避けるには、事前にプリセット ブラシのブレンドのオン/オフを切り替えるためのホットキーを定義しておきます(BrushPresetBlend、BrushPresetBlendShape、BrushPresetReplaceShading の各アクションにキーを割り当てます)。
ブレンドを行うときは、プリセット ブラシのブレンド(Brush Preset blend)ウィンドウ内でシェーディングとシェイプのブレンド割合を設定した後、ウィンドウを閉じます。次に最初のブラシ(テンプレート ブラシ)を選択し、ブレンディング用のホットキーを押した後、ブレンドするプリセット ブラシを選択します。ホットキーを押している間は、プリセット ブラシを選択するたびに、そのプリセット ブラシの値がテンプレート ブラシの値とブレンドされます。ブレンドを止めるには、ホットキーを放します。
チューブの成長とテクスチャのフローを同時にアニメートする(たとえば、テクスチャが適用された木の成長をアニメートする)ときに、テクスチャがチューブの成長よりも速く流れるように見える場合があります。
これを修正するには、ストロークを選択し、ペイント エフェクト ブラシ設定(Paint Effects Brush Settings)ウィンドウのフロー アニメーション(Flow Animation)セクションでテクスチャ フロー(Texture Flow)をオンにします。
開始時間と終了時間(End Time)は秒単位で計測されます。したがって、開始時間(Start Time)を 60 に設定した場合、時間(Time)の計測単位は 24 fps (ウィンドウ > 設定/プリファレンス > プリファレンス(Windows > Settings/Preferences > Preferences)と選択してから設定(Settings)をクリック)で、アニメーションは 1440 フレームまで開始されません。
チューブを最初に表示するフレーム番号が分かっている場合は、そのフレーム番号を時間(Time)単位(1 秒あたりのフレーム数)で割ると、開始時間(秒) (Start time (seconds)) ボックスに入力する値が決まります。たとえば、時間(Time)単位が NTSC (30 fps)であるときに、フレーム 60 でチューブを最初に表示する場合は、開始時間(秒) (Start time (seconds)) を 2 秒(60÷30)に設定します。
フィールド内でエクスプレッションを作成すると、このような計算を実行することができます。等号(=)の後に計算式を入力してください。上記の例では、次のように入力します。
=60.0/30
時間の値は浮動小数点数(小数点付きの 10 進数)で入力することに注意してください。
詳細については、ペイント エフェクト(Paint Effects)のストロークがシーンにある他のオブジェクトに対して間違った順序でレンダーされるセクションを参照してください。
キャンバスで、自動保存(Auto Save)がオンになっているのを確認します。また、Windows を使用している場合は、シェーダのアトリビュート エディタ内でハードウェア テクスチャリング(Hardware Texturing)のテクスチャ解像度(Texture resolution)を既定(Default)以外の値に設定する必要があります。
シーン ペインティング ビュー内ではアルファのプレーンが真っ白に表示されます。シーン ペインティング ビュー内でアルファを表示するには、レンダー > 現在のフレームのレンダー(Render > Render Current Frame)を選択してシーンをレンダーした後、レンダー ビュー(Render View)ウィンドウ内でディスプレイ > アルファ チャネル(Display > Alpha Channel)を選択します。
深度でペイント(Paint at Depth)をオフにします(ペイント エフェクト > ペイント エフェクト ツール(Paint Effects > Paint Effects Tool) > )。
円錐畑など、同じブラシで作成したストロークが多数あるシーンでは、レンダーに非常に時間がかかります。
セグメント(Segments)、リーフのセグメント(Leaf Segments)、花びらセグメント(Petal Segments)を減らしてブラシを簡素化してみてください。
また、チューブの代わりにブラシのテクスチャを使用してディテールを作るのもお勧めです。たとえば、円錐畑をペイントする場合、1 つのチューブにぴったりとフィットする 1 本の円錐の茎の高くて細いイメージをレンダーして、チューブが 1 本あるブラシのテクスチャとして使用します (このテクニックの例として、pineTextured ブラシを見てください)。このメソッドはクローズアップ ショット以外の場合に、茎を表現するのに使えます。チューブのくねり具合(wiggle)をランダムに表現して、茎の外観にバリエーションを出します。また、テクスチャやブラシの組み合わせを変えても効果的です。
ペイント エフェクト(Paint Effects)は、スキャンライン レンダラによって生成された深度バッファを使用してオクルージョンを決定します。レンダリングされたエフェクトで、複数のサーフェスが単一のピクセル内にあるところ(透明、アンチエイリアシングされたエッジ、モーション ブラー、ライト フォグおよびボリューム密度のような)では、これにより 1 つのピクセルに、1 つの深度値および 1 つの色があるようにペイント結果を合成しようとして問題が起こります。
カメラの深度タイプ(Depth Type)オプション(アトリビュート エディタ(Attribute Editor)の出力設定(Output Settings)セクション)を使用して、レンダラが 1 つのピクセル内にある複数の深度値を 1 つの深度値に減らして可視にするかを決定する方法に影響を与えることができます。
最も遠い可視深度(Furthest Visible Depth)では、これらの要素の後ろにあるペイント エフェクト(Paint Effects)ストロークは、最前面にあるかのように突き抜けます。
最も近い可視深度(Closest Visible Depth)では、ピクセル内のカメラに最も近いサーフェスが取られます。したがって、透明なサーフェスやモーション ブラーによる筋があると、後ろのペイント エフェクト(Paint Effects) ストロークがすべて不明瞭になります。しきい値(Threshold)の値により、深度バッファにサーフェスが表示されなくなるところの透明度が決まります。
レンダー カメラの出力設定(Output Settings)で、深度タイプ(Depth Type)アトリビュートを最も近い可視深度(Closest Visible Depth)に設定し、しきい値(Threshold)を調整します。
ペイント エフェクト(Paint Effects)オーバーサンプル(Oversample)をオンにしないと、メッシュ ブラシのエッジが階段状(エイリアス)になります(レンダー設定(Render Settings)ウィンドウの Maya ソフトウェア(Maya Software)タブにあるペイント エフェクト レンダリング オプション( Paint Effects Rendering Options)セクション)。
シーン ビュー内で Maya が描画するセグメントまたはポリゴン フェースの最大数は既定で 1000000 個です。この値は、maxDrawSegments という名前の非表示アトリビュートによって制御されます。maxDrawSegments では、最大幅に達すると、ストロークが描画を停止します。ストロークはシェイプを変更せず、未完成の状態を維持します。(ただし、バッチ レンダーは完了します)。ストロークの maxDrawSegments を 0 に設定すると、ストロークは無制限になります。すなわち、ストロークが完成するかメモリ不足になるまで Maya は描画を続けます。
この値を設定すると、非常に処理が重いブラシによりインタラクティブな表示がロックされてしまう現象を防止できます。この制限を超えると、次の警告メッセージが表示されます。
<strokeName> was only partially drawn.For more information see “maxDrawSegments” in the Maya Help.
完全なストロークを表示する必要があり、十分なメモリがある場合は、ストロークの maxDrawSegments アトリビュートに対し setAttr を実行します。例:
setAttr strokeShape1.maxDrawSegments 10000000
無制限の設定にするには、次のように記述します。
setAttr strokeShape1.maxDrawSegments 0
ここで、strokeShape1 はストロークか、pfxHair または pfxToon ノードの名前です。
この setAttr を実行するのは、既定の 1000000 個より多くのポリゴンを単一のストロークでインタラクティブに表示する場合だけです。
三角形の数を減らすには、チューブのセクション(Tube Sections)の値を低くします (生成 > メッシュ精度アトリビュート(Generate > Mesh Quality Attributes))