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

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

≫ EDIT

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

| スポンサー広告 | --:-- | comments(-) | trackbacks(-) | TOP↑

≫ EDIT

UE4 アクター(Actor)の中のコンポーネントを取得する(Get Components by Class)

アクターに含まれるコンポーネントを取得する方法です。

コンポーネントを取得するには「Get Components by Class」を使います。
コンポーネント取得000
ターゲットにはアクターを。
「Component Class」には取得したいコンポーネントのクラスを指定します。

取得したコンポーネントは配列として取得されるので
ForEachLoop などを使って処理してあげましょう。

サードパーソンのサンプルの「ThirdPersonCharacter」アクターを使っての例はこんな感じに。
コンポーネント取得001
「CapsuleComponent」の「Simulate Physics」の状態を表示するようにしてみました。

結構これは使う機会あるのかなと思いつつ、
Unityであれば初期化時に変数に保存しておいて使うとか、
そういった使い方になるのかなと思いました。
スポンサーサイト

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

≫ EDIT

UE4 基礎・インターフェース(Interface)について

インターフェース(Interface)についてのメモ書きです。
以下のサイトでインターフェースの概要と導入についてまとめられていますので
まずは見てみるとよさそうです。

・UE4関連 Interfaceは必須 理解したい人に向けて 概要編 #UE4#UE4Study
http://www.azstoke.jp/posts/1790166

・UE4関連 Interfaceは必須 理解したい人に向けて 導入編 #UE4#UE4Study
http://www.azstoke.jp/posts/1790700

GameMode を使っての実例だったりするので、
近いうちに GameMode についてもメモをとらないとだめかな思いますが
概念はかなりわかりやすく説明されているのでとても参考になりました。

動画にも手順をまとめれています。


こういうまとめほんと助かります!

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

≫ EDIT

UE4 便利プラグイン・ゲーム起動時のコンフィグウィンドウ(SetupUEr)

キーコンフィグや設定ができるUE4用のコンフィグウィンドウのプラグインについてです。

お茶煮さんの東方萃想神楽というゲームを起動したときにこんな感じのウィンドウがでてました。
SuperUEr000.jpg

キーコンフィグとかいろいろ設定できるので、UE4こんなことできるんだーと思っていたのですが
おかずさんからこれを表示するためのプラグインを教えてもらいました。

「SetupUEr」というプラグインのようですね。

・SetupUEr
https://www.unrealengine.com/marketplace/setupuer

グラフィックやキーボードのセッティングができるようです。
こういうのあるのとないのとだと、ゲーム始める時の印象が違うのでよさそうですね。

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

≫ EDIT

UE4 配列の要素すべてに対して処理を行う(ノードを直接繋ぐ)

「Get All Widgets Of Class」や「Get All Actors Of Class」などで取得した
配列すべての要素に対して処理を行うときの方法です。
「For Each Loop」を使わずに直接配列変数をつなぐやり方となります。

詳しい説明はこちらに。

・UE4 配列要素の処理をForEachLoopなしで行う
http://unrealengine.hatenablog.com/entry/2017/01/14/133301

やり方はそのままで、ForEachLoop を使って要素を接続ノードを
配列の変数そのまま接続するだけとなります。

こんな感じの配列変数があった場合
配列直アクセス000

通常ならForEachLoopを使ってこんな感じで処理をしますが
配列直アクセス002

直接接続することで配列の要素すべてに対して処理を行うことができるようです。
配列直アクセス001

ほとんど誤差の範囲かもしれませんが、明確な差がでています。どうやらやはりForEachLoopはない方が高速なようです。ただし、これはエディターの中であり、Shipping時に最適化される可能性はあるかもしれません。
とりあえず特に問題がなければForEachLoopなしで配列要素の処理をさせてもよさそうです。

といったこともあるようなので、単純なものであれば使ってみたもよいかもしれませんね。

それと、この機能は4.12では自分のところではできなく、
4.14ではできたので、4.14以降で実装されたものなのかもです。

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

≫ EDIT

UE4 配列の要素すべてに対して逆から処理を行う(ReverseForEachLoop)

「Get All Widgets Of Class」や「Get All Actors Of Class」などで取得した
配列すべての要素に対して処理を行うときには「For Each Loop」ノードを使いますが
この配列の頭からではなく、後ろから順に処理を行う方法です。

配列を逆から処理する場合は「ReverseForEachLoop」ノードを使います。
使い方は「ForEachLoop」とおなじでこんな感じに。
ReverseForEachLoop000.png
「Array Index」には現在配列の何番目の要素なのかが返ります。
ループが終了すると「Completed」が実行されるようです。

4.12などでは使えなかった機能ですので、たぶん4.14から増えたノードなのかなと。

