3Dモデルの判定について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
FE

3Dモデルの判定について

#1

投稿記事 by FE » 12年前

自機は球として壁、床のモデルとの判定を取りたいのですが、
自機の移動べクトルが次フレームで壁や床の線と当たっているかをとればいいのは分かっているのですが、
モデルの頂点データと結線データからどう取り出せばいいのか分かりません。
よろしければ教えていただけないでしょうか?

環境はDirectX9を使用しています。

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: 3Dモデルの判定について

#2

投稿記事 by beatle » 12年前

FE さんが書きました: モデルの頂点データと結線データからどう取り出せばいいのか分かりません。
何を取り出したいのでしょうか.

FE

Re: 3Dモデルの判定について

#3

投稿記事 by FE » 12年前

球と当たった面です。

conio
記事: 9
登録日時: 13年前
連絡を取る:

Re: 3Dモデルの判定について

#4

投稿記事 by conio » 12年前

球体であれば、
---------------------------------------------------------------------
【A】球の中心から壁までの距離が、球の半径以下
【B】球の中心から壁までの距離が、球の半径より長い
---------------------------------------------------------------------

【A】であれば接触、【B】であれば接触していない、
という判定でよいかと思われます。

FE

Re: 3Dモデルの判定について

#5

投稿記事 by FE » 12年前

球の反射をしたいのですが当たった壁の面情報がほしいのです。
あたった面の情報を取り出すはどうすればいいのでしょうか?

アバター
みょん
記事: 16
登録日時: 12年前
住所: 京都
連絡を取る:

Re: 3Dモデルの判定について

#6

投稿記事 by みょん » 12年前

壁はそもそも平面なのでしょうか?また、面の情報とは壁の平面の方程式などでよいのでしょうか?

上が両方共イエスの場合、conioさんのおっしゃっているように、
接触しているかどうか知りたい壁と球の中心の距離を調べることでその壁に当たっているか、が分かります。

(この方法がダメだというのは、壁の情報が予め与えられているわけではないのでしょうか?何にせよ、情報が少なすぎるような気がします)

FE

Re: 3Dモデルの判定について

#7

投稿記事 by FE » 12年前

なんと言ったらいいのかわかりませんが、両方とも3Dモデルでの話です。

球の進行ベクトルが壁モデルに刺さった時当たったということは分かります←理論上
球の毎進行ベクトルは取れるのですが壁モデル(頂点座標やら結線情報から面を取り出す?)に当たったという判定の取り方が分からないのです。
接触した面を取り出す操作?

モデル自体から当たっている面を取り出す。というプログラムが分からない感じです。
下手な説明ですみません。

壁モデルは平面でも固形でもどちらでもできるようにしたいのです。←どちらと言えば固形。

アバター
みょん
記事: 16
登録日時: 12年前
住所: 京都
連絡を取る:

Re: 3Dモデルの判定について

#8

投稿記事 by みょん » 12年前

球の進行ベクトルからだけでは壁の情報は得られませんよね?

できることは、
球の情報+壁の情報→当たっているならこの壁の情報を取り出す
という操作だけだと思います

壁の情報(各頂点の座標等)がもともとないという状況では、そもそも壁を構築することができませんが…?

あと、平面でも固形でも、とありますが固形とは何でしょうか?
私が訊いているのは平面なのか曲面なのか、曲面であるとしても球の大きさから考えて平面と近似してもよい状況なのかどうか、です

FE

Re: 3Dモデルの判定について

#9

投稿記事 by FE » 12年前

壁については別途モデルを読み込んだ前提の話です。
固形というのは3Dモデルのことで、曲面か平面かは3角形ポリゴンを取り出せれば全て平面なので問題ないです。

球の進行ベクトルが壁モデルのどこの3角形ポリゴンが交わったかを取り出したいのです。

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: 3Dモデルの判定について

#10

投稿記事 by beatle » 12年前

やりたいこと:壁情報(3角形の集合)と線分を与え,その線分と交わっている3角形を取得する
ということですね.

これをやるには,すべての3角形の中から,線分と交わる3角形を探せばいいでしょう.

ちなみに,DXライブラリには
HitCheck_Line_Triangle
という関数があり,1つの線分と1つの3角形が交わるかどうかを判定できます.
これをすべての3角形に対して適用すればいいことになります.
(DXライブラリを使っていないなら,同じような判定関数を自作しなければならないでしょう.
もしかしたらDirect Xに含まれているかもしれませんが僕は詳しくありません)

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 3Dモデルの判定について

#11

投稿記事 by ISLe » 12年前

DirectX 9を使っているなら、D3DX9のD3DXIntersect系関数が質問者さんが欲しい機能そのものなのでは?

それなりに重いので、複雑なモデルなら当たり判定用に簡易なメッシュを作る必要があります。

閉鎖

“C言語何でも質問掲示板” へ戻る