凛(kagring)のUE4とUnityとQt勉強中ブログ

2016 年から UE4 を触り始めました。勉強したもののメモ用のブログです。C++ での Qt、Unity も少しあります。

≫ EDIT

UE4 ワールド座標をスクリーン座標に変換する(Convert World Location To Screen Location)

ワールド座標をスクリーン座標に変換する方法です。
こちらを参考にさせていただきました。

・UMGのUIを3Dキャラクター頭上に表示 #UE4Study
http://gameprogrammemo.tumblr.com/post/126581883062/umg%E3%81%AEui%E3%82%923d%E3%82%AD%E3%83%A3%E3%83%A9%E3%82%AF%E3%82%BF%E3%83%BC%E9%A0%AD%E4%B8%8A%E3%81%AB%E8%A1%A8%E7%A4%BA-ue4study

・Thread: [UMG Tutorial] - Placing Widgets Over Actors In Screenspace
https://forums.unrealengine.com/showthread.php?50130-UMG-Tutorial-Placing-Widgets-Over-Actors-In-Screenspace

ワールド座標をスクリーン座標に変換するには
「Convert World Location To Screen Location」ノードを使います。
ConvertWorldLocationToScreenLocation001.jpg
「Target」には「Player Controller」を。
「World Location」にはワールド座標を指定します。
そうすると「Screen Location」にスクリーン座標が返ってきます。

サードパーソンテンプレートの謎の「?」マークのアクターの
スクリーン座標を取得するブループリントだとこんな感じに。
ConvertWorldLocationToScreenLocation002.jpg

結果がこんな感じになります。
ConvertWorldLocationToScreenLocation000.jpg

まだ深くは調べてないのですが、どうもスクリーン座標がそのまま返ってくるようなので
ウィンドウサイズを変更できるようにしていた場合、値も変わってしまうので
ゲームなどで使う場合は少し対応が必要になりそうな感じがしますね。
スポンサーサイト

| UE4 | 13:01 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 ウィンドウサイズを変えずに解像度を変更する(Set Screen Resolution、Set Resolution Scale Value、Set Resolution Scale Normalized)

ゲーム中に解像度を変更する方法です。
こちらを参考に。

・UE4 GameUserSettingsを使ってウィンドウモードなどを設定する
http://unrealengine.hatenablog.com/entry/2016/08/22/220000

解像度の設定に「Game User Settings」を使います。

・Game User Settings を使った設定と保存(Get Game User Settings、Apply Settings)
http://kagring.blog.fc2.com/blog-entry-231.html

この「Game User Settings」に対して「Set Resolution Scale Normalized」で
解像度スケールをかけてやります。
GameeUserSettomgs004.jpg
余計なノード混ざってますがこんな感じですね。

GameeUserSettomgs002.jpg
「Set Resolution Scale Normalized」は解像度のスケールを「0.0-1.0」の間で設定します。
「New Scale Normalized」には0.0から1.0の値を指定します。

これだけで、もとのこの画面が
SetResolutionScaleValue001.jpg
スケールを小さくするとこんな感じに解像度が低くなります。
SetResolutionScaleValue000.jpg

リアルタイムでこういった処理をやる場合は、処理負荷が大きかったりするときなのですかね。
ちなみに、この解像度変更はウィンドウのサイズは変わりませんので注意してください。

あとは「Set Resolution Scale Normalized」以外にもこういったノードがあります。

解像度のスケールを「0.0から100.0」で指定する「Set Resolution Scale Value」ノード。
SetResolutionScaleValue003.jpg
「New Scale Normalized」には0.0から100.0の値を指定します。

解像度を直接指定する「Set Screen Resolution」
SetResolutionScaleValue002.jpg
「Resolution」には縦横の解像度の値を入れます。

alwei さんのブログに書いてあるのですが、

これが結構ハマりやすいところで、"SetResolutionScaleValue"を使って値を設定すると、
設定値通りにいかないことがあります。
どうやらこの値はWindowサイズによって上限値と下限値が決められているらしく、
単純に値を設定してそれ通りに設定されないことがあります。

この場合、"Set Screen Resolution Nomalized"を使用すると、
正しく正規化された値を0から1の間で設定可能で、
例えば「解像度を25%まで落としたい」という場合に"0.25"という値を設定すれば正常に適用できます。
下手に"SetResolutionScaleValue"を利用すると下限値の設定に引っかかりやすいので、
"Set Screen Resolution Nomalized"を利用してください。


といったことがあるっぽいので注意が必要そうです。

| UE4 | 15:24 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 Game User Settings を使った設定と保存(Get Game User Settings、Apply Settings)

GameUserSettings を使った設定を行う方法です。

・コンソールコマンドの実行(Execute Console Command)

これでコマンドを発行して行っていることを、専用のノードを使って設定できるようになったのが
Game Use Settings になるようです。

今回参考にさせていただいたのはこちら。
いつもお世話になってます!

・UE4 GameUserSettingsを使ってウィンドウモードなどを設定する

さて、今回は設定の方法と反映だけの説明になります。
各設定ノードについては次回にでも。

