タグ

ブックマーク / qiita.com/edo_m18 (7)

  • アセンブラに手を出してみる - Qiita

    がっつりとやるつもりはありませんが、もしかしたら読む必要が出るかもしれないので少しだけお勉強。 もともと仕組みを知ることが好きなので読み始めると結構面白いです。 (ほんとはarmのほうが知識としては必要なんだけど、それはまた後日調べる) はじめに 今回まとめているのはx86とx86_64アーキテクチャに関するものです。 armなどはまた異なったものとなります。 また、構文もいくつかあるようで、それぞれ AT&T構文、 Intel構文というようです。 構文の違い %raxなどのように、レジスタに%がついていたりするのはAT&T構文です。 ついていないものはIntel構文です。 また、セクションの定義など細かいところで色々と差異があるようです。 ソース・ディスティネーション 上記構文の中で特に覚えておかないと混乱するのがこの「ソース」と「ディスティネーション」の順番です。 例えば、raxレジス

    アセンブラに手を出してみる - Qiita
  • [Unity] 任意の無限遠の平面とベクトルとの交点を求める - Qiita

    通常の Plane オブジェクトとの交差判定ならレイキャストを使って表現するのが手っ取り早いですが、例えば擬似的に、無限遠に存在する平面に対してどこを指し示しているか、というのが分かると便利そうです。 ということで、その実装です。 (こちらの記事を参考にしました) 上記の記事から引用させてもらうと、式は以下になります。 図解すると以下。 ここで $n$ は平面の法線、 $x$ は「平面上の任意の点」、 $x_0$ は起点となる点、$t$ はいわゆる「媒介変数」。$m$ は起点から平面に向かうベクトル、そして $h$ は符号付き距離となります。 Unityベースのプログラムで言えばそれぞれは以下の意味となります。 $n$ ... 法線。GameObject を利用するなら transform.forward などを利用する。(もちろん、 new Vector3 してもいい) $x$ ...

    [Unity] 任意の無限遠の平面とベクトルとの交点を求める - Qiita
  • [3D] 三角形と線分の交差判定(Raycast) - Qiita

    いわゆる Raycast ですね。 線分が三角形、つまりポリゴンと交差しているかを判定することで、例えば3D空間上のオブジェクトをマウスで選択したり、あるいはオブジェクトが接触しているか、などなど様々な判定をすることができます。 今回はこの「三角形と線分との交差判定」について調べてみたのでそのメモです。 理論 今回参考にしたのは「Tomas Mollerのアルゴリズム」です。比較的高速で一般的な手法のようです。 概要についてはこちらの記事を参考にしました。 なにを求める? 各式や、計算方法などは見ていればなんとなく分かりますが、これがなにを求めているのかが最初は分かりませんでした。 行っていることは最終的にはごく簡単な1次関数のグラフに落としこむものでした。 具体的には以下の画像を見てください。 考え方 レイをある方向に飛ばします。 仮にこのレイが三角形面と交わると仮定します。 すると上記

    [3D] 三角形と線分の交差判定(Raycast) - Qiita
  • [GLSL] レイマーチング入門 vol.1 - Qiita

    この記事は「GLSL Advent Calendar 2016」の 17日目 の記事になります。 前日までdoxasさんの独壇場でとても高度な内容だったのに、その後にこの記事をアップするのはとても気が引けましたが勇気を出してアップしますw 概要 そろそろレイトレーシングに挑戦する時期かなということで、レイトレの一種である「レイマーチング」について再入門してみたいと思います。(前に少しだけやって放置してた) ※ ちょっと長くなりそうなので、今回の記事はvol.1としました。 レイトレとは レイトレ(レイトレーシング)とは、Wikipediaを引用させてもらうと以下のような意味になります。 レイトレーシング(ray tracing)は、波の線(伝播経路)を追跡することで、ある点において観測される画像・音像などをシミュレートする計算手法である。 レイトレーシングを行う対象は「光線」が基でありこ

    [GLSL] レイマーチング入門 vol.1 - Qiita
  • GLSLについてのメモ - Qiita

    min(max(x, a), b)を返す。なお、HLSLなどで実装されている saturate 関数は、clamp(a, 0.0, 1.0) によって実現できる

    GLSLについてのメモ - Qiita
  • ちょっとしたeasingの解説 - Qiita

    function easing(time, begin, change, duration) { var s = 2.5; if (t / d >= 1) { return b + c; } return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b; } //分かりやすく分解 var e = t / d - 1; c * (e * e * (3.5 * e + 2.5) + 1) + b; //+ bはスタートからの値を求めるため、実際にイージングを行なっているのはその前の式。 //かつ、cが最終変化量でイージングの性質として0 -> 1に変化する必要があるから、 //実質イージングを成しているのはcとbを抜いた部分。 (e * e * (3.5 * e + 2.5) + 1) //さらに、最後に+1されているため、その前の部

    ちょっとしたeasingの解説 - Qiita
  • BlenderでRigifyを使う方法 - Qiita

    最近、Blenderでアニメーションをつける練習をしているので、それのメモです。 主に人型のアニメーションです。 プラグインを有効にする 最近のBlenderのversionでは、どうやら人体のriggingを行うのに汎用的なものがプラグインとしてすでに設定されています。が、デフォルトはオフになっているので、まずはそれをオンにします。 infoのメニューから、[File] > [User Preferences]を選び、下記の画像の部分をクリックしてRigging: Rigifyを有効にします。 Rigging用のArmatureを追加する このプラグインをオンにすると、infoのメニューの[Add] > [Armature] > Human(Meta-Rig)というのが増えています。(デフォルトだとSingle Boneしか項目がない) これを追加します。すると、すでに人の形に近い構成に

    BlenderでRigifyを使う方法 - Qiita
  • 1