使用方法
インストール
Windows
以下の4つの手順が必要です
Ubuntu
Ogre3D(1.7.3以上)、CEGUI(0.8.0以上)、boost-python、OpenRTM-aist(1.1.0)、OpenRTM-aist-Python(1.0以上)、Qt(5.0以上)をインストールしてください。
また、Open Dynamics Engineをビルドして適当な場所に置いてください。
あと、開発環境としてCodeBlocksをインストールします。
OgreRTCフォルダのOgreRTC.cbpを開いて、Build OptionからODEの場所等を設定し直してビルドします。
最後にWindowsと同じようにOgre3DのMediaとCEGUIのdatafilesをコピーします。
レンダリングシステムの設定
releaseフォルダの中のOgreRTC.exeを起動します。すると、以下のOgre3Dのレンダリングに関する設定を行うウインドウがでてきます。

どの設定で動作するかはマシンによって異なるので各自で設定してください。
※OSによってはplugins.cfgの編集が必要になる場合があります。
Ubuntuの場合は、
#Plugin=RenderSystem_Direct3D9
#Plugin=RenderSystem_Direct3D11
のようにDirect3Dのレンダリングシステムをコメントアウトしてください。
またWindowsでもDirect3D 9、もしくは11がインストールされていない場合があるので無い方はコメントアウトしてください。
ちなみに画面サイズも設定できますが本ソフトウェアでは1024×768で固定になっているので意味はありません。
起動すると以下のウインドウが表示されます。

まずはGUIによる操作の説明を行います。
右側のタブによって3Dモデルの操作等ができます。
以下の種類のタブがあります。
ボディ
ボーン
カメラ
CEGUI
CEGUIのテキスト
CEGUIの画像
パーティクル
サウンド
画面分割
アニメーション
光源
ノード
物理シミュレーション(設定)
物理シミュレーション(ボディ)
物理シミュレーション(ジョイント)
その他
それでは各タブの操作方法を説明します。
ボディタブ

ボディを作成するには、
だけで作成できます。独自に作成したモデルを使用する方法は後述します。
あとは位置、姿勢、拡大率を適当に設定してください。
あらかじめモデルにスケルタルアニメーションが設定してある場合、名前を入力して設定ボタンを押して時間のスピンボックスを操作するとアニメーションを更新できます。
マテリアルを設定したい場合はマテリアルを選択して設定ボタンを押してください。
ボーンタブ

現在、GUIでのボーンの操作は未実装です。
カメラタブ

このGUIではカメラの注視点の位置、カメラの姿勢、注視点までの距離で設定します。
光源は追加することもできますが、初期の状態で1つ生成しており、このタブではその光源の位置を操作できます。
CEGUI

GUIを作成するには、
とします。
現在作成できるGUIは以下のものがあります。
CEGUIのテキスト

GUIのスタティックテキスト、エディットボックスのテキストを変更できます。
GUIを選択してテキストを適当に入力した後、作成ボタンを押せば反映されます。
CEGUIの画像

スタティックイメージに画像を張り付けるには以下の手順が必要です。
パーティクル

パーティクルは以下の順で作成できます。
サウンド

GUIでのサウンドの操作は未実装です。
画面分割

画面を分割するサブウインドウは以下の手順で作成できます。
カメラは注視点の位置、カメラの姿勢、注視点までの距離で操作します。
アニメーション

アニメーションの作成は以下の手順で行います。
あとはキーフレームに位置、姿勢を設定します。
光源

光源の作成は以下の手順で行います。
ノード

3Dモデル、パーティクル、光源、アニメーションはそれぞれ個別のノードと関連付けされています。そこで他のオブジェクトのノードにアタッチすることで位置、姿勢、拡大率を同じにできます。
ノードをアタッチする手順は以下の通りです。
他のノードとアタッチしているオブジェクトを切り離したい場合は、オブジェクトの名前に切り離したいオブジェクトを選択してデタッチボタンを押してください。
物理シミュレーション(設定)

