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

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

2017年06月 | ARCHIVE-SELECT | 2017年08月

| PAGE-SELECT | NEXT

≫ EDIT

UE4 テクスチャストリーミングの機能をオフにして低い解像度のテクスチャが一瞬表示されないようにする(Never Stream)

UE4ではテクスチャストリーミングという徐々にテクスチャを読み込みながら表示をしていく
ロード時間やメモリに優しい機能があります。

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

・テクスチャ ストリーミングの概要
https://docs.unrealengine.com/latest/JPN/Engine/Content/Types/Textures/Streaming/Overview/index.html

その際、低解像度のテクスチャから読み込んでいき表示されるので
一瞬だけ低解像度のテクスチャが表示されてしまうことがあります。
これを解消する方法です。

こちらも参考にさせていただきました。

● Never Stream
ONにするとテクスチャストリーミングをしません。
ゲーム実行中にテクスチャを読み込むのがテクスチャストリーミングで、ロードを速くする代わりにテクスチャが粗い状態から徐々に綺麗になるアレです。綺麗なテクスチャを後から読んでいる訳です。
しかしエフェクトは突発的に出る上に画面近くで粗いテクスチャが表示されると困りますよね。なのでNever Streamに設定するとストリームせず最適なMipレベルのテクスチャが表示されます。これはつまり全てのMipレベルを事前にロードするということであり、そもそも旧来の方法でもあります。


テクスチャのプロパティ画面はこんなかんじになります。
テクスチャストリーミング000
この詳細の中にある「Never Stream」という項目にチェックをいれることで
テクスチャストリーミングの機能をオフにすることができます。
テクスチャストリーミング001
簡単ですね。

ちなみに上記テクスチャがそうなのですが

テクスチャ ストリーミング システム、すなわちストリーマーはアンリアル エンジンの一部であり、各テクスチャの解像度を高くしたり、低くしたりします。これにより、利用可能なメモリを効率的に管理しながら 視覚的クオリティを適切に保ちます。この一部はミップすなわちミップマップで行われます。ミップはご利用のテクスチャ解像度に対して事前計算された画像のシーケンスです。テクスチャの LOD (Level of Detail) のようなものと考えることができます。 ミップの詳細については、 テクスチャのサポートと設定 のページをご覧ください。

といった「ミップマップで行われます」とあるので
ミップマップを持たないテクスチャだと「Never Stream」のチェック状態は変更できないようになっているようです。

どうしても見せたいエフェクトなどがない限りはチェックを入れなくてもいい気はしますが
ロード時間やメモリが間に合うのであればチェック入れてもよいかもですね。
スポンサーサイト

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

≫ EDIT

UE4 サウンドキュー(Audio Component)の音量を変更する(Adjust Volume)

サウンドキューの音量を変更する方法です。
公式ドキュメントはこちらに。

・Ambient Sound アクタのユーザーガイド
https://docs.unrealengine.com/latest/JPN/Engine/Audio/SoundActors/index.html

音量を変更する「Adjust Volume」ノードを使います。
サウンドキュー音量変更001
「Target」には「Audio Component」を指定します。
「Adjust Volume Duration」には音量の変更が終了するまでの時間を秒で指定します。
「Adjust Volume Level」は変更する音量を指定します。1.0で通常の音量。0.0で無音となります。

実際にノードを組むとこんな感じになります。
サウンドキュー音量変更000

音量の変更は結構頻繁に使うと思うのでよさそうですね。
とはいえこのノードでいいのかはちょっと不安だったりします。

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

≫ EDIT

UE4 サウンドキュー(Audio Component)の音量をフェードアウトさせる(Fade Out)

サウンドキューの音量をフェードアウトさせる方法です。
公式ドキュメントはこちらに。

・Ambient Sound アクタのユーザーガイド
https://docs.unrealengine.com/latest/JPN/Engine/Audio/SoundActors/index.html

音量をフェードアウトさせるには「Fade Out」ノードを使います。
サウンドキューフェードアウト001
「Target」には「Audio Component」を指定します。
「Fade Out Duration」には音量がフェードアウトするまでの時間を秒で指定します。
「Fade Volume Level」には音量を指定します。1.0で等倍です。