Game User Settings を使って設定する場合は
「Get Game User Settings」ノードを使います。
GameeUserSettomgs000.jpg

これで取得した値を使って、設定をしたり、設定の反映を行います。
設定を反映する場合は「Apply Settings」ノードを使います。
GameeUserSettomgs001.jpg

この二つを使うことで、設定したものを反映して保存することができます。
GameeUserSettomgs005.jpg
こんな感じですね。

alwei さんのサイトによると

これらの設定は適用した段階でUE4側で自動的にコンフィグファイルに保存されます。
"Save Settings"というノードがありますが、こちらを使用しなくてもなぜか保存されています。
なので次回以降の起動でもこの設定を適用した状態で起動することになります。
コンフィグファイル自体はWindowsの場合、デフォルトでは以下の場所に格納されます。

C:\Users\"ユーザー名"\AppData\Local\"プロジェクト名"\Saved\Config\WindowsNoEditor\GameUserSettings.ini

AppDataフォルダー以下は隠しファイルになっていますので、
探す場合には隠しファイルを表示させてください。

なぜか自動保存されていることに気づかず、
設定を変えてしまうと特に再設定しなければそのまま固定されてしまうので注意してください。

とのことで、
C:\Users\"ユーザー名"\AppData\Local\"プロジェクト名"\Saved\Config\WindowsNoEditor\GameUserSettings.ini
に、自動保存されるようです。
エディタ上で設定しても保存されるので注意しましょう。

この Game User Settings で設定できる項目はこういうものがあるようです。

・UGameUserSettings
https://docs.unrealengine.com/latest/INT/API/Runtime/Engine/GameFramework/UGameUserSettings/index.html

これらについてはまた後程にでも。

| UE4 | 18:18 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 レイとオブジェクトのコリジョンとのヒット判定(Line Trace For Objects、Multi Line Trace For Objects)

レイとコリジョンのあたり判定です。
今回は指定したオブジェクトタイプのコリジョンに対してのものになります。
ここらへんを参考にさせてもらいました。

・UE4 マウスの位置をワールド座標に変換する
http://qiita.com/nkdtr/items/3a6768f6a60996136794

・ブループリントにおけるレイキャスト(トレーシング)の使い方
https://docs.unrealengine.com/latest/JPN/Gameplay/HowTo/UseRaycasts/Blueprints/index.html

オブジェクトでのレイとコリジョンのあたり判定は「Line Trace For Objects」ノードを使います。
LineTraceForObjects002.jpg
「Start」から「End」に向かうレイでチェックを行います。
「Object Types」は判定を行うオブジェクトの配列を指定します。
「Make Array」で持ってこれます。
「Trace Complex」はComplex コリジョンと判定をするかのチェックです。
「Actors to Ignore」は判定を無視するアクター配列です。
「Draw Debug Type」はこのノードの処理をしたときに画面上に結果を表示するかどうかです。
「None」は表示なし、「For One Frame」は1フレームだけ表示。
「For Duration」は一定時間表示、「Persistent」は永続表示となります。
「Ignore Self」は自分自身を判定から除外するかどうかです。

「Complex コリジョン」についてはこちらを。

・Simple コリジョンと Complex コリジョン
https://docs.unrealengine.com/latest/JPN/Engine/Physics/SimpleVsComplex/index.html

「Line Trace For Objects」は最初にヒットした結果を返します。
結果の取得はこんな感じに取得できます。
LineTraceForObjects000.jpg

「Line Trace For Objects」は最初にヒットした結果を返しますが
「Multi Line Trace For Objects」を使うとすべてのヒットした結果を受け取れます。
LineTraceForObjects001.jpg

と、こんな感じでしょうか。
「Line Trace By Channel」と同じくゲームでは使うことが多そうですね。

| UE4 | 16:52 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 レイとチャンネルのコリジョンとのヒット判定(Line Trace By Channel、Multi Line Trace By Channel)

レイとコリジョンのあたり判定です。
今回は指定したチャンネルに属するコリジョンに対してのものになります。
ここらへんを参考にさせてもらいました。

・UE4 マウスの位置をワールド座標に変換する
http://qiita.com/nkdtr/items/3a6768f6a60996136794

・ブループリントにおけるレイキャスト(トレーシング)の使い方
https://docs.unrealengine.com/latest/JPN/Gameplay/HowTo/UseRaycasts/Blueprints/index.html

レイとコリジョンのあたり判定は「Line Trace By Channel」ノードを使います。
LineTraceByChannel000.jpg
「Start」から「End」に向かうレイでチェックを行います。
「Trace Channel」は判定を行うコリジョンのチャンネルを指定します。
デフォルトでは「Visibility」になっていて「表示しているもの」と受け取りそうですが
存在しているチャンネルのデフォルトが「Visibility」になっているだけなので、
自分でチャンネルを増やして指定することができます。
「Trace Complex」はComplex コリジョンと判定をするかのチェックです。
「Actors to Ignore」は判定を無視するアクター配列です。
「Draw Debug Type」はこのノードの処理をしたときに画面上に結果を表示するかどうかです。
「None」は表示なし、「For One Frame」は1フレームだけ表示。
「For Duration」は一定時間表示、「Persistent」は永続表示となります。
「Ignore Self」は自分自身を判定から除外するかどうかです。

