PhysXのMayaプラグイン導入
nVIDIAの物理エンジンPhysX
今回取り上げるPhysXはnVIDIAが開発した物理シミュレーションで、GPUに演算をさせるエンジンです。
そしてUnreal Engine4は物理エンジンとしてPhysXを使用しています。
Unreal EngineではPhysXに含まれるAPEX ClothシミュレーションとDestructibleシミュレーションを使用する事が出来るので、今回は使用するためのツールの導入を紹介したいと思います。
PhysX Clothing | NVIDIA Developer
PhysX Destruction | NVIDIA Developer
Maya用にPhysXプラグインを導入
それではまずAPEX clothシミュレーションについてですが、Unreal Engineでは.apxという拡張子の物理シミュレーションの設定されたファイルをインポートする事でUnreal Engine上でもAPEX clothシミュレーションを行う事が出来ます。
では、そのシミュレーション設定ファイルをどう作成するかと言うと、Mayaのプラグインで作成されたリギング済みのモデルに対してcloth シミュレーションを適用し、エクスポートします。
Download Center | NVIDIA DeveloperよりMaya用のPhysXプラグインがダウンロード出来ます。
リストの中のMaya DCC plugin-in for PhysX 3-3-3というものを選択し、お使いのMayaのバージョンのものを適宜選択してください。
選択すると同意を求められるので、Acceptを選択します。
次にログインを求められるので、すでにメンバー登録されている方はLog inを
登録されていない方はJoin nowを選択してください。
Join Nowを選択された方は情報の入力を求められますので、入力していきます。
Organization Nameは個人の方はindividualとかで良いと思います。
最後の13歳以上の確認と使用上の条件に同意するかという二つの問いにチェックをつけます。
情報が間違っていなければNextを押します
次に何に興味があるか尋ねられるので、チェックして行きSubmitします。
登録時に指定したメールアドレスにリンク付きのメールが送られたので、確認してクリックします。
下のようなメールが送られて来たので、最後のリンクをクリックします。
ログインに成功と表示されました。
次にパスワードを設定するためSet my passwordを押します。
パスワードを設定してSaveを押してください。
マイページのようなページに遷移したと思います。
これで登録は完了したので、赤枠のダウンロードしようとしたファイルへのリンクをクリックしてダウンロードを開始します。
ダウンロードが完了したらインストールを行ってください。
途中でインストール内容をtypicalかcustomizedかcompletedかと問われますが、typicalで良いかと思いますが、お好みで。
※インストールできない旨のエラーが表示された場合は、お使いのMayaのバージョンとプラグインのバージョンが合ってない可能性があります。
インストールしたらMayaを起動します。
Mayaプラグイン設定
メニュー > Wndows > Settings/Preferences > Plug-in Manager
と選択します。
physx.mllが追加されてますので、チェックをして閉じます。
するとPhysXのメニューとShelfが追加されたのが確認できます。
APEX PhysX Labツール導入
Unreal Engine内でもDestructibleメッシュを作成する事は可能ですが、深度1より大きいものや、特殊なものを作る際にはAPEX PhysX Labツールでメッシュを作成する必要があります。
先程のnVIDIAのダウンロードページにPhysX Labツールがあるのでダウンロードします。
Download Center | NVIDIA Developer
ダウンロードが完了したら、インストールをしてください。
インストールし、起動出来れば完了です。
今回はAPEX clothとdestructibleシミュレーション用のプラグインとツール導入について紹介しました。それぞれの紹介は近いうちに行いたいと思いますのでお待ちください。
Inputを使ってActorを動かす
Input設定のActionマップとAxisマップ
前回はActorの作成をしましたが、今回はInputの設定をしてActorを動かしてみたいと思います。
Input設定にはActionとAxisの二つのマップが存在し、これらを使う事によりInputイベントを任意の入力(キーボードボタンやゲームパッドのボタン等)と対応させる事が出来ます。
これにより、もし入力するボタンが変わったとしてもマップを変更するだけの最小限の変更で済みます。
それでは紹介していきたいと思います。
Input設定
まずはレベルエディタの
メニュー > Edit > ProjectSettings
を選択してください。
Project Settings・・・文字通りプロジェクト内の様々な設定をする事が出来ます。
選択するとProjectSettingsのウインドウが表示されます。
左項目から
Engine > Input
と選択すると、Inputについての設定が表示されます。
その中のBindingsを見ると、Action MappingsとAxis Mappingsの二つが存在します。
Action Mappings・・・指定の入力と紐づいたPressedとReleased二つの状態のイベントを取得できます。
Axis Mappings・・・指定の入力の押し込み具合によるイベントを取得できます。
今回はオンラインゲームによくあるようなwsadで前後左右動くようにします。
それぞれの各マッピングの横にある+をクリックするとマップが追加され、作成されたマップ名の横にある+をクリックするとバインドが追加されます。
下のように設定します。
レベルブループリントによる制御
アクターをInputから移動させる方法はいくつかありますが、今回は最も簡単なレベルブループリントを使った方法で試したいと思います。
前回のようにCubeからブループリントを作成し、レベルブループリントのEvent Graphを開きます。
前方(後方)への移動
空白でマウス右クリックし、MoveForwardと入力します。
候補からInputs > Axis Events > MoveForwardを選択します。
これにより設定したMoveForwardの入力イベントを取得する事が出来ます。
次にレベルブループリントからActorを参照出来るようにします。
ビューポート上で作成したCubeを選択した状態で、レベルブループリント画面の空白を右クリックします。
ボックスにCreate a Reference to Cube_BPがあるので選択します。
Cube_BPのノードが作成されているのを確認出来ます。
作成されたCube_BPノードから現在地を取得します。
Cube_BPからドラッグし、GetActorLocationノードを作成します。
Actorの進行方向を取得します。
Cube_BPからドラッグし、GetActorForwardVectorノードを作成します。
今回は入力に対して+10ずつ移動するようにしたいので、Axis Valueに10掛けます。
Axis Valueからドラッグ > float x float を作成。
進行方向に移動量を掛けます。
Get Actor Forward Vectorをドラッグ > vector x float を作成 > 移動量とつなぐ
Actorの現在置に作成した移動量を持つベクトルと足し、移動後の位置を求めます。
GetActorLocationをドラッグ > vector + vector を作成 > 移動量ベクトルをつなぐ
最後にCube_BPの現在地を移動後の位置で書き換えます。
Cube_BPをドラッグ > SetActorLocationを作成 > 移動後の位置をNew Locationにつなぐ MoveForwardと実行ピン > SetActorLocationをつなぐ
下が完成形です。
また、ノードをつなぐ穴の形をしたものはピンと呼ばれています。
ピンには役割によって種類が分かれます。
ピン・・・ノードについた穴になっている部分
入力ピン・・・ノード左側のデータの入力に使用するピン
出力ピン・・・ノード右側のデータの出力に使用するピン
実行ピン・・・右向きの矢印のようなピン、つなぐ事で処理が実行される。
右(左)方向への移動
空白を右クリックし、MoveRightイベントノードを設置します。
MoveForwardと同じ要領でノードを作成します。
ただし、Get Actor Forward VectorをGet Actor Right Vectorに置き換えてください。
下が完成形です。
Actor位置をリセットする
Actor位置のリセットを実現するために、まずActorの初期位置を保存しておく必要があります。
上の作業で作ったCube_BPの参照をCtrl + Cでコピーし、Event BeginPlayの側でCtrl + Vとする事でノードコピーします。
次に初期位置を格納する変数を作成します。
変数とはデータを入れる箱のようなものと考えてもらえれば良いと思います。
MyBlueprintパネル > Valiables > + を選択する
すると変数が作成されるのでDetailsパネルを次のように設定します。
Valiable Name : InitLocation
Valiable Type : Vector
変数にはそれぞれ値を取得するGETと値を設定するSETの二つのノードがあります。
MyBlueprintsパネルの変数名を選択した状態で次の操作でノードを設置する事が出来ます。
GET : Ctrl + ドラッグ&ドロップ
SET : Alt + ドラッグ&ドロップ
Event BeginPlayでは初期位置の保存をしなければならないので、Alt + ドラッグ&ドロップでSetノードを設置します。
上でやった要領でGetActorLocationで取得した値をSetにつなぎます。
最後にResetLocationイベントのReleasedでボタンを離した時に、保存しておいたInitLocationをSetActorLocationのNew LocationにSetするようにつなぎます。
この時はInit LocationのGetが必要なので、Ctrl + ドラッグ&ドロップします。
これでActor位置のリセット処理は完了です。
以上で移動処理が出来ましたが、作成したブループリント内のMeshに設定が必要です。
MeshのMobilityを変更する
クラスブループリント画面のコンポーネントパネルからStaticMeshを選択します。
画面右のDetailパネルのStatic Mesh項目のMobilityを確認してください。
MeshにはMobilityという概念が存在し、移動不可なメッシュか移動可能なメッシュかを区別するようになっています。
この分類により移動する必要のない静的メッシュに無駄な処理が実行されないようになっています。
逆に移動させたいメッシュがStatic設定になっていると動く事はありません。
今回はMeshを移動させたいのでMovableにします。
実行
CompileしてレベルエディタのPlayを押します。
実行するとCubeが移っていません。
これは、ビューの位置がPlayer Startというプレイヤーが配置される場所にあるためです。
ビューの位置を変えるため、Playのプルダウンを押し、Current Camera Locationにします。
これで実行すると・・・
現在のカメラ位置になっている事が確認出来ます。
静止画だとわからないですが、wを押すとCubeが移動しました。
Spaceバーを押す事で、初期位置に戻る事も確認出来ました。
今回は少し長かったですが、作業は大まかに分けると下記内容を行いました。
以上、Inputを使ってActorを動かすでした。
ブループリントクラス
アクターとブループリントクラス
前回はレベルブループリントに紹介しましたが、今回はブループリントクラスについて紹介したいと思います。
ブループリントクラスでHello World
テストレベルを作成
まず、テスト用のレベルを作りましょう。
File > New Level
と選択します。
レベルのテンプレートを選択する画面が出るので、Defaultを選択します。
すると、床以外何もないレベルが表示されているかと思います。
※本当は床以外にもあるんですが、目に見える目立ったものとしてはという意味です。
アクターにブループリントを追加
Modeパネル > Basic > Cube > ビューポートへドラッグ&ドロップ
Modeパネルは一番左のModeと書かれたパネルで、ビューポートはレベルがある中央画面です。
床上にCubeのアクターが配置されました。
このようにModeパネルから様々なアクターを配置する事が可能です。
次にブループリントを保存するフォルダーを作成します。
コンテンツブラウザー > Content 右クリック > New folder
ここでは名前をBlueprintsとします。
コンテンツブラウザーはレベルエディター下のパネルで、中にはアセット等が配置されます。
このような階層になったかと思います。
格納場所を作ったので、アクターにブループリントスクリプトを追加します。
アクターを選択した状態でレベルエディターの一番右にあるDetailパネルのBlueprint/Add Scriptを押します。
Detailパネルが表示されていない場合は
メニュー > Window > Details > Detail1と選択してください。
ブループリントの格納場所と名前を聞かれるので、先程作成したBlueprintsフォルダーを指定し、名前はCube_BPとします。
中央にクラスブループリントのウィンドウが出現し、Blueprintsフォルダー内には作成したブループリントが生成されている事が確認出来ます。
次にスクリプトを作成するためにクラスブループリント画面のEvent Graphタブを選択します。
レベルブループリントの時と似た画面になったと思いますが、クラスブループリントでは次の三つのイベントノードが予め設置されています。
Event BeginPlay・・・クラスブループリントの開始時イベント
Event ActorBeginOverlap・・・アクターのオーバーラップイベント
EventTick・・・クラスブループリントの逐次イベント
今回も前回同様にEventBeginPlayを使用します。
他イベントについてはまた別の機会で紹介したいと思います。
では、レベルブループリントの時と同様に
Event BeginPlay > Print String(Hello World)
と作りましょう。
下のようになっていったら、
Compile > レベルエディターに戻る > Play
とします。
実行結果は・・・
はい、というのがアクターにブループリントを追加して、スクリプティングする方法でした。
もう一つブループリントを先に作って、コンポーネントを追加する方法もあるので紹介したいと思います。
ブループリントにコンポーネントを追加
コンテンツブラウザのAdd Newを押す、もしくはコンテンツブラウザ内の空白で右クリックする事で以下のようなメニューが出ます。
Blueprint Classを選択します。
親クラスを何にするか聞かれるので、Actorクラスを選択します。
コンテンツブラウザ内にブループリントが作成されたら、選択しクラスブループリント画面を表示させます。
ところが、先程のクラスブループリント画面と表示が異なります。
これはブループリントから作成したために、データだけしか存在しておらずビューポートの表示がされていない状態です。
Open Full Blueprint Editorをクリックする事で、先程同様の画面になります。
ビューポートタブをクリックし、
Componentsパネル > Add Component > Static Mesh
とし選択ます。
こうする事で静的なメッシュコンポーネントが追加されます。
次に、StaticMeshコンポーネントを選択した状態で、DetailパネルのStatic MeshをCubeに変更します。
compileを押し、レベルエディターに戻ります。
作成したブループリントのサムネイルが変わっているのを確認し、ビューポートにドラッグ&ドロップします。
これでアクターからブループリントを作成した状態と同じになったので、後はスクリプティングを同様に行うだけです。
以上、ブループリントクラスの作成について紹介しました。
レベルブループリント
Unreal Engineの基本となるブループリント作成
Unreal Engineではアクターをブループリントで制御するというのが基本となりますので、今回はアクターとブループリントについて紹介したいと思います。
アクターとブループリントとは
アクター
アクターとはレベル上に配置されるオブジェクトであり、Unreal Engineにおけるクラスの大部分をこのアクターが占めています。
ブループリント
ブループリントとはUnreal Engine内でのヴィジュアルスクリプティングであり、ブループリントによって管理されるコンポーネントやプロパティ全てを指してブループリントと呼ぶ事もあります。
Unityのプレハブに似ているかと思います。
また、ブループリントはレベル全体を管理するレベルブループリントとアクターやその中のコンポーネント等の制御を行うブループリントクラスの二つがあります。
レベルブループリントはレベルを作成すると必ず存在するものですが、ブループリントクラスは生成しなければ存在はしていません。
では、早速それぞれ試したいと思います。
レベルブループリントでHello World
レベルブループリントを開くにはレベルエディターの
ツールバー > Blueprints > Open Level Editor
と選択します。
また、下の画面がレベルエディターと呼ばれるものです。
下のようなレベルエディターの画面が表示されたと思います。
画面空白を右クリックすると下のようなボックスが表示されるのでevent begin playと入力します。
打ち込み途中で候補がしぼられますので、候補を選択でも構いません。
すると、Event BeginPlayというノードが出来ているのが確認出来ます。
このノードの右側の矢印のようなものからドラッグし、離すと同様のボックスが表示されます。
print stringと入力します。
In Stringと表示されている横枠にHello Worldと入力します。
そして、コンパイルしこれを実行します。
Compile > Playと押すと、実行ウィンドウが表示されます。
実行結果は下のようになり右上にHelloWorldと出ていますね。
今回やった事はレベルブループリント内で、Event BeginPlayというレベル開始時のイベントから文字を出力するPrint Stringを呼び出しました。
今回は文字出力だけでしたが、レベルを作り込んで行くと、レベルブループリントから特定のアクターに対して操作するという機会が増えて行くと思いますが、それはまた今度という事で。
次回はもう一つのブループリントクラスについて紹介したいと思います。
以上、レベルブループリントについてでした。
Unreal Editorの言語設定を英語にする
Unreal Editorの言語設定
前回・前々回とでブランクプロジェクトを作成し、Unreal Editorを起動するところまでをご紹介しました。
このような画面になっているかと思います。
はい、これで問題ないんですが、メニューが日本語です。
私の場合、mayaを使っていた時も英語だったせいか、この手のCG系ソフトのメニューが日本語だったりすると一瞬戸惑うんですよね。
また、ネットに落ちているUnreal Engineの動画や記事も英語が多いと思いますので、英語設定にしておいた方が理解が早くなるのではないでしょうか。
という事で今回はUnreal Engineの言語設定についてご紹介したいと思います。
言語設定を英語にする
Unreal Editorのメニュー > 編集 > エディタの環境設定と選択してください。
下のようなウィンドウが表示されているはずです。
一般 > 地域&言語と選択するとEditor Cultureが日本語(日本)となっています。
このプルダウンを選択し、英語(English)を選択します。
すると・・・
メニューが英語に変更されました。
これで心置きなくいじって行けます。
以降、記事に使用する画像は英語メニューのものとする予定ですので、ご了承ください。
という事で今回は小ネタですが、Unreal Editorの言語設定を英語にするでした。
GitHub上のソースコードからUnreal Engineを動かす
オープンソースコードUnreal Engine4
Unreal Engineは4系からオープンソースコードとなった事で 自由に拡張できるようになり、nvidiaのFlex(流体シミュレーション)やトゥーンシェーディングといったソースコードも公開されています。
このような拡張されたUnreal Engineやプラグインを導入する際にはソースコードをビルドする必要があります。
今回は前回の記事で紹介したUnreal Engineのもう一つの導入方法であるソースコードからの起動を紹介したいと思います。
GitHubからソースコードを取得する
GitHubからソースコードを取得するには、まずGitHubのアカウントを作成する必要があります。
※ここではアカウントがあるものとして説明していきます。
アカウントをお持ちでない方はGit - アカウントの準備と設定を参考にしてアカウントを作成してください。
GitHubとEpicGamesのアカウントを連携させる
Unreal Engineのソースコードは下記リンクにて公開されていますが、そのままアクセスすると404エラーとなってしまいます。
https://github.com/EpicGames/UnrealEngine
ソースコードを取得するには前回作成したEpicGamesのアカウントとGitHubアカウントを連携させる必要があります。
その方法についてはEpicGamesのUnreal Engine 4 on GitHubにて記載されていますので、手順にしたがってアカウントを連携させてください。
アカウントの連携が完了するとGitHubのページにアクセス出来るようになっているので、PC上の任意の場所にgit cloneなりdownloadしたものを解凍なりしてください。
ソースコードをビルドする
VisualStudioをインストール
ソースコードをビルドするためにはVisualStudioが必要なので下記リンクよりVisual Studio Communityのダウンロードボタンを押し、ダウンロードが完了したらインストールします。
Free Developer Offers | Visual Studio
ソールコードをビルド
インストールが完了したらgit cloneもしくはdownload解凍して出来たフォルダに移動し、下記手順でビルドします。
- フォルダ内のSetup.batを実行
- 同フォルダ内のGenerateProjectFiles.batを実行
- 2で出来たUE4.slnを起動
以上でVisual Studioのプロジェクトが起動しますので、後はビルドするだけです。
ビルド時のDevelopment Editorは適宜変更を行ってください。
しばらくビルドを待ちます・・・
ビルドが完了するとプロジェクト画面が表示され、Unreal Editorを動かす事が可能となります。
これでソースコードからビルドまで出来たので、後はソースを解読していけば拡張も出来ますね。
そこが大変なんですが。。。
という事で今回はソースコードの取得からビルドまでを紹介しました。
Unreal Engineをはじめる
Unreal Engineを導入するには
現時点でのUnreal Engineの最新バージョンは4.13ですが、導入するには下の二つの方法があります。
今回は公式からのダウンロードについて説明したいと思います。
公式からダウンロードする
まず下記Epic GamesのUnreal Engineのページにアクセスし、ダウンロードを押します。
https://www.unrealengine.com/ja
すると、ユーザー情報の入力を求められますので、必要項目を入力してアカウントの作成を行います。既にアカウントを持っている人はサインインを選択してください。
アカウント作成を行うと同意を求められますので、チェックボックスをチェックし、承諾を選択します。
同意するとサインインした状態で最初のページに遷移するので、再度ダウンロードを選択してください。すると、ダウンロード項目が表示されますので、お使いのOSによって適宜ダウンロードするものを選択してください。
※画面ではWindows用のダウンロードをしています。
後はダウンロードが完了したら、インストールを行います。
ランチャーを起動する
ランチャーを起動するとユーザー登録時に指定したメールアドレスとパスワードを求められますので、入力しサインインボタンを押します。
サインが完了すると下のようなランチャー画面が表示されます。
初期状態ではエンジンスロットが何もない状態になっているので、下記手順でエンジンスロットを追加します。
- ライブラリタブを選択
- スロットの追加でインストールしたいバージョンを追加
- 指定したバージョンのスロットが追加されるので、起動を選択します。
起動ボタンを押すと下のようなプロジェクト画面が表示されます。
初期状態では何もプロジェクトは存在しないので、下記手順で新しいプロジェクトを作成します。
- New Projectタブを選択
- プロジェクトのテンプレートとしてBlankを選択
- プロジェクトパスと名前を適宜変更
- Create Projectボタンを押す
以上でUnreal Editorが起動します。また、既存のプロジェクトを開く際はProjectsタブを選択し、指定のプロジェクトを選択してください。
するとテーブルと椅子の置かれたレベル(Unrealではオブジェクトが配置された空間をレベルと言います)が表示されました。
ブランクと言いつつもオブジェクトが何もないわけではないんですね。
以上、Unreal Engineのダウンロードからブランクプロジェクトの作成まででした。