だいたいは「Fade Volume Level」には0.0を指定することになると思います。
ちょっと確認したところ、どうもこの「Fade Out」ノードはフェードが終わったら停止するようです。
なので音量変更という用途には使えないかもですね。
あくまで自然に停止させたり、ほかの音とクロスフェードさせるとかですかね。

実際にノードを組んでみるとこんな感じになります。
サウンドキューフェードアウト000

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

≫ EDIT

UE4 アクター(Actor)を時間指定で遅延破棄する(Set Life Span)

アクターを時間を指定して遅延破棄する方法です。
こんな便利な機能あったんですね。
こちらを参考にさせていただきました。

・第5回ue4ハンズオンセミナー
http://shivat.hatenablog.com/entry/2015/07/07/020549

・「Set Life Span」について
Set Life Span関数を使用することによって、アクタ(Target)に生存期間を設定することができる。
設定期間が終わると、Destroy()がアクタ上に自動的に呼び出される。
また、
「設定期間が終わるとDestroy()がアクタ上に自動的に呼び出される」というようなランタイムシステムは、
アクタの最初の位置と回転を設定する必要がある。
そのため、
「Get Actor Location」でアクタの位置を取得している。
つまり、
「Set Life Span」は、EnemyCharacter(Target)を0.2秒後に破壊する。


アクターを遅延破棄するには「Set Life Span」ノードを使います。
アクターの遅延破棄001
「Target」にはアクターを指定します。
「In Lifespan」には破棄するまでの時間を秒指定します。

実際にノードを組んでみるとこんな感じですね。
アクターの遅延破棄000
3秒後にアクターを破棄する。といった処理になっています。

「Set Life Span」はこういった問題の時にでも使えるみたいですね。

・オーバーラップしたアクターをDestroy Actorで破壊しようとするとエラーが出ます。
https://answers.unrealengine.com/questions/550150/%E3%82%AA%E3%83%BC%E3%83%8F%E3%83%BC%E3%83%A9%E3%83%83%E3%83%95%E3%81%97%E3%81%9F%E3%82%A2%E3%82%AF%E3%82%BF%E3%83%BC%E3%82%92destroy-actor%E3%81%A6%E7%A0%B4%E5%A3%8A%E3%81%97%E3%82%88%E3%81%86%E3%81%A8%E3%81%99%E3%82%8B%E3%81%A8%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8B%E5%87%BA%E3%81%BE%E3%81%99-1.html

・[BP]Blueprintアンチパターン その2 -Pure関数+ForEachLoop-
http://unwitherer.blogspot.jp/2017/04/bpblueprint-2-pureforeachloop.html

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

≫ EDIT

UE4 サウンドキュー(Audio Component)の音量をフェードインさせながら再生する(Fade In)

サウンドキューの音量をフェードインさせながら再生する方法です。
公式ドキュメントはこちらに。

・Ambient Sound アクタのユーザーガイド
https://docs.unrealengine.com/latest/JPN/Engine/Audio/SoundActors/index.html

音量をフェードインさせながら再生するには「Fade In」ノードを使います。
サウンドキューフェードイン001
「Fade in Duration」には音量が切り替わるまでの秒数を指定します。
「Fade Volume Level」には音量のレベル(1.0で通常の音量)を指定します。
「Start Time」には再生開始位置を秒で指定します。

実際にノードを組んでみるとこんな感じですね。
サウンドキューフェードイン000

クロスフェードとかでBGMを切り替えるとかに使うな感じですかねー。

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

≫ EDIT

UE4 アクター(Actor)を破棄する(Destroy Actor)

アクターをBPから破棄する方法です。
公式ドキュメントはこちら。

・ブループリントでアクタをスポーン、破棄する
https://docs.unrealengine.com/latest/JPN/Gameplay/HowTo/SpawnAndDestroyActors/Blueprints/index.html

アクターを破棄するには「Destroy Actor」ノードを使います。
アクターの破棄000
「Target」には「アクター(Actor)」を指定します。

これだけなので簡単なのですが
以下のような問題もあるようなので注意が必要そうです。

