夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

MayaでPythonを使用してビューポート上の設定をリセットしてテクスチャを表示する

本日はMaya,Python枠です。

筆者は大学で3DCGについて指導に当たっていますが、Mayaに限らずソフトウェアのUIや設定がデフォルトから変わってしまっている状態の学生さんがよくいます。

 彼らが意図してUIやビューポートをカスタマイズしているのであれば問題がないのですが、初学者の場合は特に意図せずPCの解像度などの設定や操作ミスなどでUIやビューポートが乱れてしまっています。

 また、よくあることとしてマテリアルにテクスチャを適応したのに表示されないというトラブルもあります。

 本来であればワークスペースのリセットなどで切り替えることや、適切なビューポート設定を行うことで解消しますが、初学者にはハードルが高いのが現状です。

 今回はこうした初学者向けのよくあるトラブルをPythonで解消できないか挑戦していきます。

テクスチャを使用しているがビュポート上で規定のマテリアルが使用され描画されない例

〇環境

・Windows11PC

・Maya2025

〇UIパネルをリセットする

まずはビューポートのリセットです。

これはアトリビュートエディタやアウトライナーなどリセットしたいパネルをリストにして開きなおすことでリセットしています。

またテクスチャの表示に関してはcmds.moduleEditor(panel,‘パラメータ`)を使用して明示的に切り替えています。

        cmds.modelEditor(panel, edit=True, useDefaultMaterial=False)

これによってデフォルトのマテリアルを使用を無効化し、ビューポート上のテクスチャ設定をオンにしています。

〇コード

import maya.cmds as cmds

def reset_viewport_and_ui():
    # 1. UIパネルのリセット
    panels = ['AttributeEditor', 'Outliner', 'ChannelBoxLayerEditor', 'ToolSettings']
    for panel in panels:
        if cmds.workspaceControl(panel, exists=True):
            cmds.workspaceControl(panel, edit=True, close=True)
            cmds.workspaceControl(panel, edit=True, restore=True)
            cmds.workspaceControl(panel, edit=True, visible=True)
    
    # 2. ビューポート設定のリセット
    viewport_panels = cmds.getPanel(type="modelPanel")
    for panel in viewport_panels:
        # ライトの設定をデフォルトに(自動ライト)
        cmds.modelEditor(panel, edit=True, displayLights="default")
        
        # テクスチャ表示を有効にする
        cmds.modelEditor(panel, edit=True, displayTextures=True)
        
        # デフォルトマテリアルの使用を無効にする
        cmds.modelEditor(panel, edit=True, useDefaultMaterial=False)

    # 3. シーン内のライトがない場合は自動ライトを使用
    if not cmds.ls(type="light"):
        for panel in viewport_panels:
            cmds.modelEditor(panel, edit=True, displayLights="default")

    # レイアウトの再描画
    cmds.refresh()

# 実行
reset_viewport_and_ui()

スクリプティングエディタで実行することでテクスチャが張られた見た目のビューポートにすることができます。

本日は以上です。