PythonのDLLインポート機能を利用してSpringheadをPythonにロードして用いることができます.
Springheadの機能はSpr.pydというDLLファイルにまとめられています.Spr.pydは,url textbin32.pydまたはurl textbin64.pydとしてSpringheadリリースに含まれていますが,url textsrc.slnをビルドして生成することもできます.
Spr.pyd は,Pythonのインストールフォルダ内にあるDLLsフォルダにコピーして用います.
importでロードします.
Python 3.2.2 [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import Spr
Springheadアプリケーションに組み込む場合と違い,ロード時点では何のオブジェクトも生成されていません.まずPHSdkを生成し,次にPHSceneを生成することで,PHSolidが生成できるようになります.
>>> phSdk = Spr.PHSdk.CreateSdk() >>> phScene = phSdk.CreateScene(Spr.PHSceneDesc()) >>> solid0 = phScene.CreateSolid(Spr.PHSolidDesc()) >>> for i in range(0,10): ... print(solid0.GetPose().getPos()) ... phScene.Step() ... Vec3d(0.000,0.000,0.000) Vec3d(0.000,-0.000,0.000) Vec3d(0.000,-0.001,0.000) ...(中略)... Vec3d(0.000,-0.011,0.000) >>>
APIの呼び出し方はSpringheadアプリケーション組み込みの場合と変わりません. ただし,この状態ではグラフィクス表示が使えないため出力はテキストやファイルに限られます. グラフィクス表示を使うためには,pyopengl等の描画ライブラリと組み合わせるコードを書く必要があります.
Spr.pydの応用例の一つにSprBlenderがあります.
SprBlenderは,3DCGソフトBlenderにロードすることでSpringheadを使用可能にする拡張機能で,Springhead開発チームによって公式に開発されています.
BlenderはUI機能の大半がPythonで記述されており,公開されたPython APIを通じて各種の機能を利用することができます. そこで,Blender上のPythonでSpr.pydをロードし,Blender上のCGオブジェクトをSpringheadでシミュレーションできるように書かれたPythonスクリプトがSprBlenderです.
詳しくはWebサイト1を参照してください.
Footnotes