「Complex コリジョン」についてはこちらを。

・Simple コリジョンと Complex コリジョン
https://docs.unrealengine.com/latest/JPN/Engine/Physics/SimpleVsComplex/index.html

「Line Trace By Channel」は最初にヒットした結果を返します。
結果の取得はこんな感じに取得できます。
LineTraceByChannel001.jpg

「Line Trace By Channel」は最初にヒットした結果を返しますが
「Multi Line Trace By Channel」を使うとすべてのヒットした結果を受け取れます。
LineTraceByChannel002.jpg

と、こんな感じでしょうか。
マウスでクリックした位置のワールド座標でのヒット判定はこんな感じになります。
LineTraceByChannel003.jpg

レイ関係の判定はゲームで使うことが多そうですね。

| UE4 | 15:48 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 指定した範囲の中のランダム位置を取得(Random Point in Bounding Box)

指定した範囲内のランダムな位置を取得する方法です。
ここらへんを参考にさせてもらいました。

・「Unreal Engine」エンドレスランナー作成
http://shivat.hatenablog.com/entry/2015/07/14/004423

・UE4:Random Point in Bounding Box メモ
http://unrealbussan.hatenablog.com/entry/2015/02/27/143723

指定した範囲内のランダム位置を取得するには
「Random Point in Bounding Box」ノードを使います。
RandomPointInBoundingBox000.jpg
「Origin」を中心とした位置に
「Box Extent」を±した位置をランダムで返します。

公式ドキュメントはこちら。

・Random Point in Bounding Box
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Math/Random/RandomPointinBoundingBox/index.html

両方ともVector型なので、こんな感じで組み込みます。
RandomPointInBoundingBox001.jpg
サードパーソンのテンプレートにある「?」マークのついた得体のしれないものを
上記の処理で適当に配置してみました。
RandomPointInBoundingBox002.jpg
こんな感じでいい感じに配置できました。

この処理は別途でランダムノードを使って計算すれば同じようなことができたりするのですが
おそらく使い方の想定としては、他のアクターなどからパラメータをとってくるのだと思います。

というわけで「Box Trigger」を配置してやってみます。
RandomPointInBoundingBox004.jpg
上記の「Box Trigger」から範囲を受け取って
「Random Point in Bounding Box」ノードを実行します。
RandomPointInBoundingBox003.jpg
こんな感じですね。
そうすると、配置した「Box Trigger」のコリジョンの範囲に配置されます。
RandomPointInBoundingBox005.jpg
というわけで、直接数値を指定するより、
エディタ上で配置したものの範囲にこれで位置を取得できるので便利なのかなと思います。

ゲームを作るとこういった処理は、
敵のポップ位置だったりで結構使いそうな気がするのでよさそうですね。

| UE4 | 14:37 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

ゲーム制作記事目次

ゲーム制作に役立ちそうな情報をまとめたメモの目次です。

・ゲーム制作参考メモ
ゲーム制作関係で参考になりそうなものをまとめました。

・アニメちっく3D参考メモ
アニメ的な表現関係で参考になりそうなものをまとめました。

・エフェクト参考メモ
エフェクト関係で参考になりそうなものをまとめました。

・UI参考メモ
UI(ユーザーインターフェース)関係で参考になりそうなものをまとめました。

| ゲーム制作記事目次 | 17:17 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

Unity 参考メモ

Unity 参考用メモ。


























| Unity | 16:50 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UI 参考メモ

UI参考用のメモ。



・モーション周期表
http://foxcodex.html.xdomain.jp/
SymmetricMove-Ex002.gif






・ゲームUIブログ
http://gameui.matme.info/blog/

・Adobe Color CC
https://color.adobe.com/ja/create/color-wheel/


・UIの改悪がUXを改善させる場合
http://blog.livedoor.jp/lunarmodule7/archives/3675720.html

・ルールが共有できれば、男性でもカワイイ!は作れる。生き物のように変化する、UIデザインのコツ
http://markezine.jp/article/detail/15479

・ローディング時のズルい進捗表示
http://qiita.com/mono0926/items/ead7c576170277a5e83d

| ゲーム制作 | 16:21 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

エフェクト参考メモ

エフェクト参考用メモ。




・DEV BLOG: EVERYTHING WILL DISTORT, EVERYTHING WILL BE UNQUANTIFIABLE
http://siegeandsandfox.com/game-art/refraction/



・Battleborn - Michel Gagné's Hand Drawn FX Animation - 1080P



・Art directing effects for inFAMOUS: Second Son
https://www.fxguide.com/featured/art-directing-effects-for-infamous-second-son/






| ゲーム制作 | 15:04 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

アニメちっく3D参考メモ

アニメ的な3Dモデル参考用のメモ。





















| ゲーム制作 | 13:01 | comments:0 | trackbacks:0 | TOP↑

| PAGE-SELECT | NEXT