| UE4 | 11:50 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 ライト(光源)にマテリアルを適用して投影する(Light Function)

ライトの光で照らされる場所にマテリアルを適用する方法です。
こんな感じですね。
ライトファンクション007

historia さんのこちらを参考に試してみました。

・[UE4] Light Functionの基本と応用
http://historia.co.jp/archives/784

「Light Function」はライトにマテリアルを適用する機能で、ライトが照らす範囲をマスクする事ができます。
ミラーボールやプラネタリウムのような特殊な照明の表現はもちろん、マテリアルを工夫すれば、水面の照り返しや木漏れ日なども手軽に再現できます。

ということに使えるみたいです。

まずはマテリアルをつくります。
ライトファンクション003

マテリアルの詳細設定で
マテリアル属性(Material Domain)「Light Function」に変更します。
ライトファンクション001

投影したいテクスチャをインポートして
ライトファンクション004

Emissive Colorに白黒のマスク用テクスチャを接続します。

インポートしたテクスチャをマテリアルでエミッシブにつないであげましょう。
ライトファンクション002
こんな感じにとりあえずしてみました。

①Spot Lightをシーン上に配置。(Point Light でも可)
②配置したSpot Light の Details 内の Light Function Material の中に、先ほど作成したLight Function マテリアル をアサインします。

というわけでシーンにライトを配置します。
ライトファンクション005
今回はスポットライトを配置しましたが、ポイントライトでも大丈夫みたいです。

最後にライトの詳細の「ライトファンクション(Light Function Material )」
最初につくったマテリアルを設定します。
ライトファンクション006

そうするとこんな感じでライトファンクションマテリアルが適用され投影されました。
ライトファンクション000
エディタのプレビュー上でも見れるのはうれしいですね。

historia さんのページで書かれている応用ではこんな感じのこともできるようです。
ライトファンクション000
ポイントライト、テクスチャのタイリングとUVアニメーションを使うとできるみたいです。

洞窟での水面の照り返しやプラネタリウムとか作れそうですね。
こういった簡単にいい感じの見え方の効果が作れるのは嬉しいですね。

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

≫ EDIT

UE4 Light SourceとSkySphereBlueptintとAtomospheric Fog

「Light Source」と「SkySphereBlueptint」や「Atomospheric Fog」 について全然わかってないのでメモ。
随時更新予定です。

・公式ドキュメント指向性ライト
https://docs.unrealengine.com/latest/JPN/Engine/Rendering/LightingAndShadows/LightTypes/Directional/index.html

・公式ドキュメントAtomospheric Fog に関するユーザーガイド
https://docs.unrealengine.com/latest/JPN/Engine/Actors/FogEffects/AtmosphericFog/index.html

・Unreal EngineのSky SphereやAtmopsheric Fogを使った空の背景の設定&Light Sourceを使った光の当て方 (1/2)
http://www.atmarkit.co.jp/ait/articles/1508/04/news021.html

・Unreal EngineのSky SphereやAtmopsheric Fogを使った空の背景の設定&Light Sourceを使った光の当て方 (2/2)
http://www.atmarkit.co.jp/ait/articles/1508/04/news021_2.html

とりあえず一対でワンセットなのでしょうか。
日本語でこれらについて詳しく役割が書いてあるサイトやブログなどがあるといいなぁ。

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

≫ EDIT

UE4 太陽の位置を動的に動かして昼夜などの時間変化や影を制御する(Update Sun Direction、Light Source、SkySphereBlueprint)

「Light Source」「SkySphereBlueptint」 を使って
太陽の位置を動かして、昼夜などの時間変化や影の方向を制御する方法です。

「Light Source」と「SkySphereBlueptint」についてはわからないことが多すぎるので
別途どこかで調べようと思います。

とりあえずは、こちらのサイトを参考にやってみました。

・「Unreal Engine」動的に時間経過させる・太陽(影)の位置を変える
http://shivat.hatenablog.com/entry/2017/01/20/163644

手順としてはこんな感じでした。

Light Source(Directional Light)のトランスフォームをスタティックからムーバブルに変更。
太陽を動的に動かす000

次に、SkySphereがあるか確認してください。

ということで「SkySphereBlueptint」があるかどうかを確認しました。
太陽を動的に動かす001
太陽を動かすには「Light Source」と「SkySphereBlueptint」が必要みたいですね。

あとは「Light Source」に対して「AddActorLocalRotation」ノードなどで太陽の角度を変更してあげます。
太陽を動的に動かす002
「Light Source」と「SkySphereBlueptint」をアウトライナからドラッグ&ドロップして使いましょう。
最後に、「Update Sun Direction」ノードを呼んであげないと反映されないようです。
ターゲットには「SkySphereBlueptint」を渡してあげましょう。

