タグ

Cgとalgorithmに関するedo_m18のブックマーク (4)

  • その15 8分木空間分割を最適化する!

    ホーム<ゲームつくろー!<衝突判定編 3D衝突編 その15 8分木空間分割を最適化する! 空間分割はオブジェクト同士の衝突や不必要な描画を除くなどパフォーマンスの最適化に必須の技術です。2D衝突編その8とその9では、2D平面を分割する4分木空間分割の最適化と実装をしました。同じ考え方は3D空間の分割にも十分に活用できます。 3Dの空間を分割する典型が8分木空間分割(Octree)です。空間分割の方法は、4分木とお話がかぶりますが、まず一番大きな空間(ルート空間)を定義します。3Dの場合これは直方体となります。分割は各辺のど真ん中を割ります。縦横高さそれぞれで分けるので、1回の分割で8つの小空間が出来上がります。これで親であるルート空間の下に8つの小空間が所属する事になります。後は空間を分割するたびに樹状に所属が広がっていきます。 オブジェクトは境界図形に包まれて、8分木内にある境界図形をす

  • パーリンノイズを理解する | POSTD

    この記事の目的はKen Perlinの 改良パーリンノイズ を分かりやすく分析し、お伝えすることです。記事内のコードはC#で書かれており、自由にご利用いただけます。最終形のみを見たい方は、 こちらから最終的なソースをご確認ください 。 パーリンノイズは手続き的なコンテンツ生成によく使われる、非常に強力なアルゴリズムです。ゲームや、映画などの視覚媒体に特に有用です。パーリンノイズの開発者であるKen Perlinは、 この最初の実装でアカデミー賞を受賞しました 。彼が2002年に発表した 改良パーリンノイズ について、私はこの記事で掘り下げていきます。パーリンノイズは、ゲーム開発においては、波形の類や、起伏のある素材、テクスチャなどに有用です。例えば手続き型の地形(Minecraftのような地形はパーリンノイズで生成できます)、炎のエフェクト、水、雲などにも使えます。これらのエフェクトのほと

    パーリンノイズを理解する | POSTD
    edo_m18
    edo_m18 2016/11/10
    パーリンノイズの詳しい解説。改めて見てみたらまた新たな気づきがあった。
  • 交差判定_3DCG - FreeStyleWiki

    レイトレース処理での一番大事な部分、交差判定について記述します。ここではレイ(視点位置と視線ベクトルを持つ)とポリゴン(三角形)との交差判定になりますね。 単純な交差判定 三次元空間上のポリゴンをX/Y/Z軸を圧縮する形で2次元に投影してしまいます。これは、X-Y平面への投影・X-Z平面への投影・Z-Y平面への投影の3つの投影があります。一番確実なのは(誤差を少なくするのは)それぞれの面に投影した場合の面積を計算して、一番面積の大きい面に投影するとするといいです。 上図の場合は、X-Z平面に投影しています(三角形の頂点座標のうち、X/Z成分のみを取り出します)。 また、レイの方向ベクトルと面の法線ベクトルにより「直線と面の交点位置」を求めます(これは3次元空間での処理)。このときに交点が求まります。が、三角形内に内包されているかは分かりません。これを、X-Z平面に三角形を投影している場合は

  • GJK アルゴリズム 説明 - ぽんこつでばいす

    結構立ちましたが、GJKについてようやっとまとめれたのでアップしたいと思います。 同じように悩んだ方の手助けになればいいかな?って思います。 実装は簡単なんですけど、この記事用のサンプルは組んでません! ヒマが出来て組めたらアップします。 GJK アルゴリズムは凸多面体同士が重なっているかどうかを調べるアルゴリズムです。 どれだけめり込んだか?を調べるアルゴリズムは Johnson's Distance アルゴリズムっていう別のアルゴリズムになりますが、 やっていることは、非常に良く似ています。 まず、GJK アルゴリズムの前提になっている、ミンコフスキー差について解説します。 ミンコフスキー差というのは、2つの物体の差の Swept Volume になります。 要するに、物体AとBがあった時に、B を原点で反転したもの(原点対称)を物体 A の周り(表面)で 移動させたときに生じる領域の

  • 1