タグ

3dとRayに関するedo_m18のブックマーク (3)

  • Bounding Volume Hierarchy (BVH) の実装 - 交差判定編 - Qiita

    この記事はレイトレ合宿2アドベントカレンダーの五週目の記事です。 そして Bounding Volume Hierarchy (BVH) の実装 - 構築編 の続きにもなります。 構築編を書いたのが去年の12月なので、ゆうに半年以上経ってようやく記事が完成する形に… 構築編の続きとなるので、構築編を読んでおられない方は構築編からどうぞ。 BVH を使わない場合の交差判定 早速タイトルと違うことを言っていますが、まずは全てのポリゴンに総当たりしてチェックする方法を確認しておきましょう。 これに関してはコードを示してしまったほうがおそらくわかりやすいです。 int Intersect(const Vector<Triangle *> &polygons, const Ray ray) { for (int i=0; i<polygons.size(); i++) { Triangle *pol

    Bounding Volume Hierarchy (BVH) の実装 - 交差判定編 - Qiita
  • 任意の点がモデル表面上に存在する場合にその位置のUVを算出する - しゅみぷろ

    はじめに esprog.hatenablog.com 上記の記事で行っているように、動的にUVを算出してその部分にエフェクトを掛ける場合などでは あるワールド座標上の点pがシーン内に配置されたモデルの表面上の点であるかどうか調べる モデル表面上の点である場合は、$p$のUVを計算する といった処理が必要になります。 Unityの場合Physics.*cast系メソッドの出力用パラメータにRaycastHit構造体を渡すことでTextureCoordを得ることが出来ます。 このTextureCoordの算出はCalculateRaycastTexCoordという関数呼び出しによって実現されているようですが、INTERNAL_CALLとなっていて詳細までは見ることが出来ませんでした。 3Dテクスチャペイントを行ったりするのに必要な知識だと思い、後学のために自作してみましたよというのが今回のエン

    任意の点がモデル表面上に存在する場合にその位置のUVを算出する - しゅみぷろ
  • Bounding Volume Hierarchy (BVH) の実装 - 構築編 - Qiita

    2016/04/04追記 ここで挙げているコードを参考にする際は、以下の点に注意してください(八田さん、Pocolさん、西山さん、qさんフィードバックありがとうございます) ※コピペしてコンパイルするとコンパイルエラー出ます。ちゃんと確認していないですがstlのメソッド名が間違っているようです ※SAHによるソートが遅いです。ソートに関してはPBRTに書かれているようなので参考にしてください(std::partitionを使うらしいです) ※SHAの計算は定義にバカ正直に当てはめていますが、値の比較しかしないのでいくつかの計算が省略できます ※上記の点についての修正は、気が向いたらやります。やらないかもしれません。 この Qiita というサービスが流行っているようなので、はてダのかわりに試しに投稿してみます。 と思ったのですが、アップロード可能な画像が月間2MBとちょっと辛いので、または

    Bounding Volume Hierarchy (BVH) の実装 - 構築編 - Qiita
  • 1