これは、Qt for Python に基づく、新しい VRED Python API v 2 のドキュメントです。VRED Python API v1 のドキュメントにはこちらからアクセスできます。
新しいインタフェースの一部の関数は、パラメータまたは戻り値の型に Qt タイプを使用します。これらのタイプは Python ネームスペースに自動的に読み込まれるため、PySide2 モジュールから読み込まなくても使用できます。
その他の Qt クラスは、次のように読み込むことができます。
from PySide2.QtCore import QLine
from PySide2.QtGui import QBrush
line = QLine(0,0,100,100)
brush = QBrush()
新しいインタフェースのシーン オブジェクトは vrdObject から派生します。これらのオブジェクトのクラス名は、vrd で始まります (例: ノード オブジェクトの場合は vrdNode)。
オブジェクトにはプロパティを照会および変更する関数が多数ありますが、主なエントリ ポイントとして、サービスを通じて使用するオブジェクトを取得します。
サービスを使用して、既存のシーン オブジェクトの検索、新しいオブジェクトの作成、オブジェクトの削除、関連する VRED モジュールで使用できるその他の機能へのアクセスを行うことができます。
注釈: vrAnnotationService
カメラ エディタ: vrCameraService
ライト エディタ: vrLightService
参照エディタ: vrReferenceService
シーンプレート エディタ: vrSceneplateService
コラボレーション: vrSessionService
バーチャル リアリティ: vrDeviceService、vrImmersiveInteractionService、vrImmersiveUiService、vrHMDService
コンストレイント: vrConstraintService
ファイルのロードと保存: vrFileIOService
サービス クラスと同じ名前を持つオブジェクトを通じてサービス関数を呼び出します。 次に例を示します。
camNode = vrCameraService.createCamera("new camera")
VRED は Python 3 に移行したため、サードパーティ モジュールを簡単にインストールできます。Python のインストール全体は、lib/python のインストール フォルダ内にあります。pip を使用して、公式の Python リポジトリからインストールできます。「numpy」をインストールする場合は、次の手順を実行します。
python.exe -m pip install numpy
pip は Python とは別に開発されています。pip を新しいバージョンにアップグレードする場合は、次の手順を実行します。
python.exe -m pip install --upgrade pip
追加された pip が動作を停止した場合は、Python のブストラップ メカニズムを使用して復元できます。
python.exe -m ensurepip
また、モジュールを Lib/site-packages に手動でインストールすることもできます。Python API を使用して独自の C または C++ 拡張機能をコンパイルする場合は、必ず互換性のあるコンパイラを使用してください。オートデスクは、公式の Python 3 バイナリを再コンパイルしないで、VRED に使用しています。そのため、VRED 付属のディストリビューションと同じバージョン番号を持つ Python ディストリビューションを python.org から取得してコンパイルすると、機能します。
このインタフェースは、Python または Web インタフェースを介して使用できます。アクセスするには、JavaScript を使用します。関数の呼び出しは非同期で実行されます。次の例では、このような呼び出しが Web ページからどのように見えるのかを示します。すべてのパラメータと戻り値のタイプは、JavaScript タイプにマッピングされます。たとえば、QVector3D と QMatrix4x4 は 3 個または 16 個の数値からなる配列にマッピングされます。
<script type="module">
import {api} from '/api.js';
// reacting on a signal
api.vrClusterService.started.connect(() => {console.log('Started')});
// calling a function
api.vrClusterService.start();
// changing the position of the camera
api.vrNodeService.findNode("Perspective")
.then((node) => node.setTranslation([10,20,30]));
</script>>
API v と API v の両方の関数を同じスクリプトで使用できます。
API v1 では、ノード オブジェクトのタイプは vrNodePtr です。vrNodePtr をパラメータとして取得する API v1 の関数で vrdNode オブジェクトを使用できます。その逆も同様で、vrNode をパラメータとして取得する API v2 の関数で vrNodePtr オブジェクトを使用することもできます。これらは自動的に変換されます。
vrdNode を明示的に vrNodePtr オブジェクトに変換するには:
oldNodePtr = toNode(newVRDObject.getObjectId())
vrNodePtr を vrdNode に変換することもできます。
newVRDObject = vrNodeService.getNodeFromId(oldNodePtr.getID())
このドキュメントでシーングラフを参照する方法の概要については、「VRED のシーングラフ」を参照してください。
VRED Python API のさまざまな機能を紹介するサンプル スクリプトのコレクションです。
インデックス
検索ページ
VRED Python API v2 のコマンドのリストです。