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

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

2017年01月 | ARCHIVE-SELECT | 2017年03月

| PAGE-SELECT |

≫ 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↑

| PAGE-SELECT |