Sphynx
物理エンジン向けの物体を作るときの工程を考えていました。たとえばラグドールくらいの複雑さの構造物を作ろうとしたときに、ソースコードやXMLなどのテキストベースでは、試行に手間がかかって面倒です。GUIがあれば助かるところです。 Collada Physics形…
「StillDesign / PhysX.Net」で作ったコードを元に、「PhysX Candy Wrapper (eyecm.PhysX)」で動くコードを作ってみました。問題なく動作しています。 布の計算結果を得るMeshDataで位置と法線を1バッファで扱う方式が考慮されている バッファの受け渡しはコ…
.NET用PhysXラッパーとして「PhysX Candy Wrapper」を見つけたので、表に追加しておきます。 名称 サイト 概要 PhysX Candy Wrapper (eyecm.PhysX) http://eyecm-physx.sourceforge.net/ XNA向けのビルド済みライブラリが用意されている StillDesign / PhysX…
時間をかけて、布に関する問題はある程度の対策が見えました。ただ、TriangleMesh(剛体)とCloth(布)で作った試作シーンは、布が剛体を徐々にすり抜けていってしまっています。調整によって発散こそしませんが、意図したシーンにはなっていません。 つい…
「StillDesign / PhysX.Net」を含んだデバッグと機能追加を行っていました。 物理計算された結果をMeshDataクラスのストリーム経由で得られない問題が特定できたので、「StillDesign / PhysX.Net」に暫定的な修正を加えた VertexPositionNormalTexture構造体…
Visual Remote Debugger (VRD) PhysXには、Visual Remote Debugger (VRD)という機能があります。アプリケーションからデバッガを有効にするとネットワーク(ローカルのときはlocalhost)を通じて、物理計算を記録して、その様子を3Dに可視化できます。 これ…
TriangleMesh(剛体)とCloth(布)の衝突がうまくいかないので、TriangleMeshの代わりに、簡単なCapsuleを組み合わせた剛体を作って試してみた。すり抜けるようなことはないようなので、やはりこちらでシーンを作るのが妥当な印象です。 VRDは、物体をドラ…
WeldingDistanceでの問題を前回の方法で対処しておくことにして、布と扱いが似たTriangleMeshの物体を追加してみました。この2つの衝突を扱いたいわけですが、PhysXはすべての形状同士の衝突をサポートするわけではないということで、ドキュメントに対応表が…
ネイティブ側のエラーなので、勝手に終了したりするので、「StillDesign / PhysX.Net」のソースコードをビルドしてトレースをしました。 エラー箇所はC#から見てCloth.ParticlePositionsプロパティの取得です。C++/CLIのソースコードでは次のメソッドです。 …
一般のポリゴンメッシュに対応を始めています。描画メッシュ形式志向でやろうとすると、同じ点でもテクスチャ座標が異なる場合には独立した複数の頂点になっています。これを1つの物理演算用の点と見なさなければなりません。そのような場合に備えた機能がPh…
StillDesign / PhysX.Netによる布 まず、最初の段階が動きました。風に揺れる布です。一様グリッドのメッシュを1点で空間に固定しています。 描画はワイヤーフレームになっています。面で描画をするには、法線を作らないと自然に見えるようにならないからで…
現在の候補になっている.NET用PhysXライブラリのDLLの依存関係について、まとめなおしました。 各PhysXライブラリにおける依存DLL これらDLLは通常、ゲームの実行可能ファイルのパスにおいて使います。 Imaginary Game Engine / PhysX-sharp (PhysX.Net) Phy…
ひとまず、「StillDesign / PhysX.Net」のデモを見たあと、「Imaginary Game Engine / PhysX-sharp (PhysX.Net)」について調べていました。 「StillDesign / PhysX.Net」は、.NETらしいラッパーになっています。「Imaginary Game Engine / PhysX-sharp (Phys…
ネイティブのPhysXのDLL まず、ネイティブのPhysXのDLLを用意しましょう。PhysXを使うアプリケーションはいくつかのネイティブなDLLに依存します。 これらが含まれる、NVIDIA PhysX SDK 2.8.1をインストールしておくことにします。http://developer.nvidia.c…
PhysXと絞っていますが、結果的にこの候補になったと言えます。そのラッパーライブラリとは何かというところですが、ものがものだけに大変似通った名前のものが3つほど見つかりました。 名称 サイト 概要 StillDesign / PhysX.Net http://www.codeplex.com/p…
さて、C#で使える3D物理エンジンには何があるでしょうか。 剛体などの基本的なものが扱え、C#の中でもXNAフレームワークを利用して、WindowsとXbox 360の両方で動くライブラリとしては、JigLibXがあります。他にもいくつかのオープンソースプロジェクトがあ…
http://xelf.info/physics/mathematics.html 3Dプログラミングでよく使う数学に関する話題をC#クラスライブラリとともに説明するページを追加しました。 Vector2構造体、Vector3構造体、Vector4構造体、Quaternion構造体、Matrix構造体、MathHelperクラスな…
物理エンジンを使うテーマで、主にFarseer Physics Engine 2.0のことについて書いてきた内容およびその続きについて、専用のページを用意しました。 検討や進捗などはブログで綴り、ページの方へ整理していくつもりでいます。 http://xelf.info/physics/
オンラインのマニュアルページ改築しました。 まとまった情報、入り組んだ情報を構築していく都合から、マニュアルは、ブログではなく別ページを用意しています。これまではHTMLを直接書いていましたが、Wiki形式のものを何度か検討していました。今回、都合…
部品「Puff」を追加しました。 編集時のカメラの拡大率変更に対応しました。マウスホイールで操作できます。 部品「ボタン」の動作を修正しました。 部品「Puff」は、追加のキャラクターの一種です。柔らかい物体に挑戦しています。Farseer Physics Engine 2…
Geom.IsSensorプロパティは、その設定のbool値を保持します。 ただし、コードを見るとそれだけではないことが確認できます。Body.IsStaticプロパティの値を保持するisStatic変数とGeom.CollisionResponseEnabledを書き換える副作用があります。 このことによ…
部品「Wall」を追加しました。壁用の部品ですが、固定するならば他の部品と同じ操作が必要です。 部品の固定に関する不具合を修正しました。原因は別記するGeom.IsSensorプロパティの仕様にありました。
ゲームモード中にプレイヤーキャラクター「Doll」で[Space]キーを押している間、ものをつかめるようになりました。現在のところ、ボタンの小さい方の部分と、床で確認でき、つかめるのは片手のみです。うまく部品をおいてゲームモードを開始して、Dollを操作…
Farseer Physics Engine 2.0のマニュアルのKnown Issues(既知の問題)を和訳してみました。 http://xelf.info/physics/FarseerPhysics/Manual2.0.jp.html Sphynxでもこれらの問題の影響を受けて、調整を必要としているので、この部分を訳してみました。
先日のWorldSimulator.Updateメソッドに経過時間0では狙い通りにできなかったことについての対策です。 現在は次のようにすることで状況が改善しています。 編集モードにおける一時停止の状態を作り出すために、再生・一時停止の切り替えに伴って、WorldSimu…
進捗状況 機能 ファイルのロード・セーブがある程度機能するようになりました。 部品に「Doll」を追加してみました。 コード ファイルのロード・セーブ時の部品の参照解決のため、部品の識別キー(Uniqueクラス)を追加。 クローンは、同じ部品の更新(Uniqu…
FarseerGames.FarseerPhysics.Collisions.Geomクラス 主要なコンストラクタ 注釈 Geom(Body body, Vertices vertices, float collisionGridCellSize) BodyとVerticesに依存 型 パブリックなフィールド 注釈 CollisionEventHandler OnCollision SeparationEve…
FarseerGames.FarseerPhysycs.Dynamics.Bodyクラス 型 パブリックなフィールド 注釈 float AngularVelocity bool Enabled float IdleTime bool IsAutoIdle float MinimumVelocity bool IgnoreGlavity bool IsDisposed bool IsQuadraticDragEnabled float Lin…
進展に時間がかかっています。 それはアンドゥ・リドゥ、ファイルの読み書きなどのために、オブジェクトのクローン、永続化などで右往左往しているためです。Windows以外のことも考慮して、.NETの高度な機能などに頼らないで、手探りでいきます。 そこで、永…
現在までのコードネーム「Sphynx」開発において、対応方法に検討が必要になっている部分についてです。 オブジェクトのクローン(複製) 外から操作できる値の複製によって、オブジェクトのクローンを作る場合、シーンの再現に必要なすべてのオブジェクトの…