partix

繰り返しますけど物理シミュですから

partixのサンプルに人体シミュを加えました。http://d.hatena.ne.jp/jonigata/20070722とだいたい同じやつです。 死蔵させても誰の得にもならないし、ソースを公開しておけば誰かの役に立つかもしれないので公開します。ソースの取得方法についてはこちらを…

修正

サンプルのいくつかのビルドが通らなくなっていたのを修正

高速化

ある条件下(といっても日常的に成立している条件)で 無駄な計算が起こっていたのを最適化。

これはひどい

この日のコードで壮絶にメモリリークしていたのを修正

mqo2smesh

以前紹介したムービーの作者の方が partixを組み込んでらっしゃるということなので、 ちょびっと説明を。 partix/examplesディレクトリに mqo2smeshというプロジェクトが入っています。 これをビルドするとmqo2smesh.exeという実行ファイルが 作成されますの…

main関数

さて、sample0で主処理を行っているmain関数を読んでみましょう。読むファイルは引き続きsample0.cppです。 初期化 // ワールドの作成 std::cout << "make world" << std::endl; partix::World< SampleTraits >* world = new partix::World< SampleTraits >;…

はちゅねデスクトップ

id:h_sakuraiさんの書き込みに触発されて作ってしまいました。どうでもいいところですごい苦労したり。 あとでpartixのサンプルに加えます。

次回予告

次はいよいよmain関数を読みにかかります。

デフォルトパラメータ

traitsでは、デフォルトパラメータの定義も行います。 大体のものはインスタンスごとに上書き可能ですが、 デフォルトではここで定義したものが使われます。適当に推奨値を書いておきますが、物体の大きさや速度などで まったく話が変わってくるので気休め程…

traits

partixでは、プラットフォーム非依存にするため、 実数・ベクトル・行列などの型を外部から与えることになっています。 例えば、partixの利用は物理世界であるWorldの生成から 始まりますが、このWorldはテンプレートクラスであり、 生成時にはテンプレート…

プラットフォーム非依存のサンプル

ではまず、partix/examples/sample0からみていきましょう。sample0はプラットフォーム非依存のサンプルで、これだけは linuxでもビルドできるようになっています。 (他のサンプルはレンダリング・GUIを伴うのでDirectX専用です)。 内容は、「地面(固定平面)…

物理とゲーム

物理特性を取り入れたゲームを作ろうとすると、 物理によって勝手にルールが決まって楽なこともある反面 難しいこともあったりします。 例えば、上の図のような状態で、 ちいさい自機が大きい岩を押したりするのは ゲーム的にはさほどとっぴなことではありま…

SoftShellとSoftVolumeのあたり判定

SoftShellとSoftVolumeのあたり判定(≒地形とオブジェクトの当たり判定)を spatial hashに書き換えたら5倍くらい早くなった。 はちゅねボーリング程度なら処理落ちしなくなった。 つーかいままでがチョンボだなこれ……

sample0

で、仮にチェックアウトがうまくできたとすると、 チェックアウトしたディレクトリはだいたいこんな感じになっています。 partix |---documents |---examples |---sample0 |---sample1 |---sample2 |---sample3 |---include |---partix |---zw とりあえずpar…

partixのダウンロード

partixのコードはgoogle code projectsにホスティングされており、 アーカイブは用意してないので、 TortoiseSVNかなにかのsubversionクライアントを利用してゲットすることになります。TortoiseSVNの使い方に関してはこのあたりを参考にしてください。http:…

新作ムービーをうpしました。

ムービー作るのはエンジンのメンテナンスのモチベーションになって いいですね。実際のところ、このサンプルはムービー用に作ったものなので 本当にボーリングとして遊ぼうとするとちょっと変な動きをする 部分があります。おそらくピン(はちゅね)の当たり…

これを組み合わせたい

これはちゅね山積みと組み合わせたいっすね

tetrahedral meshを作るときの注意

とはいえ、tetgenはどんなメッシュでも tetrahedral meshにしてくれるわけではありません。 いくつか制約があります。 英語を読むのが苦でない方は http://tetgen.berlios.de/plc.html を読んでください。 得意でない方のためにかいつまんで説明すると、 「…

tetrahedral meshの読み込み方

.smeshをtetgenにかけると.ele, .node, .faceファイルが出力されるわけですが、 これらもごく単純なフォーマットで、次の程度のもので読み込むことが可能です。 template < class Traits > void make_softvolume( const char* basename, float mass, partix:…

tetrahedral meshの作り方

さて、tetrahedral meshが必要と分かったので、その作り方を 知る必要があります。 partixは基本的にI/Oの類には一切関知しないので、 ファイルから読み込んでpartix内部でもちいるデータ形式に 変換する、といったようなことは渡す側でする必要があります。…

tetrahedral meshとは

tetrahedral meshとは、三角錐を充填した空間のことで、 よく医療などの3次元データの処理に使われる(らしい) データ構造です。中空のポリゴンメッシュと違って 中の方までデータが詰まっているので、 すり抜けが起こりにくいという利点があります。 SoftShe…

partixで用いる当たり判定モデル

partixには2種類の任意形状プリミティブが存在します。 SoftShellとSoftVolumeです。 SoftShellは通常のポリゴンモデルに用いるプリミティブです。 基本的に普通のポリゴンメッシュ(.objとか.mqoとか)と同じような データ構造を持っています。このタイプのプ…

partixの基本設計

partixはC++のtemplateを用いたプラットフォーム非依存の 物理エンジンで、レンダリングとは完全に切り離されています。 partixでは物理エンティティはすべて任意形状として扱う ことになっているので*1、モデルが複雑だとそのぶん演算にも 時間がかかります…

partixについて

チュートリアルから書き出そうかと思っていたのですが、 質問をいただいたのでそのお答えから。 と思いましたが、その前に基本設計を説明しないと説明困難なので まずはそこから。

紹介ムービー

リアルタイムやわらか物理シミュレーションエンジン「partix」を オープンソースで公開しようと準備中なのですが、 とりあえずそれに先駆けて紹介ムービーを公開しました。 よかったら見てみてください。はちゅねミクのモデルは保管庫@七葉からおかりしまし…

partix サポート掲示板

このエントリをpartixのサポート用エントリにします。 BBS代わりに使ってください。