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