コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
未作成ページ
おまかせ表示
ヘルプ
MonoBook
検索
検索
ログイン
個人用ツール
ログイン
ログアウトした編集者のページ
もっと詳しく
投稿記録
トーク
「
レイキャスト
」を編集中
ページ
議論
日本語
閲覧
編集
ソースを編集
履歴表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
編集
ソースを編集
履歴表示
全般
リンク元
関連ページの更新状況
特別ページ
ページ情報
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
'''レイキャスト'''([[英語]]:ray-cast)とは、直訳すると「光(ray)を投げる(cast)」という意味であり、主に3Dの衝突判定や、2Dを3D風にレンダリングするのに使われる[[アルゴリズム]]である。 こいつに光の反射の処理を入れると[[レイトレーシング]]になるが、光の反射の処理を入れると[[ソースコード]]は100倍くらいに跳ね上がるので実質別物である。 == 衝突判定 == レイキャストでは現在位置から移動予定先まで見えない線(レイ)を発射して、その線上に衝突する物体があるかを判断する[[アルゴリズム]]である。「移動先に物体があるか」を算出するものであるため静止した物体の衝突判定には使えない。 [[ファイル:レイキャスト1.png|none]] レイキャスト1回あたりの処理はそんなに重たいものではないが、これを3Dモデルで[[頂点]]の数だけやるととんでもない計算量になる。 頂点ではなく[[ポリゴン]]の中心からレイを伸ばせば1/3にはなるがそれでも凄い計算量である。 [[物理演算エンジン]]などではクソ真面目に衝突判定を行う際に用いられており、物理演算エンジンが重い理由のほとんどはこれである。 上記のうち丸印がレイキャストの調べる間隔であり、この間隔を大きくしすぎると物体を突き抜けやすくなり、この間隔を狭くすると計算量が増えて処理が重くなる。 その両者の欠点を埋めるべく、現在位置から遠ざかるにつれ間隔を少しづつ広げていくという手法もある。 [[ファイル:Ray-casting.png|none]] 処理を軽くすべく、右下から銃の生えているFPSなどの[[ゲーム]]では、銃弾の衝突判定はレイキャスト、キャラの衝突判定は[[AABB]]と使い分けているケースも見受けられる。また某[[オープンソース]]な[[物理演算エンジン]]の[[ソースコード]]では、まず[[AABB]]で大雑把な判定を行い、次にレイキャストを行うという2段階処理になっているものもあった。 == 2Dを3Dっぽく描画 == レイキャストは重たいというイメージがあるが、1フレーム内で大量の頂点から大量に計算するから重たいのであって、1回の処理自体はそんなに重たいものではない。 そこでレイキャストを使い2Dマップ(2次元配列)から壁の抽出(添字算出)と、レイと壁の衝突角度を算出し、それを3D風に描画すると一世を風靡した[[ゲーム]]「[[Wolfenstein 3D]]」や「[[DOOM]]」になる。現在のような[[ポリゴン]]を使った本格的な3Dゲームが大流行するより前の時代にに登場した「2Dを3D風に表現」する手法である。 [[ファイル:レイキャスト2.png|none]] == ボリュームレンダリング == 上記では2次元配列から3D風を生成する事例であるが、これに1軸を加え3次元配列から3D空間を描画すれば[[ボリュームレンダリング]]となる。 一世を風靡した「[[マインクラフト]]」である。 視点となる「点」と、その先にあるスクリーンとなる「面」を決め、その視点からスクリーン上の1点を結ぶ線(これをレイという)のさらに先の延長線上にある[[ボクセル]]の値を次々と抽出する。レイキャスティングで得られた値を用いて、[[最大値]]や[[最小値]]、[[平均値]]、[[中央値]]などといった値に加工し、最終的な映像として[[レンダリング]]することを[[ボリュームレンダリング]]という。 一見すごそうに思えるが、やっていることは前述の2Dの3D風描画にZ軸の概念を加えただけである。 単純に重い。 [[category: 3DCG]] [[category: 衝突判定]] [[category: アルゴリズム]]
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)
本文の横幅制限を有効化/無効化