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