忍者ブログ
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
プロフィール
HN:
[-_-;] (みかん)
性別:
男性
趣味:
プログラミング、XOPS
自己紹介:
中部地方在住です。
最新コメント
[11/30 NONAME]
[11/22 NONAME]
[09/24 NONAME]
[06/10 NONAME]
[01/29 NONAME]
XOPS関連サイト「みかん箱」の運営や、OpenXOPSの開発などを行う[-_-;](みかん)のブログ。近状報告や独り言などを書きます。
Prev Month12345678910111213141516171819202122232425262728293031Next Month
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

category :
PR
C言語で3Dを勉強 -14

▲ 開始時に明らかに何かを間違えたブリーフィング画面を付けました。
  上と下の文に、XOPSの独特フォントをひそかに使ってます。
  (下記の本文とは関係なし)


2月下旬、DirectXの当たり判定の基礎根本を勉強するべく資料を探していた所、
以下のようなサイトを発見。
 「泥巣」 http://claybird.sakura.ne.jp/
    >FPSつくるよ! http://claybird.sakura.ne.jp/making/fps/

早速、運営元のClaybirdさんに問い合わせ、DirectXの当たり判定について
相談に乗って頂けないか聞いたところ、あっさりOKしてくれました。
幸いにもClaybirdさんもXOPSをご存知だったので、話やすかったのはもちろんですが、
わざわざXOPSの当たり判定とブロックデータの概念について、研究してくださいました。
本当にありがとうございます。
とりあえず、分かった(教えて頂いた)事を出来るだけ多くここに記しておきます。


A、nine-twoさんが「ブロックデータ」の概念を取り入れた理由
1、当たり判定の単純化と高速化
当たり判定を行う際、マップ上の全オブジェクトと判定を行うと非効率なため、
詳細な判定の前に、各オブジェクトを包む境界ボックスを生成し、荒い判定を行う。
オブジェクトが小さく分割されていると、基本的に荒い判定で除外される部分が
増え、詳細な判定の回数を減らせる。

普通のXファイルのメッシュを使っていると、この「荒い判定」で除外できる部分が
少ないが、XOPSのブロックはそれぞれが独立したオブジェクトなので、
「荒い判定」の効率が良く、速度を稼げている。

2、表示が速い。
3、データの読み込みが速い。
 (私は2・3については全く知りませんでした)

結論として、表現出来る形状を制限する代わりに処理速度を稼ぐといった
観点から、ブロックデータを採用した可能性が高い。


B、人とマップとの当たり判定の計算方法
ブロックは六面体で各面は平面だと仮定する。
(よって、面が少しでも歪めば計算から除外する)
マップとの判定は、全部レイ(見えない光線)を使って判定する。

ここからは、教えて頂いた事を参考に自分なりに考えた方法を解説。
障害物/斜面を処理した後、重力計算で地面を求める。地面か壁かを実質区別する。
リアルタイムではなく、移動時にのみ計算する。
プレイヤーの前後左右の4方向に対してそれぞれレイを生成し、
接触時、物理のボールの跳ね返り(=反射)を応用して、壁に斜めに侵入した時の
横滑りを手動算出する。
以下のサイトの「3.座標軸に平行でないものに衝突した場合」を参考に3Dに応用。
http://www5f.biglobe.ne.jp/~kenmo/program/buturi5/buturi5.html
壁の計算を行ったあとに、重力を計算し地面を求めて移動する。
・・・(自分の文が)日本語でおkな上に、Claybirdさんの方法とは全く異なる方法で計算です。
わざわざ教えて頂いたのに申し訳ないです。


C、人と人との当たり判定の計算方法
単純に垂直な円柱。


人とマップとの当たり判定の計算方法については、やっと自分で満足のできる
「仮」物が完成しました。
後日高速化・最適化に取り組みます。

最後に、Claybirdさんに感謝いたします。ありがとうございました。
category : ソフト・ツール開発 comment [1] trackback []
COMMENTS
【本文以外は任意項目です】
SUBJECT(タイトル)
NAME(お名前)
MAIL(メールアドレス)
HOME(サイトURL)
COMMENT(本文)
PASS(削除パスワード)
Secret?(管理者へのみ表示)

※スパム防止のため「Hello!」「website」「ブランド」「みかんの戦闘ブログ」
「http」などの一部キーワードを禁止しています。ご了承ください。

無題 2010.03.08 Mon 23:32 EDIT
順調に進んでいますね。
私も説明を読んで、詳しくはわかりませんが、だいたいのことは理解できました。やはりこの分野はすごく難しいですね。
がんばってください。もうこれしか言えません^^;
from koala
応援を頂けるだけでも感謝いたします。

まったく順調ではないです(笑

この辺の話は、やはり正面向いて考えるのは難解です。
3Dが数学と物理の固まりであるというのを身にしみて実感してます。
from MASTER 2010.03.09 Tue 18:17
TRACKBACKS
URL:

※過去のブログ記事は 原則として編集・修正していません。
 各記事の内容は投稿時のものであり、現在では異なる場合があります。
 最新の情報は、関係する内容について書かれた 最新の記事をご覧ください。

TOP