タグ

ブックマーク / marupeke296.com (5)

  • その61 完全ホワイトボックスなスキンメッシュアニメーションの解説

    ホーム < ゲームつくろー! < DirectX技術編 その61 完全ホワイトボックスなスキンメッシュアニメーションの解説 スキンメッシュアニメーションは3Dのゲームの一つの大きな壁であり、一つの憧れ(?)でもあるかなと思います。かつてマルペケでもDirectX技術編その23辺りからDirectXが用意しているスキンメッシュアニメーションの解説を行いました。当時は良く分からない状態からスタートしましたので、解説もまぁ…分かったようなわからないような内容になっております(^-^;。 一通り実装して思ったのは「DirectX9が用意するスキンメッシュの仕組みを使うと質がわからなくなる!」という事でした。D3DXLoadMeshHierarchyFromX関数を使ってXファイルを読み込むと、D3DXFRAME構造体とID3DXAnimationControllerが何故か出来ていて、アニメーシ

    hadashia
    hadashia 2017/06/09
  • その7 斜めから見ると底が見えない水面(フレネル反射)

    ホーム < ゲームつくろー! < プログラマブルシェーダ編 シェーダ編 その7 斜めから見ると底が見えない水面(フレネル反射) 前章で環境マップについて説明しました。環境マップを使うとモデルの表面に背景が反射して金属のようにテッカテカになります。実装も簡単で効果が非常に高い楽しいシェーダです。 さて、背景を反射させるものは何も金属ばかりではありません。ガラスの表面や水面など、表面がツルッとしているものは大抵背景を反射します。逆に言うと私たちは「ツルッとしている」というのを背景が映り込んでいる事で認識しているわけです。 では波が一切たっていないそれこそガラスのような水面に環境マップを適用するとどうなるでしょうか?ちょっとテスト画面を御覧下さい。 縦に並ぶトーラスはいずれもy=-100.0fの位置に沈んでいて、水面はy=0.0fに広がっています。水面自体は単なる平面ポリゴンで、その表面に環境マ

    hadashia
    hadashia 2017/03/29
  • その5 0から学ぶ法線マップ

    ホーム < ゲームつくろー! < プログラマブルシェーダ編 シェーダ編 その5 0から学ぶ法線マップ ポリゴンの表面にはテクスチャが貼られる。これは3Dのゲームを作ろうと思う方はもちろんどなたでもご存知の事です。貼るという語意から、テクスチャには色が付いているんだろうなともイメージできます。しかし、DirectXの中では「色」というのは単なる数字です。特にシェーダの中に入ると、それは0.0~1.0の小数点になってしまいます。 テクスチャは何とも便利な物で、ポリゴン表面のある部分の色を示す事ができます。テクスチャの色は結局数値なのですから、これを別のもっと一般化すると「テクスチャはポリゴン表面のある部分の『値』を示す事ができる」となります。 ポリゴン表面の性質にも色々とありますが、色味以外の代表格と言うと「法線」です。ポリゴンの向きですね。これまで、法線は頂点単位でしか定義されませんでした。

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

    ホーム<ゲームつくろー!<衝突判定編 2D衝突編 その8 4分木空間分割を最適化する!(理屈編) ゲーム空間に置いたオブジェクトを総当りで衝突判定する事ははっきりと非効率だと言えます。ちょっと計算してみましょう。60FPSのゲームの1フリップ約16.6ミリ秒の内衝突判定に10%の時間余裕(1.66ミリ秒)を与えられたとします。もし1000回の衝突判定に1ミリ秒かかるなら(1000回/msec)、判定回数は1660回以下に抑えないと間に合いません。総当りだとこれは58オブジェクトくらいで限界です。判定時間が200回/msecならオブジェクトはたった18個で限界。これはどう考えても節約が無いとゲームになりません。 オブジェクトの全ての位置が決まった時、自分とぶつかる可能性があるのは自分の周りのオブジェクトだけです。遠い所にある物は判定する必要すらありません。そこで「空間をある程度制限してその中

  • その2 ShaderLabでUnityシェーダの下地作り

    ホーム < ゲームつくろー! < Unity/Shader編 Shader編 その2 ShaderLabでUnityシェーダの下地作り Unityには「固定機能シェーダ」「サーフェイスシェーダ」そして「頂点/フラグメントシェーダ」という3種類のシェーダタイプがあり、そのどれもがShaderLabというUnity独自のフォーマット下で記述されます。 ShaderLabのリファレンスはこちらになります: Unity.ShaderLab sintax: http://docs.unity3d.com/Documentation/Components/SL-Shader.html ① ShaderLabの役割 ShaderLabはUnityとシェーダコードとの仲立ちをするコードです。シェーダは何か入力情報が無いと動かす事ができませんが、その「入力情報」はUnityGUIやスクリプトで与えます。マ

  • 1