2D オーバーレイを表示する

ムーバーレイ Python モジュールを使用すると、Maya の UI 上に 2D オーバーレイを表示できます。これを行うと、次の場合に便利です。他の場合にも役立つ可能性もあります。
Maya のオーバーレイは Qt を使用して作成され、イメージ、アニメーションの GIF、スタイル、テーブルなど、ほとんどの HTML タグをサポートします。使用可能な機能について、状況に応じた詳細な例を確認するには、Python のスクリプト エディタ(Script Editor)で次のコードを実行します。
import moverlay
moverlay.mayaDemo.demoOverlays()
ムーバーレイは、インストール フォルダ内の Python/Lib/site-packages にあります。インタラクティブ チュートリアルのデモまたはインタラクティブな基本チュートリアルに用意されているスクリプトを表示して、2D オーバーレイ コードと使用方法の他の例を確認することもできます。

オーバーレイの例

次の 3 つの種類の 2D オーバーレイが用意されています。
オーバーレイ タイプ Hello World のサンプル 結果

進行ダイアログ:

2 つのボタンがあるダイアログ ウィンドウです。チュートリアルのコントローラとして使用します。

import moverlay as mo
from PySide2.QtCore import QPoint

def pressNext():
    print("Next was pressed")

def pressReset():
    print("Reset was pressed")
    
def pressClosed(dialog):
    manager.controller.deleteLater()

#create manager object and assign its controller
manager = mo.maya.overlayManager()
manager.controller = mo.progressDialog.ProgressDialog(manager.getMainWindow())

#Assign title and body text
manager.controller.setTitle("Example Dialog")
manager.controller.setBodyText("Hello World")

#Create buttons and attach them to appropriate procedures when clicked
manager.controller.setupButton(0, "Reset", pressReset)
manager.controller.setupButton(1, "Next", pressNext)
manager.controller.setCloseCallback(pressClosed)

#Create a progress bar with 10 steps
manager.controller.progressBar().resetSteps(1, 10)

#Re-size and position the controller
manager.controller.theDialog().resize(mo.utils.DPIScale(180), mo.utils.DPIScale(250))
manager.controller.theDialog().moveToScreenPos(QPoint(0, 0))

#Display the controller
manager.controller.showAndRaise()

HIG ダイアログ:

ボタンのないダイアログ ウィンドウです。ヒントや図を表示します。

import moverlay as mo
from PySide2.QtCore import QPoint
    
def pressClosed(dialog):
    dialog.deleteLater()

#Create manager and dialog object
manager = mo.maya.overlayManager()
dialog = mo.higDialog.HIGDialog(manager.getMainWindow())

#Assign body text
label = dialog.setAsLabel('<h1>Example Dialog</h1><p>Hello World</p>')

#Assign close procedure
dialog.setCloseCallback(pressClosed)

#Re-size and position the dialog
dialog.theDialog().resize(mo.utils.DPIScale(180), mo.utils.DPIScale(250))
dialog.theDialog().moveToScreenPos(QPoint(0, 0))
dialog.theDialog().setFixedWidth(250)

dialog.showAndRaise()

バブル:

非対話型の、文字どおりバブルです。指定された位置に表示されます。

注: オーバーレイを削除する場合は、overlayManager の deleteAll() プロシージャを呼び出します。
import moverlay as mo
from PySide2.QtCore import QPoint
from PySide2.QtCore import QSize
from PySide2.QtGui import QColor

#Create manager and overlay definition
manager = mo.maya.overlayManager()
od = mo.overlayDef.OverlayDef(QSize(300, 100))

#Position relative to screen center and apply the style and color
od.style = mo.enums.OverlayStyle.SpeechBubble
od.attachment = mo.enums.RelTo.Center
od.bgColor = QColor(217, 217, 217, 255)

#Create this overlay
overlay = manage.createOverlay(od)

#Assign body text
label=overlay.setAsLabel("""<h2>Hello World</h2><p style="color: #3C3C3C; font-size: 16pt; font-weight: normal; 
font-style: normal; font-family: Artifakt Element">Lorem ipsum dolor sit amet, consectetur adipiscing elit, 
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>""")

#Add a word bubble tail
overlay.addSpeechBubbleTail(mo.enums.Direction.Top, 0.25)

#Display the overlay bubble
manager.showAll()

関連項目