・オーバーラップしたアクターをDestroy Actorで破壊しようとするとエラーが出ます。
https://answers.unrealengine.com/questions/550144/%E3%82%AA%E3%83%BC%E3%83%8F%E3%83%BC%E3%83%A9%E3%83%83%E3%83%95%E3%81%97%E3%81%9F%E3%82%A2%E3%82%AF%E3%82%BF%E3%83%BC%E3%82%92destroy-actor%E3%81%A6%E7%A0%B4%E5%A3%8A%E3%81%97%E3%82%88%E3%81%86%E3%81%A8%E3%81%99%E3%82%8B%E3%81%A8%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8B%E5%87%BA%E3%81%BE%E3%81%99.html

これを解決するには「Destroy Actor」ではなく、
遅延破棄してくれる「Set Life Span」ノードを使うのも手みたいでね。

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

≫ EDIT

UE4 サウンドキュー(Audio Component)のポーズ(一時停止)の切り替え(Set Paused)

サウンドキューを再生した後、一時的にポーズ(一時停止)と
その一時停止状態から再生を開始する方法です。

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

・Ambient Sound アクタのユーザーガイド
https://docs.unrealengine.com/latest/JPN/Engine/Audio/SoundActors/index.html

一時停止の切り替えには「Set Paused」ノードを使います。
サウンドキューのポーズ001
「Target」には「Audio Component」を指定します。
「Pause」には停止状態を指定します。True なら停止、False なら再生となります。

実際の処理としてはこんな感じになります。
サウンドキューのポーズ000
変数を持つのもめんどくさいので
「Flip Flop」ノードを使って一時停止状態を交互に切り替えています。

とこんな感じで一時停止を制御できます。
実際の場合は「Pause」に渡すのを変数にしないとだめそうですね。

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

≫ EDIT

UE4 アクター(Actor)でキー入力受け付けの有効無効を動的に切り替える(Enable Input、Disable Input)

こんな感じで取得しているキー入力の受け付けを
動的に有効無効が切り替えれないか調べてました。
アクターのインプット有効002

そうしたらこういった記事が。

・UE4:プレイヤーのKey入力を取得するActorの簡易的な実装
http://unrealbussan.hatenablog.com/entry/2015/11/18/080139

公式ドキュメントもこういったものがありました。

・ブループリントでアクタに入力を設定する操作手順
https://docs.unrealengine.com/latest/JPN/Gameplay/HowTo/ActorInput/Blueprints/index.html

キー入力受け付けを有効にする場合は
「Enable Input」ノードを使います。
アクターのインプット有効001
「Target」にはアクターを指定します。
「Player Controller」にはプレイヤーコントローラーを指定します。

実際に使う場合はこんな感じに。
アクターのインプット有効000

キー入力受け付けを無効にする場合は
「DIsable Input」を使いましょう。
アクターのインプット有効005
「Target」にはアクターを指定します。
「Player Controller」にはプレイヤーコントローラーを指定します。

イベント中はキー入力の受け付けを無効にしたいなど
結構つかいどころはありそうですね。

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

≫ EDIT

UE4 アクター(Actor)でキー入力を受け取れるようにする(Auto Receive Input)

アクターを作成したときに、
レベルBPと同じようにこんな感じでキー入力をとろうとしたら
うんともすんともいわなくて悶絶してました。
アクターのインプット有効002

よくよく調べてみるとこんな感じの記事がありました。

・UE4:プレイヤーのKey入力を取得するActorの簡易的な実装
http://unrealbussan.hatenablog.com/entry/2015/11/18/080139

デフォルトのアクターの状態ではキー入力はとれないらしいですね。なるほど。

こんな感じで設定できるようです。

アクターの「Auto Receive Input」の設定があったので
アクターのインプット有効003
「Disabled」になっているのを「Player 0」に変えてあげました。
アクターのインプット有効004

これで無事アクターのBPでキー入力が取れるようになりました!

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

≫ EDIT

UE4 サウンドキュー(Audio Component)を停止する(Stop)

サウンドキューを再生したものを停止する方法です。
ここらへんを参考に。

・Ambient Sound アクタのユーザーガイド
https://docs.unrealengine.com/latest/JPN/Engine/Audio/SoundActors/index.html

サウンドキューの停止には「Stop」ノードを使います。
サウンドキューの停止001
「Target」には「Audio Component」を指定します。

実際のノードはこんな感じに。
サウンドキューの停止000
これだけで停止します。簡単ですね。

「Audio Component」系のノードは結構あるので
用途にあったノードを使うといい感じに制御できそうです。

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

| PAGE-SELECT | NEXT