0

ゲームのサーバーをホストする専用サーバー ソフトウェア用に C++ でプラグインを作成しています。

3D Collision ライブラリを探しましたが、例を見つけるのは本当に難しいですが、MathGeoLib は有望に見えるので使用することにしましたが、例がなく、見つけることができません。

だから私の質問は: 球と立方体、線 (ポイント + 方向) を定義し、線が遭遇する最初の衝突の位置 XYZ を取得するにはどうすればよいですか?

ドキュメントには、クラスとそれらが持つメソッドのみが示されています。しかし、MathGeoLib の使用を開始する方法は何も示していません。Google で見つからないチュートリアルはありますか?


私のプロジェクトの背景情報:

San Andreas Multiplayer 用の衝突検出器を作成しています。サーバーにはゲーム世界に関する情報がまったくないため、衝突ファイルとオブジェクト配置ファイルを抽出し、プラグインで使用できる形式に変換することにしました。

オブジェクトには位置 XYZ とクォータニオン回転 XYZW があり、衝突ファイルには多くのものが含まれています[プロジェクト メンバーがプロジェクト用にこれらの .col ファイルのパーサーを作成しています]。

プロジェクトの目標は、XY 位置に基づいて Z 位置を決定するメカニズムを提供し、ゲームの世界で線 (StartPos、EndPos) が交差する (XYZ にヒット) 場所を示すレイトレーサーを提供することです。

これが、MathGeoLib でこれを達成する方法を知る必要がある理由です。すべてのオブジェクトの衝突を 1 つのワールドにロードしてから、レイ トレーサー関数を実行します。(6000x6000x1000の領域に30,000オブジェクト程度)

4

1 に答える 1

1

チェックアウト

http://bulletphysics.org/wordpress/

Bullet はオープン ソースの物理エンジンで、多くのサンプル コードが付属しています。特に、ダイナミクス ワールドの rayTest() メソッドを使用してレイをキャストし、最も近い衝突ポイントを返したいとします。要約すると、次のことが必要になります。ダイナミクス ワールドを作成し、球体と立方体のデータをそこにロードしてから、rayTest(startPoint, endPoint, resultCallback);

「hello world」のサンプル コードから始める前に bullet を使用したことがないと仮定して、ダイナミクス ワールドを簡単に作成し、それに剛体を追加する方法を確認します。

于 2013-08-17T15:59:31.187 に答える