PhysicsにLocalDyanmicsSimulationの処理を集約 PHSceneとPHLocalSceneをマルチスレッドで回し,PHScene側から同期をかける. FrameworkからPHLocalSceneのStepを呼ぶ.その前後に力覚計算を埋め込む. FWPointerがPHPointerとHumanInterfaceをつなぐ. 力覚計算モジュールをどうするか,コードレビューではHumanInterfaceの集約することになっている. 力覚計算に必要なもの ・提示力計算は剛体,ポインタの現在と1ステップ前の状態(速度,位置),接触状態(法線方向,侵入量,侵入頂点),バネダンパ値 ・振動感提示はマテリアル情報(減衰率,周波数),接触開始と継続時間. このため,HumanInterfaceモジュールに集約するためには,これらの情報をPhysicsから取ってきて保存しておく構造体が必要. また,2つのスレッドから1つの構造体を操作してしまうと,アクセス違反が起きるので, 構造体のインスタンスを2つ作り各スレッドに持たせ同期させたい. グローバル,ローカルシミュレーションを走らせるStep関数はFrameworkに実装する. Frameworkのどこに実装するかは検討事項 擬似コード void FWAppPlus::Step(){ // いろいろな処理 GetPHScene()->Step(); // いろいろな処理 if(bSync == true) SyncLocalScene(); // 同期 } void FWAppPlus::LocalStep(){ GetHIScene()->UpdateInterface(); GetHIScene()->HapticRendering(); GetPHScene()->PHLocalScene()-->Step(); } 力覚レンダリング部分はphysicsへ集約させる.