田中 正造

田中 正造

最近の記事

DirectX ボールを転がす2

「DirectX ボールを転がす1」でGolfBallクラスを作成し、Golfクラスの概要を解説をしました。本稿ではGolfBallクラスのインスタンスを生成し、転がす方向と力を設定してゴルフボールを転がしてみましょう。 GraphSceneクラスでヘッダファイルをインクルードする初めに、GraphSceneクラスのヘッダーファイル(GraphScene.h)にGolfBallクラスのヘッダファイル(GolfBall.h)をインクルードします。 #include "Gol

    • DirectX ボールを転がす1

      これまでのところでグラフィックアセットを利用可能になりました。これからはDirectX Graphicsを活用して「ゴルフボールを転がす」プログラムを作成してみましょう。 DirectX TKは右手系 3Dグラフィックスのプログラミングでは、左手系(Left Handed System)と右手系(Right Handed System)の座標系を使用します。右手系の場合、下図のようにx軸とy軸の正の方向は左手系と同じですが、z軸の正方向が手前の方向になります。Direct

      • DirectX 「Content Pipeline」 を使う

        Visual Studio 2022にグラフィックス アセットを読み込み、コンテンツパイプラインを使用してアセット(FBX形式からCMO形式)を変換します。 ゴルフボールの3Dモデルを用意するフリーの3Dモデルを利用するために「Sketchfab」、「Cadnav」、「TurboSquid」のWebサイトにアクセスします。今回は、フリーのゴルフボール(FBX形式)を探索し、ダウンロードします。「Blender」を使用してダウンロードしたゴルフボールをインポートし、「ゴルフボ

        • DirectX「線分と線分の交差判定」で外積を応用する

          「DirectXで内積と外積を探る」の稿で、外積を用いるとベクトル間の左右判定が可能であることを説明しました。この外積の機能を活用すると、線分と線分の交差判定を行うことができます。では、「線分と線分の交差判定」を行ってみましょう。 はじめに、2Dの外積の計算式を示します。 C++のプログラムで記述すると次のようになります。 // Vector2の外積(v1 × v2)static float Cross(const Vector2& v1, const Vector2&

        DirectX ボールを転がす2

          DirectX「円と線分の交差判定」で内積と外積を応用する

          内積と外積を使用し、「円と線分の交差判定」について考察してみましょう。 線分と円の中心へのベクトルの外積を計算する 線分と円の交差判定を行うには、はじめに線分v1と円の中心までのベクトルv2の「外積」を計算します。外積の結果は、「線分v1に円の中心までのベクトルv2を射影した正射影ベクトルと円の中心までの高さ」となります。従って、外積の結果が円の半径より小さいか等しい場合は円と線分は接するか交差している可能性があります。 前稿の「DirectXで内積と外積を探る」では、外

          DirectX「円と線分の交差判定」で内積と外積を応用する

          DirectXで内積と外積を探る

          ゲームプログラミングで線形代数を学習すると、はじめに現れるのが「ベクトル」ではないでしょうか。実際にゲーム中のキャラクタの移動やキャラクタ同士の位置関係を調べたりするのに、ベクトルはなくてはならないものの一つでしょう。ベクトルの演算の中で使用頻度が高いけれど、何かよくわからないものとして「内積と外積」があります。本稿では内積と外積をDirectXを使用してその特性を探ってみましょう。 ベクトルの内積ベクトルの演算はベクトル同士の加算、減算はできますが、ベクトル同士の除算はで

          DirectXで内積と外積を探る

          DirectX Graphicsコンポーネントを作る

          DirectX TKのグラフィックスを使いやすくするためにDirectX Graphicsコンポーネントを作成し、フレームワークをGithubに公開します。 ここでDirectX Graphicsクラス宣言の重要な点をまとめます。 DirectX TKのクラス構成はそのまま使用する 当然のことですが、DirectX TKは「Windows Update」が行われるとDirectX TKも更新されます。DirectX TKが提供されるクラス構成を修正すると、メンテナンスが面

          DirectX Graphicsコンポーネントを作る

          constのすすめ

          C++を使用してチーム開発を行う場合、自分が作成したクラスや関数を他のメンバーが使用することがあります。このような場合、クラスや関数内部のリソースの保護、関数の呼び出し元のリソースの保護、プログラムの高速化のために変数や関数に対してconst修飾子(以後const)を指定することができます。 クラスのメンバー関数にconstを指定する クラスのメンバー関数にconstを指定すると、関数内部でクラスで宣言されたメンバー変数の変更ができなくなるため、メンバー関数内部でのメンバ

          constのすすめ

          DirectX TKとは

          DirectX TK(DirectX Tool Kit)は、マイクロソフト社が提供するDirectX 11と12に対応したゲーム開発を行うためのオープンソースのクラスライブラリです。DirectX TKは、2006年に発表されたXNA Game FrameworkをC++に移植したクラスライブラリで、XNAフレームワークで実装されていた便利なクラスをC++で利用することができます。 DirectX TKのモジュール Audio - XAudio2を使用するロウレベルなオー

          DirectX TKとは

          C++ デザインパターン シングルトン

          DirectX TK そしてC++を使用したゲームを開発するときには、グラフィックス、サウンド、物理、人工知能、ネットワークなど、様々なコンポーネントを作るためにデザインパターンの「シングルトン」を活用します。 目次 シングルトンとは シングルトンの作り方 シングルトンのプログラム コンストラクタをprivateに指定する インスタンスを生成したときのポインタを格納する静的なポインタ変数を宣言する 静的なポインタを初期化する インスタンスを返す静的なGetIn

          C++ デザインパターン シングルトン

          DirectXTKをセットアップする

          1 DirectXTKアプリケーションをビルドするにはDirectXTKのアプリケーションをビルドするには、初めにマイクロソフト社のDirectXTKのサイトからクラスライブラリのソースをダウンロードし、クラスライブラリをビルドします。 次にDirectXTKのアプリケーションのプロジェクトを作成し、DirectXTKのクラスライブラリとリンクします。 DirectXTKアプリケーションのビルド手順 ① DirectXTKクラスライブラリをダウンロードする ②

          DirectXTKをセットアップする