【Maya Pencil+4】スムーズメッシュプレビュー時にハードエッジに線を出す

Tech

はじめに

Maya のスムーズメッシュプレビュー(3番キー表示)は、デフォルトでは Pencil+4 のラインに反映されません。
さらに、反映させる設定をしても今度はハードエッジが丸まり、せっかくの輪郭線が消えてしまいます。
この記事では、下の画像のように、スムーズメッシュプレビュー時でもハードエッジ部分にラインを残す設定方法を紹介します。

動作確認済みバージョン: Maya 2024

結論

スムーズメッシュプレビュー時でもハードエッジに線を残すには、次の3手順を行います。
以降の項で詳しく説明します。

  1. PencilRenderSetting ノードを追加し、ラインをスムーズ結果に反映させる
  2. メッシュの Subdivision Method を Maya Catmull-Clark に変更する
  3. propagateEdgeHardness をオンにしてハードエッジを伝播させる
    (オブジェクトが多いときは記事末のスクリプトで一括設定できます)

Pencil+4 のラインをスムーズメッシュプレビューに反映させる

Maya の Pencil+4 は、設定でラインの描画対象を選べます。
Outline にチェックを入れるとアウトラインに、Smoothing Boundary にチェックを入れるとハードエッジにラインが描画されます。

Smoothing Boundary にチェックを入れる

しかし、そのままだとスムーズメッシュプレビューが反映されません。

Pencil+4 > Add Render Settings Node で、PencilRenderSetting ノード を作成できます。
デフォルトで Enable smooth mesh preview conversion がオンになっています。

レンダリングしてみると、スムーズメッシュプレビューに合わせて角の丸い線になります。

PencilRenderSettingノード作成後のレンダリング結果

(残念ながら、ビューポートには反映できません……。)

ビューポートには反映されない

これで Pencil+4 のラインにスムーズメッシュプレビューを反映できました。
ただし、スムーズが適用されると角が丸まり、ハードエッジに線が表示されなくなってしまいます。

ハードエッジ伝播を設定する

線を適用したメッシュを選択し、アトリビュートエディタ で Use Global のチェックを外し、Subdivision Method を Maya Catmull-Clark に変更します。

Subdivision Method を Maya Catmull-Clark に変更

初期設定の Subdivision Method である OpenSubdiv Catmull-Clark は、Maya Catmull-Clark の改良版です。
パフォーマンスが落ちる可能性がありますが、見た目はほとんど変わりません。
このあとハードエッジ伝播を行うために Maya Catmull-Clark に設定します。

少し下の方にある、Maya Catmull-Clark Controls タブの propagateEdgeHardness にチェックを入れます。
これにより、ハードエッジ設定がスムーズメッシュ後のエッジにも反映されます。

propagateEdgeHardness にチェック

複数のオブジェクトをまとめて設定する

オブジェクト一つ一つに上の設定を反映するのは大変です。
Maya 標準機能の Attribute Spread Sheet を使うことも可能ですが、以下のスクリプトを実行すれば、選択オブジェクトに一括設定できます。

import maya.cmds as cmds

for sel in cmds.ls(sl=1):
    cmds.setAttr(f'{sel}.useGlobalSmoothDrawType', False)
    cmds.setAttr(f'{sel}.smoothDrawType', 0)
    cmds.setAttr(f'{sel}.propagateEdgeHardness', 1)

3つの setAttr は順に、Use Global のチェックを外す/Subdivision Method を Maya Catmull-Clark に設定する/ハードエッジの伝播をオンにする、という処理です。

これらのアトリビュートはメッシュ shape がもつものですが、transform ノードを選択して実行しても正しく適用されます。

まとめ

この記事では、Pencil+4 のラインをスムーズメッシュプレビューに追従させ、さらにハードエッジの線も残す手順を紹介しました。ポイントは次の3つです。

  • PencilRenderSetting ノードを追加してラインをスムーズ結果に反映させる
  • Subdivision Method を Maya Catmull-Clark にする
  • propagateEdgeHardness をオンにしてハードエッジを伝播させる

オブジェクトが多いときは、最後のスクリプトで一括設定すると楽です。

コメント

タイトルとURLをコピーしました