[[devel]] (できるところから手を付けていきましょう.手をつけるときはIRCで告知しましょう.) ** [[New Springhead Top Page]] [#i2dd6bc0] **[[Frameworkを使ったサンプルを作ろう]] [#c5329557] **[[Jointの仕様について]][#c5329557] **公開に向けて [#k8800cb9] -Physicsのドキュメント **そのほか [#rb18e3a3] * 開発方針的なTODO [#n19098ae] - API検討 APIを詰めていく.「testコードを書く → 不便を感じる → OpenDynamicsEngine/Novodexを見ながらAPIを追加する」の繰り返しでAPIを増やしていく. - 高級言語のラッパー -- 現在[[Rubyラッパー]]を作成中。by tazz -- 最低限のレベルは実装完了。現在開発凍結中。引継ぎ手歓迎。by tazz 08/11/08 - GUI検討 -- これもRubyが有望 --- FXRuby? --- FXRubyによるGUIを途中まで作りましたが凍結中です。すみません by tazz 08/11/08 -- メタセコプラグイン?メタセコはあくまでモデラーとして個別に使う方が良い? *保留中のTODO [#nb22dfb8] - 名前変更~ インタフェースにPHSolidIfなどIfが着いていますが,実装のほうにImpをつけて,インタフェースは何もつけないのが最終形態のつもりです.実装のクラス名が実装の内部でいろいろ参照されているので,面倒なので,名前の修正を省略しました. ある程度固まってきたら,まとめてやりましょう. * MEMO [#z7360dbe] TODOに手をつけたり,終わったときは,こちらに. -頂点フォーマットの指定の追加 --背景:グラフィックス用のシーングラフを作るために,頂点フォーマット指定の仕組みが 必要だった. --次のAPIを追加/変更 ---GRRenderBaseIf::SetVertexFormat(GRVertexElement* ) ---GRRenderBaseIf::DrawDirect ---GRRenderBaseIf::DrawIndexed ---シェーダーの指定ができるようにする.SetVertexShader()が必要.~ → SetShaderFormat()を作りました. -LoadState/SaveState APIをObjectにつける.:完了 - ConstraintEngine (田崎君):~ 拘束エンジンを作る.接触判定は今までのものを利用. - descの修正,stateの導入 Solidなどのオブジェクトは,descを渡してCreateできる. -- descには,オブジェクトの情報(変数)がすべて書かれているようにしたい. -- stateは,シミュレーションを進めると変化する情報(変数)が入る. -- ファイルセーブ・ロードはdescのセーブ・ロードで対応する.オブジェクトにdescのセーブ・ロード機能を付けたい. -- 状態のセーブ・ロード機能をつけて,「5秒前の状態にもどす」などができるようにしたい.オブジェクトにstateをセーブ・ロードする機能が必要. - Graphicsライブラリの実装 - PHSdk Shapeの修正 --ShapeをSceneで共有できるようにする. ---Shapeを所有するのはPHSdk ---PHSdkがnamesを持つ.PHSdkのnamesに登録.scene->FindObject では検索できない.sdk->FindObjectを使う. - 毎日のテストへの対応 ビルドができたら,テスト実行をするようにしました.~ tests以下のプログラムをテスト実行に対応させてください.毎日のテストは: -- src\tests\Physics\プロジェクト名\Debug\プロジェクト名.exe を実行します. -- 自動的に終了するように作ってください.そうでないと毎日のビルドがそこで止まってしまいます. -- exitが0を返すと成功,それ以外は失敗とみなします. -- 標準出力(std::cout)への出力が Build.log に残ります. -- 標準出力(std::cout)のうち「error」という文字列を含む行が BuildError.log に残ります. -- DSTR への出力はのこりません. - 配列インタフェース見直し~ 共通配列インタフェーステンプレートを使ったインタフェース(田崎君)~ SolidIf ShapeIf ConvexMeshIf へのインタフェース追加.外部で描画できるように(田崎君) - 配列のAPI 配列のAPIを実装の都合で変えたくないが, ShapeのFaceについては,変わってしまった.~ ShapeはFaceの実体を配列として持つので, CDFaceIf** GetFaces() は実装困難.~ 汎用配列インタフェースを考えるが,配列クラスから親クラスをアクセスする方法, 親クラスの関数の呼び出し方法などで悩んで頓挫.~ 配列IF と 配列実装 を作るしかないか.~ そうしたとして, iterator を提供できるのか? → strideを明示できるのでできる.~ 意味があるのか? → virtual のオーバヘッドが重くなってしまうので インデックスでまわすほうが効率よい? - TPoseを完成させる(大内君)~ TPose (Affineと同様姿勢を表す.Quaternion と Vec3で向きと位置を表現する.) Affineと同様に使えるインタフェース.Affineを返すインタフェースなどが必要. TQuaternion の from_matrix to_matrix も名前が変なので,動作とあわせて再検討. - PHPenaltyEngine <- 従来のPHContactEngine~ 複雑な CollisionEngineとContactEngineの関係はなくした.CollisionEngine廃止. 新PenaltyEngineのStep内=CollisionEngineのStep - PHSolidIf にAddShapeが必要.~ NovodexはShapeを共有しないが,Springheadは共有する.そのため,生成と別にSolidへの追加が必要. - インタフェースの所有権.ユーザはインタフェースを参照するだけにするか,所有して,使用後にdeleteするか.~ どっちでも上手く行く仕組みができた.ユーザはUTRef<PHScene>のように所有してもよいし, PHScene* として参照してもよい.~ 参照の場合,SDKが消えるとみな消える.Sceneが消えるとSolidも消える. - descを用意する.PHSolidDescだけは作ってみました.他のクラスも同様にdescが使えると便利だと思います.~ →CDConvexMesh のdescは用意した.他は必要に応じて作る.~ NovodexはSolidDesc->MeshDesc->MeshDescのようにデスクがリンクリストになって,まとめて作成できるが,必要か? - Physicsの未使用ファイルは一度消しました. - Solidの重心の位置=Solidの位置とするか,重心をずらせるようにするか.~ ODE,NovodexのAPIを見て一致していたら,それに合わせる.違っていたら検討.~ → どちらも重心をずらせる.Novodexは慣性テンソルを回転と対角に分けて指定する. 回転部分が重心の座標系という考えになっている.