【Maya】PySideで入力されたキーを取得して表示する

PySideでキー入力イベントを受けるためには、以下のようにkeyPressEventを実装します。

    def keyPressEvent(self, event):
        if event.isAutoRepeat():
            return

        pressed = event.key()
        print(pressed == QtCore.Qt.Key_Left)

こんな感じで押されたキーが何であるか判定するだけならこれでいいんですけど、ここでいうところのpressed変数は人が理解するには難しい値が返ってきます。

続きを読む

【Unity】ARKitでセッション情報を破棄する

UnityでARKitを使用する際、特に凝ったことをしないのであればHelpersにあるUnityARCameraManager.csによってセッションの管理をする形になるかと思います。
ただ、このコンポーネントを使用すると、たとえばシーン遷移によって再度トラッキングをし直したいというとき、前のセッションの情報が残ってしまいます。

というわけで、これの解決法を調べてみます。

続きを読む

【Maya】Maya2018でconfirmDialog+QFileDialogが動かない話

Maya2018でcmds.confirmDialogの結果を受け取った直後にQFileDialogでファイラを開いたときにファイラがすぐに閉じてしまうという現象に遭遇しまして。
具体的には以下のようなコード。

from Qt import QtWidgets,QtCore
from maya import cmds

def main():
    res = cmds.confirmDialog(title="Warning",
                         message=u"ディレクトリを指定してください。",
                         button=["Yes", "No"],
                         defaultButton="Yes",
                         cancelButton="No",
                         dismissString="No")
    if res != "Yes":
        return

    select_directory()
    return
        
def select_directory():
    value = QtWidgets.QFileDialog.getExistingDirectory(None,options=QtWidgets.QFileDialog.DirectoryOnly|QtWidgets.QFileDialog.ShowDirsOnly)
    if value:
        print("ok",value)
    else:
        print("ng")
    return

main()

このconfirmDialogを以下のようにMessageBoxに変えても同じ。

    res = QtWidgets.QMessageBox.warning(None, "Warning", u"ディレクトリを指定してください。",QtWidgets.QMessageBox.Ok | QtWidgets.QMessageBox.No,QtWidgets.QMessageBox.Ok)
    if res != QtWidgets.QMessageBox.Ok:
        return

というわけでselect_directoryメソッドを以下のように変更evalDeferredで実行してやると問題が解消しました。

cmds.evalDeferred(select_directory)


解せぬ…。

ちなみに以下のようにQFileDialog.getExistingDirectoryのオプションにDontUseNativeDialogを追加してやっても解消します。

value = QtWidgets.QFileDialog.getExistingDirectory(None,options=QtWidgets.QFileDialog.DirectoryOnly|QtWidgets.QFileDialog.ShowDirsOnly|QtWidgets.QFileDialog.DontUseNativeDialog)

が、これだと設定のDialogStyleの値に関係なくMayaのファイラが表示されるのでちょっといまいちな感じです。

【Unity】FBX ExporterでMayaと連携してみる

Unity2017.2がリリースされ、あわせてねんがん(?)のFBX Exporterがリリースされました。βですけど。

ざっくり言うと、Unityで適当な仮オブジェクトを作成して作業したのち、Mayaと連携してUnityのシーンで特に作業をすることなく、仮オブジェクトを別のモデルに差し替えることができるようなアセットです。

詳細は以下。
blogs.unity3d.com
www.youtube.com

というわけで早速いじってみます。

  • FBX Exporter(beta)を導入する
  • UnityでExportしてみる
  • MayaでExportしてみる
  • Unityに戻って確認してみる
  • シーンとFBXを関連付ける方法
  • 個人的につらいと思ったところ
  • FBXの書き出し設定を変える方法
  • 感想
  • おまけ
    • Mayaで自前のスクリプトからFBX Exporterのコマンドを呼ぶ
    • Install Unity Integrationがやってることを調べる
続きを読む

【Maya】FBXの再生範囲をチェックする

保存済みのFBXをmayapyで開いて色々いじったのち、再度FBXで書き出すようなバッチを作る機会がありまして。

FBXをオープンしたときはシーンをオープンしたときと違って、再生範囲が復元されません。
つまり、デフォルトの1-120の範囲になり、この状態で書き出すとFBXにおけるアニメーションの再生範囲も1-120になってしまいます。

続きを読む

スポンサーリンク