パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

awkで実装されたFPS」記事へのコメント

  • by Anonymous Coward

    MSXの激走ラビリンスみたいやね
    見た感じレイキャスティングとか言うの必要か?コレ
    実質2次元に見えるので、左右でスィープして遠いところは短い棒、
    近いところは長い棒を書けばこんな感じに表示できるっしょ
    会社の研修の時にCASLでこんな感じの作ったわ

    • 紛らわしいのですが、
      ストーリーに掲げられているリンク先で説明されている「レイキャスティング法」は、
      ボリュームレンダリングを行うアルゴリズムの一つで、
      一言で説明すれば「レイトレーシングを使ってボリュームを描画する」というものです。
      例えば、「半減距離1000の半透明ボリュームを、レイが長さ500だけ横切った」場合には、
      「そのボリュームの色を25%、そのボリュームの先にレイを飛ばして得た色を75%、ミックスした色」が
      そのレイで得られる色になるってことです。でも、それは今回のストーリーとは関係ありません。

      一方、FPSに使われている「レイキャステ

      • 説明が微妙に間違っていると思います

        まず光線に沿って空間を走査する方法を
        レイキャスティング法やレイトレーシング法と呼びます
        https://en.wikipedia.org/wiki/Ray_casting [wikipedia.org]

        呼び方が2つあるのは,
        光線(Ray)を空間に飛ばす(cast)と捉えればレイキャスティング(ray casting)
        光線で空間を走査する(trace)と捉えると レイトレーシング(ray tracing)と呼ばれるからです.やっていることは同じです

        この方法を使って
        コンピュータグラフィックスの分野では,ボリュームレンダリングという処理を実現するアルゴリズム
        ゲームの分野では,FPS用のマップ表示アルゴリズム
        が考案されています

        つまり,前者は形状データを含む空間を光線で走査していて,
        後者は壁で構成されたマップを含む空間を光線で走査していることになりますが
        やっていることは大差ありません.

        たとえば,前者のボリュームレンダリングの特殊な場合,
        つまり空間が2Dで,半透明の壁が無くて,かつその空間を水平に走査する場合のアルゴリズムを考えると
        それはDOOM時代のFPSのアルゴリズムと同じものになります.

        親コメント
        • 一般的には

          レイキャスティング(広義): レイ(光線)と物体などと交差判定を行うという3次元処理についての一般用語。

          レイキャスティング(狭義): 画面の画素ごとに「視点から物体に向けて」レイを飛ばすことで隠面消去を行う、レンダリング(3D空間の2D画像生成)アルゴリズム。論文発表は1968年。

          レイトレーシング: レイキャスティング(狭義)を拡張したレンダリングアルゴリズム。論文発表は1979年。レイキャスティング(狭義)では、画素ごとに1本のレイを飛ばすだけですが、反射・屈折・影などで再帰的にレイを増やすことで、よりリアルな画像生成ができます。反射屈折のないレイトレーシングはレイキャスティング(狭義)と同じなので、レイキャステイング(狭義)と同一視されることがある。

          レイキャスティング(ボリューム): レイトレーシングを用いたボリュームレンダリングアルゴリズム。正しくはボリュームレイキャスティング法 [wikipedia.org]という名前になりますが、ボリュームレンダリング業界では「レイキャスティング」とだけ呼ばれる場合が多いです。

          レイキャスティング(FPS): レイキャステイング(広義)を利用した「垂直な壁と水平な床しかない」という限定状況での高速レンダリングアルゴリズム。このアルゴリズムのキモはレイキャスティング(広義)を使っていることではなく「水平方向1ラインの最近面判定だけで2次元描画できる」という点。特にアルゴリズム名は付いてないため「レイキャスティング」と呼ばれる場合が多い。

          という感じになるかと。

          「レイキャスティング(狭義)」「レイキャステイング(ボリューム)」「レイキャスティング(FPS)」は、どれも「レイキャスティング(広義)」の応用ですが、それぞれのアルゴリズムのキモとなる部分は全然別。
          以上を踏まえた上で、

          ストーリー本文で、「レイキャスティング(ボリューム)」のページを参照してレイトレとの違いを疑問に思っているし、
          親コメントでは「レイキャステイング法なんか使わなくても…」と言いながら、その後に「レイキャスティング(FPS)」のアルゴリズムについて説明をしてたりするんですから、
          それがどれも「レイキャスティング(広義)」に属するアルゴリズムだからといって「やっていることは大差ありません」なんて書いてもなんの意味もないでしょう。

          そこで、その差の部分について強調して言及したのが元コメントになります。細かい不正確さがあるのは覚悟の上。

          親コメント

「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」

処理中...