アルゴンUE4&アプリ開発日記

UE4のモバイル開発やアプリ開発をメインに紹介します!主に初心者から中級者向けに紹介していく予定。

【UE4】メッシュエディターモードを試す。

UE4でメッシュの処理を編集する。

UE4の4.20でStaticMeshの編集がモードで可能になったので、

今回はそちらを試していく。

UE4バージョンは4.20.2になります。

モードに追加する

MeshEditorをONにする場合、コマンドを入力する必要があります。

アウトプットログを常時出しているので、

アウトプットログをから「MeshEditor.Enable」と入力します。

MeshEditと入力すれば下記の様に検索で引っかかります。

※MeshEditについてはプロジェクトを閉じるたびに閉じるので気をつけてください。

f:id:yoshikata1990:20180825124510p:plain

入力が完了したら、モードにタブが追加されるかと思います。

下記のタブが表示されれば問題なくモデルを編集できると思います。

f:id:yoshikata1990:20180825130219p:plain

編集できる項目の説明

各種項目で出来ることを紹介します。

絵がなくて申し訳ないです・・・。

※すべての項目の説明までは行っていません。

 使用頻度が高くなりそうなものを説明します。

Mesh選択時

AddSubdivisionLevel

→ 選択しているメッシュに対してサブディヴィジョン化する。

RemoveSubdivisionLevel

→ 上の逆の動作を行う。

Quadrangulate

→ メッシュ全体の面を四角面化する。

Polygon選択時

Move

→ 指定したポリゴンを移動させる。

DrawVertices

→ 頂点を追加する

Bevel

→ ベベル

Inset

→面の差し込み

Extrude

→押し出し

Split

→分割

AssignMaterial

→指定したポリゴンだけ別のマテリアルを適応する。

実際にモデルを編集する。

設定が完了したらエディットモードタブを選択した状態で、

レベル上のスタティックメッシュを選択することで編集できます。

いろいろ試すと下のTwitterみたいにいろんな形にできます(^o^)

3DCoatのトライアルを試してみる。