シミュレーションを開始するには開始ボタン、停止するには停止ボタン、初期状態に戻すには初期化ボタンを押します。CFM、ERPはODE固有のパラメータでジョイントの拘束力に関連するパラメータです。
拡大率はODEのシミュレーションの大きさと3Dモデルの大きさが違う場合に設定してください。作成した全てのボディに反映されます。
物理シミュレーション(ボディ)

ボディを作成する手順は以下の通りです。
現在作成できるボディの種類は以下の通りです。
オフセット、拡大率は3Dモデルとサイズが違う場合に変更してください。
物理シミュレーション(ジョイント)

ジョイントの作成手順は以下の通りです。
現在作成できるジョイントは以下の通りです。
その他

スカイボックスは以下の手順で設定できます。
地面の作成手順は以下の通りです。
ファイル保存等

ファイルの保存はFile→Save、ファイルを開くにはOpenを選択してファイルを選択します。初期化はNewを選択します。
ファイルシステムの追加
Ogre3Dでモデルをロードする場合あらかじめフォルダを登録しておく必要があります。
登録するにはresources.cfgに記述しておくか、File→AddFileSystemでフォルダを選択して追加する方法の二種類があります。
RTCの読み込み
まず、RTシステムエディタによりPythonのRTCを作成してください。作成したファイルに変更を加えます。
まず、ファイルの先頭付近に
import OgreRTS
を追加します。そのためOgreRTS.pyは読み込むPythonファイルからパスが通るようにしておいてください。
次にMyModuleInitを以下のように書き換えます。
def MyModuleInit(manager):
manager._factory.unregisterObject("testOgre")
testOgreInit(manager)
return manager.createComponent("testOgre")
ただし、testOgre、testOgreInitの部分は作成したRTCのものに変更してください。
なぜこのような変更をするかというと、ファイルを読み込んでいったん閉じて再読み込みした場合にmanager._factoryに登録したRTCが上書きされないようなのでファイルに変更があっても反映されなかったためunregisterObjectで消してやっています。
これで最低限の準備が整いました。
File→Open Pythonよりファイルを選択して読み込むことができるようにはなりました。
次に作成したRTCから3Dモデル等を操作する方法を説明します。
まず、OgreRTS.OgreObjは3Dモデルなどを操作するためのオブジェクトで以下のメンバ関数を持っています。
| 関数 | 意味 | 戻り値 | 引数 | |||||||||||||||
| CreateBody | 3Dモデルの作成 | MyLink* | 名前 | const char* | ファイル名 | const char* | ||||||||||||
| DestroyBody | 3Dモデルの削除 | 3Dモデル | MyLink* | |||||||||||||||
| setEColor | 3Dモデルの色の変更 | 3Dモデル | MyLink* | 赤 | float | 緑 | float | 青 | float | 透明度 | float | |||||||
| GetBodyName | 名前から3Dモデルを取得 | MyLink* | 名前 | const char* | ||||||||||||||
| GetQueryScene | マウスの位置の3Dモデルを取得 | MyLink* | X | float | Y | float | ||||||||||||
| CameraRoll | カメラをロール回転 | 角度 | float | |||||||||||||||
| CameraYaw | カメラをヨー回転 | 角度 | float | |||||||||||||||
| CameraPitch | カメラをピッチ | 角度 | float | |||||||||||||||
| SetCameraPosition | カメラの位置を設定 | X | float | Y | float | Z | float | |||||||||||
| SetCameraQuaternion | カメラの姿勢をクオータニオンで設定 | W | float | X | float | Y | float | Z | float | |||||||||
| SetCameraRotation | カメラの姿勢をオイラー角で設定 | roll | float | pitch | float | yaw | float | |||||||||||
| CreateStaticImage | スタティックイメージを作成 | MyGUI * | 名前 | const char* | ||||||||||||||
| CreateStaticText | スタティックテキストを作成 | MyGUI * | 名前 | const char* | ||||||||||||||
| CreateButton | ボタンを作成 | MyGUI * | 名前 | const char* | ||||||||||||||
| CreateEditBox | エディットボックスを作成 | MyGUI * | 名前 | const char* | ||||||||||||||
| CreateSlider | スライダーを作成 | MyGUI * | 名前 | const char* | ||||||||||||||
| CreateComboBox | コンボボックスを作成 | MyGUI * | 名前 | const char* | ||||||||||||||
| DestroyGui | GUIを削除 | GUI | MyGUI * | |||||||||||||||
| getGUIByName | 名前からGUIを取得 | MyGUI * | 名前 | const char* | ||||||||||||||
| CreateGuiImageSet | イメージセットを作成 | MyImageSet * | 名前 | const char* | ファイル名 | const char* | ||||||||||||
| MyImageSet * | 名前 | const char* | ファイル名 | const char* | 左上X | float | 左上Y | float | 拡大率X | float | 拡大率Y | float | 右下X | float | 右下Y | float | ||
| DestroyImage | イメージセットを削除 | イメージセット | MyImageSet * | |||||||||||||||
| getImageSetByName | 名前よりイメージセットを取得 | MyImageSet * | 名前 | const char* | ||||||||||||||
| CreateParticle | パーティクルを作成 | myParticle * | 名前 | const char* | ファイル名 | const char* | ||||||||||||
| DestroyParticle | パーティクルを削除 | パーティクル | myParticle * | |||||||||||||||
| getParticleByName | 名前よりパーティクルを取得 | myParticle * | 名前 | const char* | ||||||||||||||
| SetSkyBox | スカイボックスを設定 | ファイル名 | const char* | 大きさ | int | |||||||||||||
| SetFloor | 地面を作成 | MyLink* | 平面の名前 | const char* | 名前 | const char* | ファイル名 | const char* | サイズ | int | 法線方向 | int | ||||||
| SetShadowColour | 影の色を設定 | 赤 | float | 緑 | float | 青 | float | |||||||||||
| SetSubWindow | サブウインドウを作成 | SubWindow * | 名前 | const char* | 名前 | const char* | 名前 | const char* | 名前 | const char* | 名前 | const char* | ||||||
| DestroySubWindow | サブウインドウを削除 | サブウインドウ | SubWindow * | |||||||||||||||
| restartSubWindow | 止めたサブウインドウを再開 | サブウインドウ | SubWindow * | |||||||||||||||
| StopSubWindow | サブウインドウを止める | サブウインドウ | SubWindow * | |||||||||||||||
| getSubWindowByName | 名前よりサブウインドウを取得 | SubWindow * | 名前 | const char* | ||||||||||||||
| SetSleepTime | 単位フレーム時間を設定 | 時間 | float | |||||||||||||||
| AddFileSystem | ファイルシステムを追加 | パス | const char* | |||||||||||||||
| CreateAnimation | アニメーションを作成 | MyAnimation * | 名前 | const char* | 終了時間 | float | ||||||||||||
| DestroyAnimation | アニメーションを削除 | アニメーション | MyAnimation * | |||||||||||||||
| getAnimationByName | 名前よりアニメーションを取得 | MyAnimation * | 名前 | const char* | ||||||||||||||
| CreateLight | 光源を作成 | MyLight * | 名前 | const char* | ||||||||||||||
| DestroyLight | 光源を削除 | 光源 | MyLight * | |||||||||||||||
| getLightByName | 名前より光源を取得 | MyLight * | 名前 | const char* | ||||||||||||||
| DeatachObj | ノードからオブジェクトを分離 | 3Dモデル | MyLink * | |||||||||||||||
| パーティクル | myParticle * | |||||||||||||||||
| 光源 | MyLight * | |||||||||||||||||
| AttachObj | ノードにオブジェクトを接続 | 3Dモデル | MyLink * | パーティクル | myParticle * | |||||||||||||
| 3Dモデル | MyLink * | 光源 | MyLight * | |||||||||||||||
| パーティクル | myParticle * | 光源 | MyLight * | |||||||||||||||
| 3Dモデル | MyLink * | 3Dモデル | MyLink * | |||||||||||||||
| パーティクル | myParticle * | パーティクル | myParticle * | |||||||||||||||
| 光源 | MyLight * | 光源 | MyLight * | |||||||||||||||
| アニメーション | MyAnimation * | 3Dモデル | MyLink * | |||||||||||||||
| アニメーション | MyAnimation * | パーティクル | myParticle * | |||||||||||||||
| アニメーション | MyAnimation * | 光源 | MyLight * | |||||||||||||||
| openb | ファイルを開く | bool | ファイル名 | const char* | ||||||||||||||
| newfile | 全オブジェクト削除 | |||||||||||||||||
| reset | 初期化 |
RTCから既に作成済みの3Dモデルtestobjを移動させるには以下のコード書けばよいことになります。
link = OgreRTS.OgreObj.getBodyByName("testobj")
if link != None:
link.SetPosition(x, y, z)
このようにOgreRTS.OgreObjにより3Dモデルのオブジェクトを取得してそれを操作するということになります。
3Dモデルのメンバ関数は以下のようになってます。
| 関数 | 意味 | 戻り値 | 引数 | |||||||||
| SetAnimation | アニメーションを設定 | 名前 | const char* | |||||||||
| ResetAnimation | アニメーションの時間を初期化 | 名前 | const char* | |||||||||
| UpdateAnimation | アニメーションを更新 | 名前 | const char* | 時間 | float | |||||||
| SetShadows | 影の表示を設定 | 設定 | bool | |||||||||
| SetBornPosition | ボーンの位置を設定 | 名前 | const char* | X | float | Y | float | Z | float | |||
| 番号 | int | X | float | Y | float | Z | float | |||||
| SetBornOrientation | ボーンの姿勢をクオータニオンで設定 | 名前 | const char* | W | float | X | float | Y | float | Z | float | |
| 番号 | int | W | float | X | float | Y | float | Z | float | |||
| SetBornRotation | ボーンの姿勢をオイラー角で設定 | 名前 | const char* | roll | float | pitch | float | yaw | float | |||
| 番号 | int | roll | float | pitch | float | yaw | float | |||||
| SetBornScale | ボーンの拡大率を設定 | 名前 | const char* | X | float | Y | float | Z | float | |||
| 番号 | int | X | float | Y | float | Z | float | |||||
| SetBornRoll | ボーンをロール回転 | 名前 | const char* | 角度 | float | |||||||
| 番号 | int | 角度 | float | |||||||||
| SetBornPitch | ボーンをピッチ回転 | 名前 | const char* | 角度 | float | |||||||
| 番号 | int | 角度 | float | |||||||||
| SetBornYaw | ボーンをヨー回転 | 名前 | const char* | 角度 | float | |||||||
| 番号 | int | 角度 | float | |||||||||
| GetBornNum | ボーンの数を取得 | int | ||||||||||
| ResetBorn | ボーンを初期化 | |||||||||||
| GetBoundingBoxSize | バウンディングボックスの大きさを取得 | float | 軸 | int | ||||||||
| SetPosition | 位置を設定 | X | float | Y | float | Z | float | |||||
| SetScale | 拡大率を設定 | X | float | Y | float | Z | float | |||||
| Roll | ロール回転 | 角度 | float | |||||||||
| Pitch | ピッチ回転 | 角度 | float | |||||||||
| Yaw | ヨー回転 | 角度 | float | |||||||||
| SetQuaternion | クオータニオンにより姿勢を設定 | W | float | X | float | Y | float | Z | float | |||
| SetRotation | オイラー角により姿勢を設定 | roll | float | pitch | float | yaw | float | |||||
| SetVisible | 表示設定 | 設定 | bool | |||||||||
| BoundingBoxVisible | バウンディングボックスの表示設定 | 設定 | bool |
GUIのメンバ関数は以下のようになってます。
| 関数 | 意味 | 戻り値 | 引数 | |||||
| SetPosition | 位置を設定 | X | float | Y | float | |||
| SetSize | 大きさを設定 | X | float | Y | float | |||
| SetText | テキストを設定 | テキスト | const char* | |||||
| SetVisible | 表示設定 | 設定 | bool | |||||
| SetFrameEnable | フレームの表示設定 | 設定 | bool | |||||
| SetBackGroundEnable | 背景の表示設定 | 設定 | bool | |||||
| SetFontSize | フォントのサイズ設定 | 大きさ | int | |||||
| GetText | テキストの取得 | const char* | ||||||
| GetComboBoxItem | コンボボックスのアイテムを取得 | const char* | ||||||
| GetSliderValue | スライダーの値を取得 | float | ||||||
| SetColor | 色を設定 | 色 | const char* | |||||
| SetAlpha | 透明度を設定 | 透明度 | float | |||||
| SetImage | イメージセットを設定 | イメージセット | MyImageSet * | イメージセットの名前(全体の場合はfull_image) | const char* | |||
| SetTextTopAligned | ||||||||
| SetTextBottomAligned | ||||||||
| SetTextVertCentred | ||||||||
| SetTextWordWrapLeftAligned | ||||||||
| SetTextWordWrapRightAligned | ||||||||
| SetTextWordWrapCentred | ||||||||
| SetTextLeftAligned | ||||||||
| SetTextRightAligned | ||||||||
| SetTextHorzCentred | ||||||||
| ClearProperties | 設定の初期化 | t | ||||||
| SetRotatin | 角度を設定 | roll[deg] | float | pitch[deg] | float | yaw[deg] | floa |
パーティクルのメンバ関数は以下のようになってます。
| 関数 | 意味 | 戻り値 | 引数 | |||||||
| SetPosition | 位置を設定 | X | float | Y | float | Z | float | |||
| SetScale | 拡大率を設定 | X | float | Y | float | Z | float | |||
| Roll | ロール回転 | 角度 | float | |||||||
| Pitch | ピッチ回転 | 角度 | float | |||||||
| Yaw | ヨー回転 | 角度 | float | |||||||
| SetQuaternion | クオータニオンにより姿勢を設定 | W | float | X | float | Y | float | Z | float | |
| SetRotation | オイラー角により姿勢を設定 | roll | float | pitch | float | yaw | float | |||
| SetVisible | 表示設定 | 設定 | bool | |||||||
| BoundingBoxVisible | バウンディングボックスの表示設定 | 設定 | bool |
サブウインドウのメンバ関数は以下のようになってます。
| 関数 | 意味 | 戻り値 | 引数 | |||||||
| SetPosition | 位置を設定 | X | float | Y | float | |||||
| SetSize | 大きさを設定 | X | float | Y | float | |||||
| SetCameraRoll | カメラのロール回転 | 角度 | float | |||||||
| SetCameraPitch | カメラのピッチ回転 | 角度 | float | |||||||
| SetCameraYaw | カメラのヨー回転 | 角度 | float | |||||||
| SetCameraPosition | カメラの位置を設定 | X | float | Y | float | Z | float | |||
| SetCameraQuaternion | クオータニオンによりカメラの姿勢を設定 | W | float | X | float | Y | float | Z | float | |
| SetVisible | 表示設定 | 設定 | bool | |||||||
| SetCameraRotation | オイラー角によりカメラの姿勢を設定 | roll | float | pitch | float | yaw | float |
アニメーションのメンバ関数は以下のようになってます。
| 関数 | 意味 | 戻り値 | 引数 | |
| AddKeyFrame | キーフレーム追加 | MyAnimationList * | 時間 | float |
| RemoveKeyFrame | キーフレームの削除 | キーフレーム | MyAnimationList * | |
| SetAnimationState | アニメーションの時間を設定 | 時間 | float |
キーフレームのメンバ関数は以下のようになってます。
| 関数 | 意味 | 戻り値 | 引数 | |||||
| setTranslate | 位置を設定 | X | float | Y | float | Z | float | |
| setRotation | 姿勢を設定 | roll | float | pitch | float | yaw | float |
光源のメンバ関数は以下のようになってます。
| 関数 | 意味 | 戻り値 | 引数 | |||||||
| setColor | 色を設定 | 赤 | float | 緑 | float | 青 | float | |||
| SetPosition | 位置を設定 | X | float | Y | float | Z | float | |||
| SetScale | 拡大率を設定 | X | float | Y | float | Z | float | |||
| Roll | ロール回転 | 角度 | float | |||||||
| Pitch | ピッチ回転 | 角度 | float | |||||||
| Yaw | ヨー回転 | 角度 | float | |||||||
| SetQuaternion | クオータニオンにより姿勢を設定 | W | float | X | float | Y | float | Z | float | |
| SetRotation | オイラー角により姿勢を設定 | roll | float | pitch | float | yaw | float | |||
| SetVisible | 表示設定 | 設定 | bool | |||||||
| BoundingBoxVisible | バウンディングボックスの表示設定 | 設定 | bool |
OgreRTS.SimObjはシミュレーションを操作するためのオブジェクトで以下メンバ関数を持っています。
| 関数 | 意味 | 戻り値 | 引数 | |||||||||||||||||
| SetSphere | 球を作成 | MyODEBody * | 名前 | const char* | 質量 | double | 半径 | double | ||||||||||||
| SetBox | 直方体を作成 | MyODEBody * | 名前 | const char* | 質量 | double | X | double | Y | double | Z | double | ||||||||
| SetSylinder | 円柱を作成 | MyODEBody * | 名前 | const char* | 質量 | double | 長さ | double | 半径 | double | ||||||||||
| SetCapsule | カプセルを作成 | MyODEBody * | 名前 | const char* | 質量 | double | 長さ | double | 半径 | double | ||||||||||
| DestroyBody | ボディを削除 | ボディ | MyODEBody * | |||||||||||||||||
| getBodyByName | 名前よりボディを取得 | MyODEBody * | 名前 | const char* | ||||||||||||||||
| SetSliderJoint | スライダージョイントを作成 | MyODEJoint * | 名前 | const char* | ボディ1 | MyODEBody * | ボディ2 | MyODEBody * | 軸X | double | 軸Y | double | 軸Z | double | ||||||
| MyODEJoint * | 名前 | const char* | ボディ1 | MyODEBody * | 軸X | double | 軸Y | double | 軸Z | double | ||||||||||
| SetFixJoint | 固定ジョイントを作成 | MyODEJoint * | 名前 | const char* | ボディ1 | MyODEBody * | ボディ2 | MyODEBody * | ||||||||||||
| MyODEJoint * | 名前 | const char* | ボディ1 | MyODEBody * | ||||||||||||||||
| SetHingeJoint | ヒンジジョイントを作成 | MyODEJoint * | 名前 | const char* | ボディ1 | MyODEBody * | ボディ2 | MyODEBody * | 位置X | double | 位置Y | double | 位置Z | double | 軸X | double | 軸Y | double | 軸Z | double |
| MyODEJoint * | 名前 | const char* | ボディ1 | MyODEBody * | 位置X | double | 位置Y | double | 位置Z | double | 軸X | double | 軸Y | double | 軸Z | double | ||||
| DestroyJoint | ジョイントを削除 | ジョイント | MyODEJoint * | |||||||||||||||||
| getJointByName | 名前よりジョイントを取得 | MyODEJoint * | 名前 | const char* | ||||||||||||||||
| DestroyAll | 全削除 | |||||||||||||||||||
| startSim | シミュレーション開始 | |||||||||||||||||||
| stopSim | シミュレーション停止 | |||||||||||||||||||
| SetGravity | 重力を設定 | 重力 | double | |||||||||||||||||
| SetCFM | CFMを設定 | CFM | double | |||||||||||||||||
| SetERP | ERPを設定 | ERP | double | |||||||||||||||||
| SetSamplingTime | サンプリングタイムを設定 | サンプリングタイム | double | |||||||||||||||||
| SetSleepTime | 待ち時間を設定 | 待ち時間 | float | |||||||||||||||||
| SetGroundCFM | 接触時のCFMを設定 | CFM | double | |||||||||||||||||
| SetGroundERP | 接触時のERPを設定 | ERP | double | |||||||||||||||||
| SetQuiq | 速度、精度重視の設定 | 設定 | bool | |||||||||||||||||
| SetGroundMu | 摩擦を設定 | 摩擦 | double | |||||||||||||||||
| SetScale | 3Dモデルに対する拡大率を設定 | X | double | Y | double | Z | double | |||||||||||||
| SetContactList | 接触条件を作成 | MyContactList * | 名前 | const char* | ボディ1 | MyODEBody * | ボディ2 | MyODEBody * | ||||||||||||
| DestroyContactList | 接触条件を削除 | 接触条件 | MyContactList * | |||||||||||||||||
| getContactListByName | 名前より接触条件を取得 | MyContactList * | 名前 | const char* |
シミュレーションのボディのメンバ関数は以下のようになってます。
| 関数 | 意味 | 戻り値 | 引数 | |||||
| SetBodyPosition | 位置を設定 | X | double | Y | double | Z | double | |
| SetBodyRotation | 姿勢を設定 | roll | double | pitch | double | yaw | double | |
| SetODEScale | 3Dモデルに対する拡大率を設定 | X | double | Y | double | Z | double | |
| SetODEOffset | 3Dモデルに対するオフセットを設定 | X | double | Y | double | Z | double | |
| GetPosition | 位置を取得 | double | 軸 | int |
シミュレーションのジョイントのメンバ関数は以下のようになってます。
| 関数 | 意味 | 戻り値 | 引数 | |||||
| SetJointPosition | 位置を設定 | X | double | Y | double | Z | double | |
| SetJointRotation | 軸を設定 | X | double | Y | double | Z | double | |
| ControlJointVel | 角速度、速度を制御 | 角速度、速度 | double | |||||
| ControlJointToq | トルク、力を制御 | トルク、力 | ||||||
| GetJointPosition | 位置を取得 | double | 軸 | int |
シミュレーションでの接触は全体での設定以外に個別で設定することもできます。その個別の接触を管理するオブジェクトのメンバ関数は以下のようになってます。
| 関数 | 意味 | 戻り値 | 引数 | |
| SetERP | ERPを設定 | ERP | double | |
| SetCFM | CFMを設定 | CFM | double | |
| SetMu | 摩擦を設定 | 摩擦 | double | |
| SetContact | 接触するかを設定 | 設定 | bool |
特定条件で呼び出される関数
マウスやキーボードの操作、あるいは描画のタイミング、シミュレーション更新のタイミングで呼び出される関数を設定することができます。RTCのクラスに必要に応じて以下の関数を追加してください。
| 関数 | 呼び出されるタイミング | 引数 | |||||||
| keyPressed | キーを押したとき | キー | int | ||||||
| keyReleased | キーを離したとき | キー | int | ||||||
| mouseMoved | マウスを動かしたとき | 位置X | int | 位置Y | int | 速度X | int | 速度Y | int |
| mousePressed | マウスのボタンを押したとき | ボタン | int | ||||||
| mouseReleased | マウスのボタンを離したとき | ボタン | int | ||||||
| ogre_init | RTCを読み込んだとき | ||||||||
| ogre_loop | 描画の更新時 | ||||||||
| Simloop | シミュレーションの更新時 | ||||||||
| Contacthandler | 個別に設定した物体が接触したとき | ボディ1 | MyODEBody * | ボディ2 | MyODEBody * | ||||
| 〜Clicked | GUIのボタンが押されたとき(〜はGUIの名前) | ||||||||
| 〜SliderChanged | GUIのスライダーの値が変化したとき(〜はGUIの名前) |