PythonへのSpringhead組込み

PythonのDLLインポート機能を利用してSpringheadをPythonにロードして用いることができます.

Springheadの機能はSpr.pydというDLLファイルにまとめられています.Spr.pydは,url textbin32.pydまたはurl textbin64.pydとしてSpringheadリリースに含まれていますが,url textsrc.slnをビルドして生成することもできます.

Spr.pydの使い方

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があります.

\includegraphics[width=0.5\hsize ]{fig/epsprblender.eps}

SprBlenderは,3DCGソフトBlenderにロードすることでSpringheadを使用可能にする拡張機能で,Springhead開発チームによって公式に開発されています.

BlenderはUI機能の大半がPythonで記述されており,公開されたPython APIを通じて各種の機能を利用することができます. そこで,Blender上のPythonでSpr.pydをロードし,Blender上のCGオブジェクトをSpringheadでシミュレーションできるように書かれたPythonスクリプトがSprBlenderです.

詳しくはWebサイト1を参照してください.

Footnotes

  1. http://springhead.info/wiki/SprBlender