3DCoatを触ってみる。(`・ω・´)ノ!

今回夏休みに入ったため、1ヶ月間のトライアルを使っています。

簡単な使い方と使ってみた感想を少し書こうかなと思います。

そもそも3DCoatってどんなことができるの?

3DCoatは高機能のスカルプトでモデルを作るソフトウェアです。

Zbrushなどのその他スカルプトツールよりも安価でリポトロジーを行える。

※大きな特徴とかはウィキペディア見たほうがわかりやすいと思います。

3D-Coat - Wikipedia

早速モデリングをやってみる。

3DCoatでは主に大きな役割をしている5つのエディタ画面があるのかな?

f:id:yoshikata1990:20180816164900p:plain

3DCoatの流れはボクセルでモデリングをしてリトポロジーを行い、

その後UVをしてペイントしていくっていうのが主な流れです。

とりあえずボクセルでモデリングしてみます。

 スケッチというものを使用して、とりあえず形をつくってみた。

f:id:yoshikata1990:20180817130551p:plain

とりあえず形だけなら、スケッチ機能で作ることができます!

もう少し頑張りたい・・・(・_・;)

今後もっと操作を覚えて説明できるようになっていけたらと思います。

 

【UE4】Ver4.20でProxyGeometryToolとHLODを合わせて試す!

UE4の4.20出ました~('ω')ノ

ついに正式リリース版として、4.20がリリースされました。

モデル編集だったり、IRサンプルなどのサンプルが充実したり、

いろいろな箇所が変化しました。

今回はアクターの結合を行ったり、新規LODを作成することで、

ドローコールを減らして最適化する際に利用される、

ProxyGeometryToolを紹介していけたらと思います。

ProxyGeometryToolはどういうことができるのか?

上のほうのタイトルでも少し話をしましたが、

ゲームを開発していく上で複数のアクターなどを、

配置したりする必要が出てくる時があるかと思います。

その際に複数のActorを結合して、新しいLODを作成したり

テクスチャ・マテリアルなどをまとめること負荷を軽減する。

ProxyGeometryではSimplygonと同じようなことを行えるようになっています。

SimplygonについてはこちらのURLで確認してみてください!

www.unrealengine.com

ProxyGeometryToolでマージアクターを試す

まずはProxyGeometryToolでマージアクターを試してみます。

UE4.20からProxyGeometryToolのマージアクターがデフォルトで使えます。

下の絵のStaticMeshをProxyGeometoryToolでマージしてみます。

頂点は合計で53万頂点程あります。

こちらをあらかじめレベル内に配置しておきます。

f:id:yoshikata1990:20180727061524p:plain

まずウィンドウのデベロッパーツール>マージアクタを選択します。

f:id:yoshikata1990:20180724233717p:plain

アクターをマージするための画面が出るので、

その中の真ん中のアイコンを選択します。

アウトライナ内に配置した先ほどのスタティックメッシュアクターを選択します。

f:id:yoshikata1990:20180727062922p:plain

これで右下にあるアクタをマージを選択すればマージできます。

マージしたした後と前のモデルを比べてみます。

頂点が3408まで低下しています。

f:id:yoshikata1990:20180727232808p:plain

頂点の多いスタティックメッシュやパーツがバラバラになっているものを、
まとめることでドローコールを削減したりすることもできるので、

多くのメッシュのアクターを呼び出してると感じたら、試してみてください。

実際にProxyGeometryToolで結合したものと結合前のパーツ全部並べた状態です。左が53万の頂点で右が3,408頂点になっています。

f:id:yoshikata1990:20180728004803p:plain

HLODでProxyGeometryを試してみる。

先ほどはアクターマージで行いましたが、

今度はHLODを使用した方法を行ってみようと思います。

まずはプロジェクト設定でHLODのメッシュ削減用のプラグイン設定します。

「hie」と検索すると「Hierarchical LOD Mesh Redution Plugin」が出る。

こちらを「ProxyLODMeshReduction」を選択します。

f:id:yoshikata1990:20180728161054p:plain

 プロジェクト設定が完了したら、ワールドセッティングから、

「Enable Hierarchical LOD System」をONにします。

※補足:

f:id:yoshikata1990:20180728165935p:plain

ウィンドウから階層LODアウトライナーを選択して、

「Hierarchical LODSetup」のHLODレベル内部にある「SimplifyMesh」にチェックを入れておきます。

※こちらにチェックを入れないとProxyを使用したLODになりません。

f:id:yoshikata1990:20180728175057p:plain

作成が完了すると、LODのレベル表示がある箇所に、

どれぐらい削減されているのかと元の三角ポリゴン数が表示されます。

今回は93456から1402まで削減できています。

f:id:yoshikata1990:20180728195303p:plain

実際にLODで表示したものがこちらになります。

LODを行う前(三角ポリゴンで93456)

f:id:yoshikata1990:20180728200946p:plain

LODを行う前(三角ポリゴンで1402)

f:id:yoshikata1990:20180728200249p:plain

遠目で見るとある形にほぼ変化がわからない感じになります。

微調整をすればもっときれいになります。(マテリアルとかLODの精度など)

LODのモデルについては階層LODアウトライナーのSaveAllから保存ができ、

Mapと同様の箇所にHLODというフォルダが作成されてそこに保存されます。

f:id:yoshikata1990:20180728201347p:plain

HLODを使用したProxyLODの使用方法については以上になります。

その他、UE4.20で行えるようになったこと

下のリンクで4.20の行える設定が増えています。

LODを深く知るためにも後で見ておこうと思います。

ImprovingNormals(法線の設定)

https://docs.unrealengine.com/en-US/Engine/ProxyGeoTool/ImprovingNormals

NormalCalculationMethod(ノーマルの計算方法)

https://docs.unrealengine.com/en-US/Engine/ProxyGeoTool/NormalCalculationMethod

FillingGap(遠目で見たときに内部を閉じるような設定)

https://docs.unrealengine.com/en-US/Engine/ProxyGeoTool/FillingGap

 

【UE4】Daydream第2弾・開発中につまずきそうになった情報まとめ

Daydream開発でつまずきまとめ

Daydreamの開発の中でつまずいた所と勘違いを紹介します。

第一弾でDaydreamの初期設定やボタンイベントについては、

下記リンクで紹介しています!

argonauts.hatenablog.jp

その1.StartCameraFadeが動作しない

そもそもStartCameraFadeが何かわからない人もいるかと思うので、

一応説明しておくと、簡単にFadeInやFadeOutを実装できるノードです。

f:id:yoshikata1990:20180617001601p:plainターゲットは必ず必要ですがこれだけで、画面全体にVR環境でも

画面にフェード処理を加えることができます。

しかしモバイル環境ではプロジェクトの設定により動作しないことがあります。

それは、MobileHDRがOFFの場合になります。

プロジェクト設定で「hdr」で検索して、チェックを入れてあげてください。

f:id:yoshikata1990:20180617021652p:plain

最初のプロジェクト作成の際にスケーラブルな3D・2Dを選択して作成すると、

自動的にMobileHDRがOFFになります。

f:id:yoshikata1990:20180617012840p:plain

スケーラブルな3D・2Dを選択するといろいろな設定がOFFになります。

MobileHDR以外にBloom(発光表現)やモーションブラーなどもOFFになるので注意が必要です。

f:id:yoshikata1990:20180617021244p:plain

その2.モーションコントローラーの角度とか位置とかどうとるの?

モーションコントローラーの角度などはGoogleVRMotionControllerの

コンポーネントがあるのでそこから取得するのかと思ったら、

コンポーネントが持つGetMotionControllerから取得します。

位置はGetWorldLocationで取得して、FowardVectorモーションコントローラーの前方方向の向きをとってきてます。

f:id:yoshikata1990:20180617032224p:plain

その3.公式で用意されているlaserを使用したい。

公式が用意している下の線みたいなのがあります。

これはMotionControllerの機能ではないので説明しておきます。

f:id:yoshikata1990:20180617222020p:plain

コンポーネントでGoogleVRLaserVisualというものがあり、

これで一応の表示はできます。

f:id:yoshikata1990:20180617222227p:plain

ただ、Googleの公式・UE4の公式のどちらにも説明が全く無く、

モーションコントローラーにアタッチしても追従しないので、

注意が必要です。

モーションコントローラーに追従させる場合、

私は面倒臭いことが嫌いなので必要に応じてアタッチします。

今回はこんな感じです。

f:id:yoshikata1990:20180617223334p:plain

最後に・・・まだまだできるはず・・・

GoogleVR用の説明できていないコンポーネントはあるが、

今回はここまでです。特に最後のほうはどこに説明がないので、

UE4でDaydreamを開発する人はぜひ参考にしてみてください。

【UE4】Daydream開発第1弾!!プロジェクトの作成とボタンのイベントについて

Daydreamを今更・・・購入!!

Daydreamを購入しました!!

携帯はMoto Z Proを使用しています。

・・・正直今勢いがあるのは確実にOculus goのような気がするので、

ぜひそちらを買ってみてください(簡単に試すならそっちのほうがいい!!)

Daydreamの情報が少ないので来月までDaydreamでとりあえず隔週でブログを更新できたらと思います。

今回はDaydreamの設定とMotionControllerのボタンイベントを説明します。

テスト用のプロジェクトを作成

今回は初めてなのでとりあえずからのプロジェクトからスタートします。

f:id:yoshikata1990:20180527232228p:plain

Daydream用のプロジェクト設定について

まずはAndroid開発用のファイルをインストールします。

NVIDIA CodeWorks for Android | NVIDIA Developer

Android用の設定は下記のリンクでも説明しています。

こちらをご確認ください。

UE4.14・AndroidでVRの実機プレイまでの解説

インストールと設定が完了したら、プロジェクトの設定に移ります。

まずはDaydreamを使用するためにプラグインをONにします。

使用するのは「GoogleVR」と「GoogleVRMotionController」になります。

私はGoogleで検索してプラグインを見つけました。

f:id:yoshikata1990:20180527213342p:plain

次にプロジェクトの設定を行っていきます。

まずはAndroidSDKを設定します。

今の最新のバージョンのCodeWorksをインストールした際、

PASSを指定しない場合は下記の画像と同様で問題ないです。

f:id:yoshikata1990:20180527222213p:plain

次にAndroidのプロジェクト設定を行います。

まずSDKのバージョンを24に指定します。

これはAndroidOSでVRの最適化が行われているためです。

f:id:yoshikata1990:20180527224022p:plain

続いてGoogleVRのハードウェアサポートの設定です。

昔のプロジェクトではDaydream&Cardboardという分け方でしたが、

それぞれエレメントとして追加する仕組みに変更されているので注意です!

今回はとりあえず3.3DoFのDaydream設定にしています。

DoFって何かというと取得できる動作の情報量になります。

3DoFは「Yaw Pitch roll」の動きを認識できます。

6DoFは上記に加えて、「前後・左右・上下」も追加で認識できます。

Configure GoogleVR for sustained-performance modeもONにします。

f:id:yoshikata1990:20180527230330p:plain

最後にAndroidのBuildするarm系統を変更します。

Arm64を選択してArmv7の選択をOFFにします。

f:id:yoshikata1990:20180527230918p:plain

VRのMotionController対応を行う!

DaydreamのHMD・MotionControllerに対応したキャラクターを作成します。

Pawnのブループリントを作成して、

VR用のカメラとGoogleVRを設定します。

f:id:yoshikata1990:20180528222652p:plain

上記はコンポーネントの重なりになります。

同じシーンの中にカメラとGoogleVRMotionControllerコンポーネントを設定します。

続いて、BeginPlayイベントでトラッキングする原点とカメラの高さを指定します。

ブループリント内部はこの形です。

f:id:yoshikata1990:20180528232517p:plain

公式と同じですので下記リンクに細かい説明があります。

こちらも是非チェックしてみてください!
api.unrealengine.com

各ボタンのイベントについて

Daydreamコントローラーに各種ボタンが設定されています。

とりあえずタッチパッドの上下左右のボタンとマイナスボタンを試しました。

ーボタンがShoulderというイベントで、

タッチパッドのボタンはFaceButtonというイベントで取得できるようになっています。

f:id:yoshikata1990:20180528233108p:plain

今回はプロジェクトの設定と一部ボタンの説明をしました。

タッチパッドのX軸・Y軸が取れるみたいですが、

次回詳しく説明できたらと思います!!