と、一応これだけでこんな感じになるようです!
(試したけど動画をとれなかったのでこちらを)

時間制御のチュートリアルの動画があるようです。


こういうのが簡単にできるのはほんとエンジンすごいなって思います。

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

≫ EDIT

UE4 UMGでImageウィジェットの画像をTextureで差し替える(Set Brush from Texture)

UMG のImage ウィジェットの画像をTextureから置き換える方法です。
こちらのブログを参考にしました。

・UE4で外部ファイルを扱ってみる
http://eaglegames.hatenablog.com/entry/2015/12/21/163309

まずはUMGでImageウィジェットを配置します。
UMGテクスチャをイメージに001
とりあえずは検証なので中身は空にしておきます。

これをブループリントで扱えるように外に出しておきます。
UMGテクスチャをイメージに002

テクスチャとして今回は「Download Image」をつかって
ツイッターアイコンをTextureとして持ってきます。
イメージのダウンロード001

このTextureをImageに反映させるには「Set Brush from Texture」ノードを使います。
UMGテクスチャをイメージに000
こんな感じになります。
「Texture」にはTextureを。
「Target」にはImageを渡してあげます。

実行するとこんな感じに。
イメージのダウンロード000
無事UMGのImageの画像が置き換わりました。

ゲームにUMGを実装すると動的に画像を変更することが多くなりそうなので
結構使いそうなノードになりそうですね。

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

≫ EDIT

UE4 画像ファイルをURL指定でダウンロードする(Download Image)

画像ファイルをURL指定でダウンロードする方法です。
ダウンロードした画像ファイルはテクスチャにして利用できたりします。

こちらを参考に。

・UE4で外部ファイルを扱ってみる
http://eaglegames.hatenablog.com/entry/2015/12/21/163309

方法はすごく簡単で「Download Image」ノードを使うだけです。
イメージのダウンロード001
とりあえず自分のツイッターのアイコン画像をダウンロードしてみました。

ダウンロードできたかを確認するためにUMGのイメージを差し替えて表示してみました。
イメージのダウンロード000

無事表示できたみたいです。
ここらへんのUMGでの使い方はまた別途ということで。

ユーザー毎の何かイメージを自由に設定するような場合に重宝しそうですね。

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

≫ EDIT

UE4 コントローラー(スマホ)の振動と停止(Client Play Force Feedback、Client Stop Force Feedback)

コントローラーやスマホを振動させるための方法です。

詳しくはこちらを参考にするといいと思います!

・【UE4】コントローラを振動させる
http://dfkfuturelab.hatenablog.com/entry/2017/01/07/222913

コントローラーを振動させるには「Client Play Force Feedback」ノードを使います。
コントローラー振動000

・ForceFeedbackEffect……振動のパターンプリセット
・Looping……振動パターンがループするか否か
・Tag……タグを持たせたい時に使う

「ターゲット」には「Player Controller」を渡してあげます。
「Force Freedback Effect」に渡すものはアセットとして作成したものを渡す必要があります。

「Force Freedback Effect」は
「新規作成」⇒「その他」⇒「フォースフィードバックエフェクト」で作成します。
コントローラー振動002

こんな感じのアセットができあがります。
コントローラー振動001

作られた「Force Freedback Effect」アセットをダブルクリックすると詳細ウィンドウが開きます。
この画面で振動の時間と強さを設定することができます。
コントローラー振動004

グラフで横・時間にたいする縦・振動の強さを描きます。

グラフ上で右クリックででるメニューからキーを打っていきましょう。

あとは「Client Play Force Feedback」ノードの
「Force Freedback Effect」パラメータに作った「「Force Freedback Effect」」を指定します。
すると簡単にコントローラーが振動しました! やったね。

コントローラー振動を停止させるには「Client Stop Force Feedback」ノードを使います。
コントローラー振動003
これだけで簡単に止まります。

公式ドキュメントはここになります。

・Client Play Force Feedback
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Game/Feedback/ClientPlayForceFeedback/index.html

ここのタグの説明を翻訳に流してみてみると

A tag that allows stopping of an effect. If another effect with this Tag is playing, it will be stopped and replaced
エフェクトの停止を許可するタグ。 このタグを持つ別のエフェクトが再生されている場合、それは停止され、置き換えられます

とありました。
タグ名を指定することで、そのタグの振動だけを止めたりできるようです。

大福未来研究所でも書かれている下記のブログを見る感じですと
普通に上記の方法でスマホも振動するみたいですね。

・ゲームパッドの振動とスマートフォンの振動は同じノード
http://imoue.hatenablog.com/entry/2016/01/31/224343

こういった処理が簡単にできるのはエンジンの恩恵ですね。

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

| PAGE-SELECT | NEXT

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。