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

  • その27 アニメーションの根っこ:スキンメッシュアニメーション(ボーン操作)

    ホーム < ゲームつくろー! < DirectX技術編 < アニメーションの根っこ:スキンメッシュアニメーション(ボーン操作) その27 アニメーションの根っこ:スキンメッシュアニメーション(ボーン操作) RPGで主人公が走り、飛び、勝利のポーズを決める。かっこいいですよねぇ~。そういう軟質系の動きは「スキンメッシュアニメーション」と呼ばれています。これをDirect3Dで実現するために、その23あたりから地道な下積みをしてきています。この章では、いよいよアニメーションの根をなす「ボーン操作」について説明します。この章、はっきり言って試行錯誤と調査と努力の結晶です(T_T) ① ボーン登場! ○×にもちらちらと出てくる「ボーン(骨)」。スキンメッシュアニメーションの中核をなす重要な概念でして、ようやくここで堂々の登場となります。ボーンとはスキンメッシュに埋め込まれた骨のことで、この骨をぐ

  • その11 AABBと点の最短距離

    ホーム<ゲームつくろー!<衝突判定編< AABBと点の最短距離 3D衝突編 その11 AABBと点の最短距離 AABB(軸並行境界ボックス:Axis-Aligned Bounding Box)と点の最短距離を求めてみます。これは、後々のもう少し複雑な衝突に対する布石となります。 ① AABB 軸並行境界ボックスとは、ワールド空間のXYZ軸に対して各辺が平行な直方体の境界図形を言います。例えば町並みの建物などはこれで表すと便利かもしれませんし、真上から見る3DのSTGに登場する自機や敵機をこの境界ボックスで管理しても良いでしょう。何だかんだで案外使い道のある境界図形です。AABBの各辺は軸に並行なので、座標を読むのがとても簡単です。 ② まずは線分で考えて見ましょう AABBと点の最短距離を考えるための布石とするため、まずは「線分と点の最短距離」を考えて見ます。 線分をAB、空間内の点をPと

  • その47 カメラのようにキャラクタを向かせたい!

    ホーム < ゲームつくろー! < DirectX技術編 その47 カメラのようにキャラクタを向かせたい! Direct3DXの関数の中にD3DXMatrixLookAtLH関数があります。これはカメラに関係する関数で、カメラの位置とカメラが見つめたい位置からビュー行列を作成してくれます。大変便利です。 この「位置」と「視点」という考え方は、キャラクタの向きを変える方法論として大変重宝しますが、D3DXMatrixLookAtLH関数を直接使う事はできません。それはD3DXMatrixLookAtLH関数が「原点にいるZ軸方向を向くカメラの前にオブジェクトを移動させる」という「俺様」な行列を作ってしまうためです。 ここではD3DXMatrixLookAtLH関数の考え方を流用して、キャラクタがちゃんとある点に向く関数を作成してみましょう。D3DXMatrixLookAtLH関数を何となく使っ

  • その1 プログラマブルシェーダーって何?

    ホーム < ゲームつくろー! < プログラマブルシェーダ編 < プログラマブルシェーダーって何? その1 プログラマブルシェーダーって何? Direct3Dをある程度読み解けるようになったころ、ちらちらと目に付いてくる用語の1つが「プログラマブルシェーダ」ではないでしょうか?これ、気になるんですよね。でも、多くの日人にとってこの用語から内容はイメージしづらいものです。プログラマブルシェーダーって何なのでしょうか?いや、そもそも「シェーダー」って何?この章では以後の章の前知識としてこれらについて見ていくことにしましょう。 ① プログラマブルシェーダーとは? シェード「Shade」というのは「描画法」という意味です。それに「-r」が点いてシェーダー(Shader)となると「描画する人」という意味になります。ちなみにシェーダーを辞書で引くと「映像制御技師」とありました。これらからイメージすると

  • その6 HLSLの根っこ:最初の最初からやってみる

    ホーム < ゲームつくろー! < プログラマブルシェーダ編 < HLSLの根っこ:最初の最初からやってみる その6 HLSLの根っこ:最初の最初からやってみる HLSL(High-Level Shader Language:上位レベルシェーダ言語)は頂点シェーダ及びピクセルシェーダを記述できる言語です。前章までのアセンブリによるプログラムは仕組みとしては単純なのですが、やはりアルゴリズムの構築がパズルのようで、可読性の点からも厳しいものがあります。一方でHLSLはC言語風の表記方法で、はるかに読みやすいシェーダプログラムを書くことができます。これはちょうどアセンブラとC言語の関係と同じです。そう考えると世の中がHLSLに移行するのは目に見えています。 HLSLについて書かれたは沢山あります。ただ、私がアホなだけかもしれませんが、なぜだかを見てもすっと理解できないんですよ(^-^;。それ

  • その7 ゲーム遷移の実装をあれこれ考えてみる

    ホーム < ゲームつくろー! < ゲーム製作技術編 その7 ゲーム遷移の実装をあれこれ考えてみる ゲーム製作には大きく2つの面があるように思います。1つは画面に絵を効果的に出すための「画像」を取り扱う面。テクスチャを描画したりシェーダを書くのはこちらです。そしてもう1つはゲームの進行や場面変化などゲームそのものの面白さや動きを演出する「遷移」の面。両方とも欠かす事ができません。 この章では遷移の基であるswitch~caseをベースにして遷移の実装方法をあれこれ発展させてみたいと思います。試行錯誤は面白いですね。 ① たたき台switch~caseによる遷移 ゲームの大外の流れを考えます。デモが始まって、タイトルになって、プレイヤーがstartを選択したらゲームが始まる。ゲームが終わったらタイトルに戻ってきて、何もしないとデモに遷移。タイトルでexitを選択したらゲーム終了。典型的な遷移

  • その14 ドキドキしないプリコンパイル済みヘッダ

    ホーム < ゲームつくろー! < C++踏み込み編 その14 ドキドキしないプリコンパイル済みヘッダー ちょっとしたテストやサンプルの為に書き捨てるプログラムではなく、大規模なプログラムを作成するとコンパイル時間が馬鹿にならなくなってきます。商用ゲームだと、規模は様々ですが、コンシューマ機で販売するような規模のプログラムになるとフルビルドで数時間からヘタをすると1日近くかかる場合もあります。ゲームプログラマになって初めて超絶に大規模なコードに触れ、さらにそれをフルビルドした時には、それはそれは延々と続くビルドにただただ驚いたのを覚えています。 そこまで大規模とは言わないまでも、ある程度規模が大きくなるとビルド時間を短縮したくなってくるものです。そういう時、割とお手軽で効果的にビルド時間を短くしてくれる仕組みが「プリコンパイル済みヘッダー」です。 C++はコードをコンパイルしリンクすることで

  • 1