e.blog

主にUnity/UE周りのことについてまとめていきます

数学

バイトニックソートの実装を理解する

概要 以前書いた粒子法を用いた流体シミュレーションをさらに発展させ近傍探索を行って最適化をしています。 その中で使っている『バイトニックソート』というソートについてまとめたいと思います。 本記事は近傍探索を実装する上でのサポート的な記事です。…

Generalized Perspective ProjectionをUnityで実装する

はじめに 元記事は、以前自分が英語で書いたものの日本語訳版になります。(自分で書いた英語を翻訳するという初体験w) medium.com 概要 今回のこの記事は、Generalized Perspective ProjectionをUnityで実装するための解説記事です。 これが意味するのは…

Unityで流体シミュレーション ~粒子法編~

はじめに 以前に、格子法を用いた2次元の流体シミュレーションについて概念編と実装編に分けて2つの記事を書きました。 しかし格子法は、その定義領域の範囲を越えてしまうと計算ができなくなってしまうという問題があります。特に今回は3Dに拡張し、AR/VR内…

揚力を計算して滑空する

概要 今モックで作成しているVRコンテンツに、滑空の要素を入れたかったので揚力の計算について調べてみたのでそのメモです。 ちなみに適当に飛行機っぽい形状を作って適用した動画はこんな感じです↓ Unityでグライダー風のものを作ってみた。 https://t.co/…

UnityのCamera#ScreenToWorldPointを自前で計算してみる

概要 Screen Spaceの座標をシーンのワールド座標に変換して、その位置になにかする、というのはよくある処理だと思います。 (例えば画面をタップしたらその先にレイを飛ばしてなにかする、とか) そのあたりは当然、Unityは準備してくれているのだけど、中…

Unityの行列の扱いとベクトルのオーダー周りについてまとめておく

概要 自分で直に行列変換周りの処理を書くときに、掛ける順番やオーダー周りについていつも混乱するのでまとめておきます。 座標系の向き これは、行列のオーダーには直接関係はありませんがよく混乱するので書いておきます。 Unityでは「左手系」の座標系を…

点と凹多角形の内外判定を行う

概要 判定の考え方 Crossing Number Algorithm Winding Number Algorithm 角度を利用したアルゴリズムの実装解説 角度を使ったアルゴリズムのソースコード 平面法線を使って回転の方向を判定 浮動小数点誤差などを考慮 辺との交差を利用したアルゴリズムの実…

Unityでパーリンノイズの実装

概要 今回はパーリンノイズについて書きたいと思います。 以前実装して使ったりしていましたが、しっかりと理論を理解して使ってはいなかったので、改めて、という感じです。 Wikipediaから引用させていただくと、 パーリンノイズ(英: Perlin noise)とは、…

頂点座標とUV座標から接ベクトルを求める

概要 接ベクトル空間 接平面 頂点にある5要素から接ベクトルを求める テクスチャ座標のUV値の変化を観察する ローカル座標をUV座標で表す 実装コード パースペクティブコレクト パースペクティブコレクトを用いるとき 概要 法線マップを利用する際に使われる…

CustomRenderTextureを使って波紋エフェクトを作る

概要 ダウンロード CustomRenderTextureとは CustomRenderTexture用のcgincがある CustomRenderTexture用シェーダを書く 波動方程式を解く 波動方程式を解くシェーダ(for CustomRenderTexture) CustomRenderTextureのセットアップ CustomRenderTextureの生…

OBB(Oriented Bounding Box)を計算する

概要 OBBとは 主成分分析とは 固有値・固有ベクトルとは 分散共分散行列とは 分散 共分散 固有ベクトルを求める jacobi法(ヤコビ法)で固有ベクトルを求める C#コード 概要 今回はOBB(Oriented Bounding Box)についてのまとめです。 今実装している中でボ…

クォータニオン(回転)についてメモ

概要 クォータニオンとは クォータニオンの各要素 クォータニオンTips 内積 回転軸 ワールド空間での回転クォータニオンをローカル空間に変換する クォータニオンのSlerp オイラー角からクォータニオンを求める クォータニオンからオイラー角を求める 回転の…

UnityのCompute ShaderでCurl Noiseを実装(衝突判定編)

概要 今回は「衝突判定編」です。 前回の「流体編」の続編です。 edom18.hateblo.jp さて、今回は論文で発表されたカールノイズの『衝突判定』について書きたいと思います。 実際に動いている動画↓ やったー。カールノイズの衝突判定もちゃんと動いた。 pic.…

TransformのLookAtをUnity APIを使わずに書く

概要 仕事でLookAtを、Unity APIを使わずに書くことがあったのでメモ。 実行した結果。ちゃんとCubeを注視し続けます。 サンプルコード 実装したサンプルコードは以下。 このスクリプトをカメラに貼り付けて、ターゲットを指定すると常にそれを視界に捉えた…

UnityのCompute ShaderでCurl Noiseを実装(流体編)

概要 ソースコード 今回の記事で書くこと 大まかな解説 非圧縮性を確保する 用語解説 ベクトル場 カール(Curl・rot) ramp関数 本題 ノイズを生成する カールノイズのカーネル 次回予告 - 衝突判定 概要 今回は「流体編」と題しました。 というのも、発表さ…

視錐台とAABBとの交差判定

概要 とあるオブジェクトが「カメラに映る対象か」というのを知りたいケースはあると思います。 また、通常のカメラだけでなく、「視界」を表した視錐台を定義してその中にオブジェクトが含まれるか、というのもあるとありがたい機能でしょう。 (例えば敵AI…