LoginSignup
5
7

More than 5 years have passed since last update.

PhysX3.3を実装しよう!

Last updated at Posted at 2016-12-15

はじめに

会社からの課題で使うことになったのだが、いろいろとハマりポイントがあったので忘れないようにメモメモφ(..)
導入までを解説する

開発環境

Windows10 64bit
VisualStudio Community2015

SDKの取得

開発者アカウント登録

https://developer.nvidia.com/gameworks
からアカウントを登録しましょう。詳細は割愛

PhysXリポジトリのアクセス申請

プライベートリポジトリになっているので
https://developer.nvidia.com/physx-source-github
から申請します。

コードのDL

アクセスができるようになれば、GitHubのリリースのタブから最新のPhysXをダウンロードします。
2016/10/12現在での最新版は3.3.4です。

PhysXのビルド

32bit向けのDEBUGのみビルドしてみます

ダウンロードデータの中身

ダウンロードデータはCドライブのルートに置いときます

ダウンロードデータルート
- APEXSDK(今回は触れない、布とか粒子とかを扱える)
- PhysXSDK(今回使う物理エンジン)
- PhysXSDK\Bin(サンプルやスニペットでビルドしたデータが入る)
- PhysXSDK\Include(おなじみのフォルダー)
- PhysXSDK\Lib(初期状態では必要最低限のライブラリが不足してる)
- PhysXSDK\Source(PhysX本体)
- PhysXSDK\Snippets(PhysXの使い方を理解するための簡単なサンプル)
- PhysXSDK\Samples(PhysXで何ができるかのデモリール的なサンプル)
- PhysXVisualDebugger(PhysXをリアルタイムで別ウィンドウでデバッグできる優れもの)

PhysXのビルド

PhysXSDK\Source\compiler\vc14win32
にソリューションファイルがあるのでアクセス

すべてのプロジェクトを選択し、プロジェクトのプロパティで
C/C++の全般の警告レベルをいいえ(/WX-)にします
C/C++のコード生成のランタイムライブラリをマルチスレッドデバッグ/MDdにします

ビルド!

エラー C2373 '__pfnDliNotifyHook2': 再定義されています。異なる型修飾子です。

が3つほど出るので とりあえずその行をコメントアウトします。今のところ不具合は特に出てないですけど、ほかに方法があるのかも

プロジェクトのクリーンを行い、リビルド!

無事完了すれば
PhysXSDK\Bin\vc14win32 にdllファイルが生成、
PhysXSDK\Lib\vc14win32 にライブラリデータが生成されます

サンプルのビルド

PhysXSDK\Samples\compiler\vc14win32
にソリューションファイルがあるのでアクセス

特に設定はせずにビルド!

PhysXSDK\Bin\vc14win32 のフォルダーにexeが作成されます
色々サンプルを触って遊べます

スニペットのビルド

PhysXSDK\Snippets\compiler\vc14win32
にソリューションファイルがあるのでアクセス

すべてのプロジェクトを選択し、プロパティーを開き、C/C++の全般の警告をエラーとして扱うをいいえ(/WX-)にする

プロジェクトのクリーンを行いビルド!

PhysXSDK\Bin\vc14win32 にexeが生成されます
かんたんなサンプルが動いている様子を確認できます

Visual Debugger

ダウンロードしたデータにインストーラーが入っているのでインストール
インストールしたデータはデフォルトでは
C:\Program Files\NVIDIA Corporation\NVIDIA PhysX Visual Debugger
になっているかと思います
このフォルダー内のPVD2.exeがビジュアルデバッガです

ビジュアルデバッガを起動した様態でPhysXのサンプルを起動するとその様子をデバッグできます
Desktop 10.12.2016 - 18.36.07.16.png

自分のプロジェクトでPhysXを使用

パス

自分のプロジェクトのVC++ディレクトリに、ビルドしたIncludeとLibを指定し、

MyPhysics.cpp
#include <PxPhysicsAPI.h>

#pragma comment (lib,"PhysX3CommonDEBUG_x86.lib" )
#pragma comment (lib,"PhysX3DEBUG_x86.lib" )
#pragma comment (lib,"PhysX3CookingDEBUG_x86.lib" )
#pragma comment (lib,"PhysX3CharacterKinematicDEBUG_x86.lib" )
#pragma comment (lib,"PhysX3ExtensionsDEBUG.lib" )
#pragma comment (lib,"PhysX3VehicleDEBUG.lib" )
#pragma comment (lib,"PhysXProfileSDKDEBUG.lib" )
#pragma comment (lib,"PhysXVisualDebuggerSDKDEBUG.lib" )
#pragma comment (lib,"PxTaskDEBUG.lib" )

と書けば開発準備OK!

あとは
http://docs.nvidia.com/gameworks/index.html
のリファレンスとビルドしたサンプルを見ながら作っていこう!

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7