Direct3D (Managed DirectX) Puslapio sukūrimo data : 2020 m. rugsėjo 16 d., trečiadienis Šiuo metu peržiūrimas puslapis nepalaiko pasirinktos rodymo kalbos. × Direct3D を使用するための基本設定 Direct3D を使用するための基本設定とプログラムの基本コードの説明をしています。ここではまだ Direct3D らしい処理はしていません。 2020 m. rugsėjo 16 d., trečiadienis Direct3D の初期化と基本処理 Direct3D の初期化とそれに関係する基本処理の説明を行っています。これが今後のTips の基礎部分になります。 2020 m. rugsėjo 16 d., trečiadienis 文字の表示 本来はポリゴンの作成などからはじめるのが普通なのですが、情報を知るのに文字が表示されたほうが都合がいいので、Direct3D 上で文字を表示させたいと思います。 2020 m. rugsėjo 16 d., trečiadienis 2Dポリゴンの表示 Direct3D なので3Dをやるべきなのですが、ちょっと説明することが多くなってしまうので、最初は認識しやすい2Dポリゴンを使って説明します。 2020 m. rugsėjo 16 d., trečiadienis 頂点バッファを使用した2Dポリゴン 表示される内容は前回とほとんど同じですが、今回はポリゴンを表示するのに頂点バッファというものを使用しています。 2020 m. rugsėjo 16 d., trečiadienis 3Dポリゴンの描画 いよいよ3D上でポリゴンを描画します。見た目は前回と似ていますが、きちんと3D空間上にポリゴンを配置しています。 2020 m. rugsėjo 16 d., trečiadienis 四角形ポリゴンの描画 今まで三角形のポリゴンをひとつだけ描画してきましたが、今回は四角形のポリゴンを描画してみます。実は四角形ポリゴンはかなり利用頻度が高いので作れるようにしておくと便利です。 2020 m. rugsėjo 16 d., trečiadienis テクスチャーの貼り付け ゲームなどではこのテクスチャーは必ずといっていいほど使用されますし、よりリアルなモデルとして見せるために有効に活用されます。 2020 m. rugsėjo 16 d., trečiadienis キーボードからの入力 ゲームなどではキーボードなどを使ってユーザーが何らかの入力を行うはずです。今回はキーボードの入力を受けられるようにしたいと思います。 2020 m. rugsėjo 16 d., trečiadienis カメラの操作 キー入力が出来るようになったので、キーボードでカメラを操作してみたいと思います。カメラは原点を中心に回転するようになっています。 2020 m. rugsėjo 16 d., trečiadienis マウスからの入力 せっかくキーボードの入力が出来るようになったので、今度はマウスでカメラを操作したいと思います。マウスの左ボタンを押しながら上下左右に移動させるとカメラが回転します。 2020 m. rugsėjo 16 d., trečiadienis インデックスバッファを使用したボックスの描画 効率よく頂点データを作成するために「インデックスバッファ」というものを使用してみたいと思います。 2020 m. rugsėjo 16 d., trečiadienis ライトで陰を付ける 今まで頂点の色のみで色をつけていましたが、今回は「ライト」を使用してポリゴンに陰をつけてみました。ライトは時間によって移動するようにしたので、それに沿って陰も変化します。 2020 m. rugsėjo 16 d., trečiadienis Xファイルからモデルデータ読み込み 「Xファイル」を読み込むことによって、簡単に複雑な形状のモデルを表示させることができるようになります。 2020 m. rugsėjo 16 d., trečiadienis XYZ軸のライン描画 原点(0.0, 0.0, 0,0)からそれぞれ「X」「Y」「Z」方向へ線を描画して軸を表示するようにします。こうすることで位置の感覚がわかりやすくなると思います。 2020 m. rugsėjo 16 d., trečiadienis モデルの移動 今回はモデルを移動させます。ゲームとかでもキャラクターが移動できなかったら話になりません。キーボードの「↑↓←→」で XZ 方向にモデルが移動します。 2020 m. rugsėjo 16 d., trečiadienis モデルの回転 前回は「移動」を行いましたが、向きが変わっていませんでした。もちろん移動する方向によって向きが変わらないとおかしいので、今回はモデルを回転させることにします。 2020 m. rugsėjo 16 d., trečiadienis モデルの拡大縮小 今回はモデルを各XZ方向に拡大してみたいと思います。これを使えば爆発などのエフェクトシーンなどに柔軟に対応することができます。 2020 m. rugsėjo 16 d., trečiadienis 移動、回転、拡大縮小の掛け合わせ 前回までは「移動」「回転」「拡大縮小」をそれぞれ個別に処理していました。今回はそれらを同時に行えるようにマトリックスを掛け合わせて計算させてみます。 2020 m. rugsėjo 16 d., trečiadienis フルスクリーン表示 市販PCゲームでよく見られる全画面表示を行います。臨場感あふれるゲームにするためにはとても効果的です。 2020 m. rugsėjo 16 d., trečiadienis SDK の標準メッシュを作成 今までオリジナルのモデルデータを使用していましたが、データがかさばるので、SDKの「Mesh」クラスで簡単に作成できるメッシュを使用してみることにします。 2020 m. rugsėjo 16 d., trečiadienis スプライトによるスクリーンへの画像描画 ゲームなどでパラメータやキャラクターの顔などの画像がスクリーンの特定の位置に張り付いているのを見かけると思います。これを「スプライト」というものを使用してそれを実現しています。 2020 m. rugsėjo 16 d., trečiadienis 頂点データによる半透明処理 ポリゴンを頂点データの色指定によって半透明で表示されています。きちんと後が透けていることが分かると思います。 2020 m. rugsėjo 16 d., trečiadienis マテリアルによる半透明処理 マテリアルを使用した半透明処理を行います。今回は簡単な距離判定を行い、反対側から見ても問題なく透けて見えるようにしています。 2020 m. rugsėjo 16 d., trečiadienis クォータニオンによる回転 クォータニオン(Quaternion)」を使用することにより、回転を合成できたり、ジンバルロックの回避、球面補間など応用すればとても使いやすいものだと実感できると思います。 2020 m. rugsėjo 16 d., trečiadienis デバイスの消失 デバイスが使えなくなってしまう状況になっても正常に状態を保てるように、デバイスの状態を確認するプログラムを組み込んでみます。 2020 m. rugsėjo 16 d., trečiadienis 様々な 2D ラインの描画 スクリーン座標(2D)でラインを表示させるようにしています。 2020 m. rugsėjo 16 d., trečiadienis ポイントスプライト ポイントスプライトを使用すると非常に綺麗なエフェクトを表現することが出来ます。今回は上空から雪が舞い落ちてくるような神秘的なエフェクトを実現してみました。 2020 m. rugsėjo 16 d., trečiadienis 頂点フォーマットの変更と頂点データの設定 メッシュは作成した後でも、頂点フォーマットの変更や頂点データの設定、取得を行うことが出来ます。今回は、「位置」「法線」しか持たないメッシュに「ディフューズ色」を追加して、各頂点に色を設定していきます。 2020 m. rugsėjo 16 d., trečiadienis 球と球の衝突判定 3Dゲームでよく使われる衝突判定のひとつです。計算がとても単純で非常に高速に処理できます。モデルの形状が球に近いほど正確な判定が行えます。 2020 m. rugsėjo 16 d., trečiadienis ボックスとボックスの衝突判定 衝突判定の中では比較的高速な判定が出来る方法です。回転しない箱型物体、例えばキャラクター以外の家とか置物とかにとても有効です。 2020 m. rugsėjo 16 d., trečiadienis モデルの二階層構造 ロボットなどのようにいくつかのパーツに分かれているようなモデルは、手や足などのパーツが親の動きに従って一緒に動作しています。また、手や足などは単独で回転したりします。これは「親子関係」という構造化を実現することにより可能になります。 2020 m. rugsėjo 16 d., trečiadienis モデルの三階層構造 前回は「モデルの二階層構造」について説明しましたが、今回は「三階層構造」について説明します。 2020 m. rugsėjo 16 d., trečiadienis
Direct3D を使用するための基本設定 Direct3D を使用するための基本設定とプログラムの基本コードの説明をしています。ここではまだ Direct3D らしい処理はしていません。 2020 m. rugsėjo 16 d., trečiadienis
Direct3D の初期化と基本処理 Direct3D の初期化とそれに関係する基本処理の説明を行っています。これが今後のTips の基礎部分になります。 2020 m. rugsėjo 16 d., trečiadienis
文字の表示 本来はポリゴンの作成などからはじめるのが普通なのですが、情報を知るのに文字が表示されたほうが都合がいいので、Direct3D 上で文字を表示させたいと思います。 2020 m. rugsėjo 16 d., trečiadienis
2Dポリゴンの表示 Direct3D なので3Dをやるべきなのですが、ちょっと説明することが多くなってしまうので、最初は認識しやすい2Dポリゴンを使って説明します。 2020 m. rugsėjo 16 d., trečiadienis
頂点バッファを使用した2Dポリゴン 表示される内容は前回とほとんど同じですが、今回はポリゴンを表示するのに頂点バッファというものを使用しています。 2020 m. rugsėjo 16 d., trečiadienis
3Dポリゴンの描画 いよいよ3D上でポリゴンを描画します。見た目は前回と似ていますが、きちんと3D空間上にポリゴンを配置しています。 2020 m. rugsėjo 16 d., trečiadienis
四角形ポリゴンの描画 今まで三角形のポリゴンをひとつだけ描画してきましたが、今回は四角形のポリゴンを描画してみます。実は四角形ポリゴンはかなり利用頻度が高いので作れるようにしておくと便利です。 2020 m. rugsėjo 16 d., trečiadienis
テクスチャーの貼り付け ゲームなどではこのテクスチャーは必ずといっていいほど使用されますし、よりリアルなモデルとして見せるために有効に活用されます。 2020 m. rugsėjo 16 d., trečiadienis
キーボードからの入力 ゲームなどではキーボードなどを使ってユーザーが何らかの入力を行うはずです。今回はキーボードの入力を受けられるようにしたいと思います。 2020 m. rugsėjo 16 d., trečiadienis
カメラの操作 キー入力が出来るようになったので、キーボードでカメラを操作してみたいと思います。カメラは原点を中心に回転するようになっています。 2020 m. rugsėjo 16 d., trečiadienis
マウスからの入力 せっかくキーボードの入力が出来るようになったので、今度はマウスでカメラを操作したいと思います。マウスの左ボタンを押しながら上下左右に移動させるとカメラが回転します。 2020 m. rugsėjo 16 d., trečiadienis
インデックスバッファを使用したボックスの描画 効率よく頂点データを作成するために「インデックスバッファ」というものを使用してみたいと思います。 2020 m. rugsėjo 16 d., trečiadienis
ライトで陰を付ける 今まで頂点の色のみで色をつけていましたが、今回は「ライト」を使用してポリゴンに陰をつけてみました。ライトは時間によって移動するようにしたので、それに沿って陰も変化します。 2020 m. rugsėjo 16 d., trečiadienis
Xファイルからモデルデータ読み込み 「Xファイル」を読み込むことによって、簡単に複雑な形状のモデルを表示させることができるようになります。 2020 m. rugsėjo 16 d., trečiadienis
XYZ軸のライン描画 原点(0.0, 0.0, 0,0)からそれぞれ「X」「Y」「Z」方向へ線を描画して軸を表示するようにします。こうすることで位置の感覚がわかりやすくなると思います。 2020 m. rugsėjo 16 d., trečiadienis
モデルの移動 今回はモデルを移動させます。ゲームとかでもキャラクターが移動できなかったら話になりません。キーボードの「↑↓←→」で XZ 方向にモデルが移動します。 2020 m. rugsėjo 16 d., trečiadienis
モデルの回転 前回は「移動」を行いましたが、向きが変わっていませんでした。もちろん移動する方向によって向きが変わらないとおかしいので、今回はモデルを回転させることにします。 2020 m. rugsėjo 16 d., trečiadienis
モデルの拡大縮小 今回はモデルを各XZ方向に拡大してみたいと思います。これを使えば爆発などのエフェクトシーンなどに柔軟に対応することができます。 2020 m. rugsėjo 16 d., trečiadienis
移動、回転、拡大縮小の掛け合わせ 前回までは「移動」「回転」「拡大縮小」をそれぞれ個別に処理していました。今回はそれらを同時に行えるようにマトリックスを掛け合わせて計算させてみます。 2020 m. rugsėjo 16 d., trečiadienis
SDK の標準メッシュを作成 今までオリジナルのモデルデータを使用していましたが、データがかさばるので、SDKの「Mesh」クラスで簡単に作成できるメッシュを使用してみることにします。 2020 m. rugsėjo 16 d., trečiadienis
スプライトによるスクリーンへの画像描画 ゲームなどでパラメータやキャラクターの顔などの画像がスクリーンの特定の位置に張り付いているのを見かけると思います。これを「スプライト」というものを使用してそれを実現しています。 2020 m. rugsėjo 16 d., trečiadienis
頂点データによる半透明処理 ポリゴンを頂点データの色指定によって半透明で表示されています。きちんと後が透けていることが分かると思います。 2020 m. rugsėjo 16 d., trečiadienis
マテリアルによる半透明処理 マテリアルを使用した半透明処理を行います。今回は簡単な距離判定を行い、反対側から見ても問題なく透けて見えるようにしています。 2020 m. rugsėjo 16 d., trečiadienis
クォータニオンによる回転 クォータニオン(Quaternion)」を使用することにより、回転を合成できたり、ジンバルロックの回避、球面補間など応用すればとても使いやすいものだと実感できると思います。 2020 m. rugsėjo 16 d., trečiadienis
デバイスの消失 デバイスが使えなくなってしまう状況になっても正常に状態を保てるように、デバイスの状態を確認するプログラムを組み込んでみます。 2020 m. rugsėjo 16 d., trečiadienis
ポイントスプライト ポイントスプライトを使用すると非常に綺麗なエフェクトを表現することが出来ます。今回は上空から雪が舞い落ちてくるような神秘的なエフェクトを実現してみました。 2020 m. rugsėjo 16 d., trečiadienis
頂点フォーマットの変更と頂点データの設定 メッシュは作成した後でも、頂点フォーマットの変更や頂点データの設定、取得を行うことが出来ます。今回は、「位置」「法線」しか持たないメッシュに「ディフューズ色」を追加して、各頂点に色を設定していきます。 2020 m. rugsėjo 16 d., trečiadienis
球と球の衝突判定 3Dゲームでよく使われる衝突判定のひとつです。計算がとても単純で非常に高速に処理できます。モデルの形状が球に近いほど正確な判定が行えます。 2020 m. rugsėjo 16 d., trečiadienis
ボックスとボックスの衝突判定 衝突判定の中では比較的高速な判定が出来る方法です。回転しない箱型物体、例えばキャラクター以外の家とか置物とかにとても有効です。 2020 m. rugsėjo 16 d., trečiadienis
モデルの二階層構造 ロボットなどのようにいくつかのパーツに分かれているようなモデルは、手や足などのパーツが親の動きに従って一緒に動作しています。また、手や足などは単独で回転したりします。これは「親子関係」という構造化を実現することにより可能になります。 2020 m. rugsėjo 16 d., trečiadienis