[Omniverse] Omniverse Codeでomni.kit.commandsの作法を調べる

今回はOmniverseの開発に関する内容になります。
OmniverseのPrimの移動や削除などの操作は、内部的にはomni.kit.commandsを使用して行われているように見えます。

「omni.kit.commands」は、特定のコマンドを実行する機能です。
例えば、指定のパスのPrimを削除する場合は以下をPythonで実行します。

import omni.kit.commands

targetPath = "/World/xxx"
omni.kit.commands.execute("DeletePrims", paths=[targetPath])

「omni.kit.commands.execute」の第一引数は実行するコマンドです。
そのコマンドにより第二引数以降で指定できる項目も変わります。

参考までに、GitHubにコマンドの実行の例を挙げていってます。
https://github.com/ft-lab/omniverse_sample_scripts/tree/main/Operation/CommandsExecute

では、ここに何を指定すればよいのかというのはこれといったドキュメントがありません。
以下のドキュメントが近いでしょうか。
https://docs.omniverse.nvidia.com/py/kit/source/extensions/omni.kit.commands/docs/index.html

Omniverse Codeでomni.kit.commandsの作法を調べる

Omniverse Code 2022.1.0は、主に開発の機能を学習できるOmniverseアプリです。
Kit 103が使用されており、いくつか新機能も確認できます。

「Commands」ウィンドウで行った処理のコマンドが表示されます。

球のMeshを作成

球のMeshを作成した場合は以下のように追加されました。

この場合は、

CreateMeshPrimWithDefaultXform
  prim_type=Sphere

と表示されました。
このときの「CreateMeshPrimWithDefaultXform」がコマンド名、
「prim_type=Sphere」が引数になります。

Pythonで以下を実行したことになります。

import omni.kit.commands

omni.kit.commands.execute("CreateMeshPrimWithDefaultXform", prim_type="Sphere")

選択Primを削除

選択Primを削除した場合は以下のように表示されました。

DeletePrims
  paths=['/World/Sphere']

Pythonで以下を実行したことになります。

import omni.kit.commands

omni.kit.commands.execute("DeletePrims", paths=['/World/Sphere'])

Primをドラッグして別のPrimに移動

"/World/Sphere"のPrimを"/World/Xform"にドラッグして移動させた場合。

MovePrim
  path_from=/World/Sphere
  path_to=/World/Xform/Sphere

Pythonで以下を実行したことになります。

import omni.kit.commands

omni.kit.commands.execute("MovePrim", path_from="/World/Sphere", path_to="/World/Xform/Sphere")

Commandsウィンドウの選択内容をクリップボードにコピー

Commandsウィンドウで対象のコマンドを選択し
ウィンドウ下の「Selected commands」ボタンを押すと、クリップボードに選択コマンドのコードがテキストで格納されます。

上記の場合は、以下のようなコードがクリップボードに格納されました。

import omni.kit.commands

omni.kit.commands.execute('MovePrim',
  path_from='/World/Sphere',
  path_to='/World/Xform/Sphere')

このように、omni.kit.commandsのコマンドについては
Omniverse Codeで何か処理を行うと出力される履歴から探ることができます。