今回は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で何か処理を行うと出力される履歴から探ることができます。