Quantcast
Channel: historia Inc –株式会社ヒストリア
Viewing all 981 articles
Browse latest View live

[UE4]ポストプロセスで描画したアウトラインを、半透明物でマスクする方法

$
0
0
執筆バージョン: Unreal Engine 4.25

ポストプロセス上でキャラクターのアウトライン描画を行う場合、

下図のように、煙や炎などの半透明物越しにアウトラインが描画されてしまって、困った事はありませんか?(私はあります)

今回はこの問題に対する、一つの解決法を解説していきたいと思います。


使うのはこちら。ポストプロセスマテリアル作成時に必ず使うノード、「Scene Texture」です。

Detailパネルから、Scene Texture id を “Post Process Input 1″に設定してください。

※一見、”Separate Translucency”という Scene Texture id から取得できそうですが、カーソルを合わせると”Not yet supported”と表示されるので、未実装のようです。

 

この”Scene Texture id”からは、下図のように “Separate Translucency RGB” の値が取得できます。

 

“Separate Translucency RGB”をグレースケール化し、アウトラインをマスクします。

 

これでポストプロセスによるアウトラインが、半透明物越しにマスクされるようになりました。

 

次に、この手法の注意点について説明します。

 

注意点①

Separate Translucency の Opacity を取得してマスクしている訳ではなく、RGBの値をグレースケールにしているだけなので、明度が低いカラーの半透明物はうまくマスクされません。グレースケール化した後の値を底上げしたりする工夫が必要です。

 

注意点②

半透明物はDOFの前後で2度描画されますが、今回の手法で取得できるマスクは “Render After DOF (= Separate Translucency)” で描画された半透明に限られます。

“Render After DOF” が “False” の半透明マテリアルはマスクされません。

用法・用量を守って、正しくお使いください。


[UE4]GameplayTagをフィルタリングして検索効率アップ

$
0
0
執筆バージョン: Unreal Engine 4.25

みなさんはGameplayTag(※1)は使用してますでしょうか?

以前のブログでもご紹介しました「GameplayAbilitySystem」(※2)でも大活躍のGameplayTag!

もちろん私が参加する開発中プロジェクトでも大活躍!は、してるのですが

あっちでGameplayTag!こっちもGameplayTag!と続け、いざGameplayTagを設定するかと編集しようとしたら

ずらーっと大量のGameplayTagが…もちろん検索も可能なので名前がわかっていれば絞り込みも可能ですが

設定するものがある程度決まっているなら項目は少ないほうがラクなのは確かです。

今回はC++を使用して予めGameplayTagのフィルタリングをし、必要なものだけ表示できるようにするための機能を紹介します。

メタ情報を追加

では早速コードを…

変数、関数にそれぞれ

  • 変数には メタ情報に「Categories = タグ名」を追加する
  • 関数にはメタ情報に「GameplayTagFilter = タグ名」を追加する

をすることで該当するGameplayTagのみが表示されるようになります。

次では実際にサンプルプロジェクトでGameplayTagのフィルタリングをしてみました

サンプルプロジェクトのタグ構成

サンプルプロジェクトのタグには

  • hogeTag.testA
  • hogeTag.testB
  • hogeTag.testC
  • hugaTag.testD

がありそれぞれの子どもに「gameplayTag1 ~ 10」を追加しました。

hugaTagでのフィルタリング

「hogeTag」「hugaTag」がルートに存在しこれの「hugaTag」を指定するようにすることで ↓ のように

変数

関数

「hugaTag」と指定されたGameplayTagのみが表示されるようになりました。また、予め絞り込みができるだけでなく「hogeTag」と入力しても候補には表示されず指定することができなくなります。

これにより設定時のヒューマンエラーなども未然に防ぐことが可能になりますね。

階層指定も可能

この指定方法はGameplayTagの階層指定も対応しています。今度は「hogeTag.testA」と指定してみました。

変数

関数

のように指定した「hogeTag.testA」以下のGameplayTagのみ表示されるようになります。

「hogeTag」が表示されてませんがもちろん指定すれば親のタグ名もある状態で設定されます。

BPで追加したGameplayTag、GameplayTagContainer

残念ながらBP上で追加した変数や関数のGameplayTag、GameplayTagContainerではフィルタリングする方法はなさそうでした。

頑張って検索検索!

まとめ

今回の機能を使わなくとも特にGameplayTagを使用する分には何も問題ありません。

が、覚えておくといつか役に立つ日があるかもしれません。

少しでも皆様の開発に役立てばと思います。

ここまで読んでいただきありがとうございました。

※1:GameplayTagについての参考記事

https://docs.unrealengine.com/ja/Gameplay/Tags/index.html

https://www.unrealengine.com/ja/tech-blog/using-gameplay-tags-to-label-and-organize-your-content-in-ue4?sessionInvalidated=true

https://qiita.com/advent-calendar/2019/ue4-gameplaytag

※2:ブログについて

[UE4]GameplayAbilitySystemでコンボ攻撃を作る

オンライン出張ヒストリア! ゲーム開発勉強会2020 講演動画&スライド資料公開!

$
0
0

みなさんこんにちは、ヒストリア広報部です!
先日行われた生放送「オンライン出張ヒストリア! ゲーム開発勉強会2020」の
全4講演の講演動画とスライド資料を公開いたしました!

当日観れなかった方、もう一度観なおしたい方、是非ご覧ください♪

「オンライン出張ヒストリア! ゲーム開発勉強会2020」告知ページ

 

 

「ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法」

講演者
株式会社ヒストリア 佐々木 瞬 (代表取締役 / プロデューサー / ディレクター)

概要
設立から約7年、最近ではゲームタイトルを丸々1本任せて頂くことが多くなり、ある一定の安定性をもってプロジェクトを進められる経験が溜まってきました。
ヒストリアではどのプロジェクトでも、アジャイル系のマネジメント手法”スクラム”をベースとしたマネジメント手法を社内共通で採用しています。
本セッションでは、ヒストリアで行っている全体スケジュールの立て方、マイルストーンの切り方、
スプリント(短い期間で区切られた開発単位)内でやること、納品時の段取りなどを、各開発フェイズで重要視すべきこととともにご紹介します。
本セッションはマネージャー層向けではなく、開発者の皆さん向けに構成してあります。マネジメント手法はチーム全体がその手法に対する思想を理解してこそ威力を発揮します。
この機会にいままで社内で暗黙知として運用されていたことを改めて定義するとともに、皆さんと共有できたらと思います。

 

「Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~」

講演者
株式会社ヒストリア ヒストリア・エンタープライズチーム 天見 信太郎 (アーティスト)

概要
Cutting-Edge Test DriveはUE4による自動車業界での活用例を示す技術デモになります。
高品質アセットのMegascansを活用したことにより少人数短期間で制作することができました。
この講演では、Megascans BrideとUE4プラグインの組み合わせることにより、2つの空間(カースタジオと荒野)を効率的に制作したプロセスをお見せし、
そこで気がついたことや苦労した事などを紹介いたします。
また、講演を通じて普段UE4や3DCGに触れていない方にもUnreal Engineによる絵作りの楽しさをお伝えできればと思います。

Cutting-Edge Test Drive特設ページ https://historia.co.jp/enterprise/cetd/

 

「コンテンツサンプルを楽しむ”超”初心者の為のNiagara」

講演者
Epic Games Japan 斎藤 修 (Technical Artist – Developer Relations)

概要
4.25よりプロダクションレディとなったUEの新エフェクトツールNiagara!
「いや、でも、ちょっと待って。そもそもエフェクト自体を触った事もないんだけど……、Niagaraって難しいんでしょ?」という方、
ご安心ください。Niagaraは初めてエフェクトを作る!という方にもピッタリのとても楽しいツールとなっております。
エミッターって何?パーティクルって何?という皆様、UEに豊富に用意されているNiagaraのサンプルを通して、初めてのエフェクトにチャレンジしてみませんか?

 

「実戦投入事例! Niagaraで地球の風をビジュアライズ! 」

講演者
株式会社ヒストリア ヒストリア・エンタープライズチーム 橘内 正貴 (エンジニア)

概要
UE4.25にて正式リリースされ、実戦投入が可能になったNiagaraVFXSystem。
ヒストリア・エンタープライズでは早速! 風や海流、波といった地球環境のビジュアライズツールをNiagara用いて製品開発を行い、今夏に放送された番組にて採用されました。
本講演では風のビジュアライズに焦点をあてて、外部データ(計測データ)を元にNiagaraでビジュアライズを行うアップローチ方法や、
Niagaraのモジュールを新たに作成し既存モジュールの不足部分を埋めた実例、その他NiagaraのTipsなど赤裸々にお話します。

 

[UE4]グローバルイルミネーションを用いたライティング方法

$
0
0
執筆バージョン: Unreal Engine 4.25

こんにちは。新人3Dアーティストの黒田です。

今回は、UE4のライトを使った簡単な絵作り方法をご紹介します。

 

 

 

目次:

①ライトビルドとは
②GI(グローバルイルミネーション)とは
③ライトの動的と静的を使ってみよう
④リフレクションキャプチャとは
⑤ライトを配置して静的ライトをベイクしてみよう
⑥おまけ ポストプロセス

ライトビルドとは

https://docs.unrealengine.com/ja/Engine/QuickStart/6/index.html
公式ドキュメントにも記載されています。

まず、UE4でのライティングは動的(ムーバブル)と静的(スタティック)の二種類に分かれます。
他にステイショナリーがありますが、今回は説明を省きます。
ムーバブルは光をあてたときの結果をリアルタイムで計算し、スタティックは光をあてたときの結果を前もって描画する事前計算です。
この、事前にライトによって生じた陰影をテクスチャに焼きこむ処理のことをライトビルドといいます。

GI(グローバルイルミネーション)とは

空間全体に影響する複雑な照明効果を計算することで、やわらかく自然な間接光を生成するレンダリング方法ことをグローバルイルミネーションと呼びます。
例えば、暗い部屋の中で懐中電灯を照らすと、光の照り返しで自分や近くの物体も明るくなります。
こういった現実で起こりうる光の回り方をシミュレートするのがグローバルイルミネーションになります。

UE4のライトビルドでは、そのグローバルイルミネーションを再現することができます。

以下の画像はEpic Games ラーニングサンプルにある「サンテンプル」です。

こちらは、サンプルのサンテンプルの背景です。
先ほど御説明した静的ライトがあらかじめベイクされた状態になっています。
このレベルを使って実際にライトを触ってみましょう。

ライトの動的と静的を使ってみよう

試しにライトを動的でビルドしてみましょう。

① 右上の「アウトライナ」にLightと入力します。

② ライトに関係するものが表示されますので、表示された全てのライトをShiftで全選択します。

③ 右下「詳細」内の「可動性」部分を「ムーバブル(動的)」に設定してください。

ライトが「ムーバブル」に設定されると、右下あたりに矢印マークが表示されるので分かりやすいです!

 

 

 

 

④ すべてのライトをムーバブルにしたら、「ビルド」から「ライティングのみビルド」を選択してみましょう。

すると…

 

 

 

 

 

!!!!

暗く落ちてしまいました!

動的ライトではグローバルイルミネーションを出力できないため、ライトが直接当たっている個所は明るくなりますが、そうでない箇所は光が拡散されず暗くなります。

 

 

今度はライト全てをスタティックに設定してベイクしてみましょう。

明るくなりました!

ライトの光が直接当たっているところから拡散して、天井まで光が行き届いているのが分かるかと思います。
このようにライトの設定次第で配置されたライトの役割や効果が変わってきます。

この時、ライトによって生じた影は、ライトマップテクスチャと呼ばれるUVの解像度に左右されます。
こちらについては過去記事がありますので、以下を参照してください。

https://historia.co.jp/archives/15218/ ライトマップUV作成方法
https://historia.co.jp/archives/13517/ ライトマップUVについて

 

 

 

リフレクションキャプチャとは

端的に言うと、疑似反射を創り出す機能です。

例えば、下記のように、全てのリフレクションを選択して削除すると….

↑ 黒くつぶれてしまいます。
このように金属感のあるものや、反射成分の強いものが含まれるレベルには必要不可欠な要素です。

 

 

 

 

ライトを配置して静的ライトをベイクをしてみよう

 

 

今回絵作りをしていく上で使用するものは以下の3点です。

・指向性ライト(ディレクショナルライト)        ・ポイントライト

 

 

 

 

 

 

 

 

 

・リフレクションキャプチャ

各種ライトの機能についての詳細は以下の公式ドキュメントを参照↓
https://docs.unrealengine.com/ja/Engine/Rendering/LightingAndShadows/LightTypes/index.html

 

 

 

ライトを全選択して削除しましょう。

 

暗くなりました。

ライトを配置しない状態でベイクをすると、当然ですが光源がないため絵全体が真っ暗になります。
試しにこの状態でベイクしてみると…

 

暗くなりました。

ベイク前の画像が若干明るいのは、事前にでベイクされたビルドのキャッシュが残っている為です。
これが見ずらいと思った場合は、Alt+3でUnlitの画面に切り替えるなどしましょう。

「モード」内の「ライト」から各種ライトを選択、配置できます。

 

 

 

 

 

 

 

 

 

 

 

 

ディレクショナルライトを置いてみました。この時、設定をスタティックにしましょう。

 

ライトの向きを変えることで、太陽光の当たり具合を調節できます。

スタティック(静的)ライトを配置した後だと、上のような表記が出現します。

♦動的にshadowが出現しているだけで、まだテクスチャにベイクされていないことを示唆するため、Previewの文字が浮かび上がっています。

 

♦こちらは、いま配置したディレクショナルライトが光を照射しているアセットのうち、いくつが未ビルド(unbuilt)状態かを示しています。

これらはライト配置後、先の手順でベイクすることで表示されなくなります。

 

 

 

 

ベイクされました。

ですが、まだ太陽光のみで暗めなため、ここからライトを追加して全体的な絵作りを進めます!

 

 

ドームの天井部分をもう少し明るくしたいと思ったらフェイクでライトを足すのもありです。
物理的な正しさに+αでウソをつくことで見栄えある風景を作るのもライティングの醍醐味です。

 

このシーンを開いた状態でも配置されていましたが、炎の上に好みの色のポイントライトを配置して雰囲気を作ったり…。

 

少し強めのライトを光の入射位置に置くなどして…

 

 

 

 

こんな感じにライトを配置してみました。

これをベイクすると….

出来上がりです!
静的ライトでベイクしたので、テクスチャに陰影が焼きこまれ、グローバルイルミネーションも含まれた絵が完成しました。

 

 

 

 

 

おまけ ポストプロセス

一通りのライティングが終わった後に、絵全体の見え方を調節する「ポスト処理」をかけることができます。

今回はそのポストプロセスボリュームの機能の一つをご紹介します。

Wite Balance

White Balanceは、このように絵全体にフィルターをかけて色合いを変えることができます。
画像のイメージを手軽に変えることが出来るため、非常に便利です。

 

 

〈使い方〉

「モード」内のボリュームでの検索で「Post」まで入力すると出現します。

こちらをレベル内にドラック&ドロップします。

配置すると、↓画像のような立方体のオブジェクトが配置されます

 

 

 

次にUnboundにチェックを入れます。
こうすることで、レベルのどこへ行ってもポストが有効になります。

そして、WhiteBalanceと呼ばれる項目があるので、そこのチェックボックスにチェックを入れて、色合いに好みの値を入れて色合いを調節してください。

 

 

 

・設定する色によって印象もだいぶ変わります。
好みの色にアレンジして完成です。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

・今回はライティングをの方法や必要な要素について記載しましたが、あくまで極一部分なので、違った配置や別の要素を足すなどして、自分好みの絵作りを目指してください!

[UE4]カメラの動きに合わせてメッシュにテクスチャを表示させる

$
0
0
執筆バージョン: Unreal Engine 4.25

カメラを向けた時、何処を狙っているかわかりずらいですよね。
そんなときはDecalとLineTraceを活用して、カメラの動きに合わせてテクスチャを投影しましょう。

※今回はFirstPersonのテンプレートを使用して作成します。

ー用意するものー

・FirstPersonのテンプレート

・お好きなテクスチャ

 

ー作成手順ー

①マテリアルの作成

②DecalBPの作成

③カメラからLineTraceを飛ばして、DecalBPを生成させる

 

 

 

①マテリアルの作成

好きなテクスチャをUE4にInportをします。(コンテンツブラウザを開いて、ドラック&ドロップ)
新しいマテリアルを作り、「DecalTexter」と名前を付けます。

 

 

作ったマテリアルを開いて、詳細のMaterialDomainを「DeferredDecal」に
BlendModeを「Translucent」に変更します。

 

 

Inportしたテクスチャをドラック&ドロップで入れ、ベースカラーにつないで保存します。

 

 

②デカールBPの作成

新しいブループリントを作成し、「DecalBP」と名前を付けます(クラスはActorで作成しました。)

 

 

コンポーネントウィンドウから、[Decal]と検索し作成します。

 

 

DecalMaterialから、①で作成したマテリアルを選択します。

 

 

 

 

③カメラからLineTraceを飛ばして、デカールBPを生成させる

FirstPersonCharacterを開き、LineTraceByChannelを使って下記の様なノードを組みます。

 

 

SpawnActorで「DecalBP」を選択します。
SpawnActorをノードに出す時、日本語だと「クラスからアクターをスポーンします」と書かれていますので、注意してください。

 

 

次に、Spawn Transformと書かれているオレンジピンを右クリック→「構造体ピンを分解」を選択して

下記画像ようにノードを繋げます。

 

 

※薄青のピンRotationは、GetWorlRotationから繋げます

 

 

最後にSetLifeSpanでスポーンさせたDecalBPを消します。
SetLifeSpanは、指定秒数経った後削除されるノードです。

 

 

これで、カメラの移動に合わせて
メッシュにテクスチャを投影することが出来ました。

[UE4]アニメーション リターゲット

$
0
0
執筆バージョン: Unreal Engine 4.25

こんにちはこんにちは。アートディレクターのくろさわです。
今回はUnreal Engine4(以下UE4)のアニメーションリターゲットについて解説します。

2種類のアニメーションリターゲット

事前知識としてアニメーションシーケンスとスケルトンの関連性について知っておく必要があるので簡単に解説しておきます。
UE4のスケルトンは、MayaなどのDCCツールでいうところのスケルトンとは異なり、単体のキャラクターの骨の情報を示したものではなく複数のキャラクターで使い回すことを想定したものです。

  • スケルトンは複数のキャラクター(スケルタルメッシュ)で参照可能。
  • アニメーションシーケンスやアニメーションブループリントなどの、UE4のキャラクターアニメーション関連の情報はすべてスケルトンに紐づく。

つまり、以下のようにスケルトンを中心とした関連性になっています。

さて、UE4のアニメーションリターゲットですが、全く異なる2つの機能がアニメーションリターゲットと呼ばれています。順番に紹介します。

異なるスケルトンでのアニメーションリターゲット

文字通りスケルトンが違っていても、ベイクして複製し、そのスケルトン用にそっくりな新しいアニメーションを作り出す機能です。ランタイムで動作するのではなく、エディタで実行し、複製を行います。

Mayaでアニメーションを作っている人には、HumanIKで、別のキャラクタのソースを使用してベイクしたもの、といえばわかりやすいかもしれません。ソースは同じでもベイク後は全く別のデータです。

使いどころですが、マーケットプレイスで購入したアニメーションは(おなじUE4マネキンに見えても)それぞれ違うスケルトンに割り当てられているので、同じスケルトンにまとめて流用するためにこの機能を使います。
手っ取り早くデータを使えるようにできるので、プロトタイピングなどで活躍する機能です。

アニメーション リターゲット(異なるスケルトン)

同じスケルトンでのアニメーションリターゲット

こちらは同じスケルトンの中で、体形の違うスケルタルメッシュで違和感なくアニメーションを再生する手法のことです。こちらはエディタで実行する機能ではなく、ランタイムで動作します。

アニメーション リターゲット

今回はこちらの同じスケルトンでのアニメーション リターゲットについて掘り下げます。

同じスケルトンでのアニメーション リターゲットの使い方

同じスケルトンで異なる体形のスケルタルメッシュに違和感なくアニメーションを再生する手法の解説の前に、なぜUE4ではスケルトンを複数のスケルタルメッシュで共有したいかということについて話しておきたいと思います。

スケルトンを共有する利点のひとつですが、同じアニメーションシーケンスを流用できるのでゲーム全体のデータサイズが小さくなります。もちろん制作コストも下がります。アニメーションシーケンス一つ一つはそれほどの大きさでもないのですが、昨今のキャラクターアニメーションは複数のアニメーションを複雑に混ぜて使用するため、かなりの数のデータが必要になります。ただし、こちらはキャラクターごとに作成して調整したほうがキャラクターらしさの表現につながるので品質と手間のトレードオフです。

もう一つがUE4はアニメーションブループリントがスケルトンに紐づくためです。アニメーションブループリントはキャラクターの状態によってどのアニメーションを再生するか、などを記載してアニメーションの再生を管理する処理です。例えば制作しているRPGに「仲間キャラクターはすべてダメージを受けた瞬間にノックバックモーションを再生してほしい」といった共通した処理があるとします。もしキャラクターごとにスケルトンが別れていると、この共通の処理をキャラクターごとに書く必要があります。そのためRPGのパーティメンバーのような似たような管理下に置かれるものは同じスケルトンを使うのが望ましいです。

さて同じスケルトンで異なるスケルタルメッシュでアニメーションを再生する方法ですが、そもそもスケルトンが同じであればなにもしなくてもアニメーションは再生できます。
ところが違和感なく動かすには骨によって求めてる処理が違うため、設定を行う必要があります。

設定はスケルトンツリーのTranslation Retargetingにあります。

いくつか設定の例をあげます。

一般的に肘や膝などの関節はスケルタルメッシュの関節の位置から動いてほしくないので、Skeletonを使用します。これがもしAnimationやAnimationScaledであれば、アニメーションの位置まで動いて体型が変わってしまいます。

またHipなどの移動を伴うボーンは、キャラクターの大きさを考慮して、大きいキャラは大きく動き、小さいキャラは小さく動く必要があるので、AnimationScaledを使用します。

このあたりは以前にもブログに書いたので興味があれば読んでみてください。

https://historia.co.jp/archives/7589/

Animation Scaledは何を行っているのか

キャラクターの大きさを考慮して移動量を変更してくれるAnimationScaledですが、具体的にどんな処理を行っているのでしょうか?
実は内部的にリファレンスポーズというものをもっていて、ここに最初にスケルトンが制作されたときのスケルトンの長さが記録されています。
このリファレンスポーズでのボーンの長さと動かしているスケルタルメッシュでのボーンの長さで比較を行い、その比較を移動の値に係数としてかけているのです。

リファレンスポーズで長さが12、リターゲットしたスケルタルメッシュの長さが19の場合、比率は19/12で約1.58倍の移動量で再生される

一つ注意が必要なのですが、リファレンスポーズとスケルタルメッシュでボーンの長さの比率を出していることはボーンの長さが0であると比率が出せません(0を割ることはできないので)。
映像業界では同位置にヌルを多重に挟んだデータを作ることが多々ありますが、Animatio Scaledを使う場合、こういうデータはスケールがかけられないので注意が必要です。

Animation Scaledだけでは解決できない問題

これでどんなアニメーションでも共有できるのかといえばそうではありません。

よく誤解されがちなのですが、アニメーション リターゲットはアニメーションの再生時に、このスケールの補正を行うことで異なる体形でも同じ動きを再現できるという仕組みです。逆に言えばそもそもアニメーションをリファレンスポーズとは違うサイズで制作した場合、いくらAnimation Scaledにしてもアニメーションは合わなくなってしまいます。

しかし制作ではしばしばキャラクター同士が絡むモーションが必要になるので、キャラクターに合ったサイズでアニメーションを作成する必要があります。
例としては身長の違うキャラクター同士が手を取り合う場面などでしょう。この場合、キャラクターの身長を考慮したモデルでアニメーションを作らないと正確にターゲットできません。

では異なるサイズでアニメーションを作成した場合はどうやってアニメーションを使い回せばよいでしょうか?これを解決するにはスケルトンではなく、アニメーションシーケンスごとに設定を変更する必要があります。

DCCツールによる解決方法

一つはMayaなどのDCCツールでリグ内での補正やエクスポート時に、アニメーションをリファレンスポーズに合わせてしまうことです。

一つ注意点としては、リファレンスポーズに登録されていないボーンはスケールの補正をかけることができないので、予め登録しておく必要があります。

UE4での解決方法

UE4にはアニメーションシーケンスごとに、なにをリファレンスにするか変更する方法があります。
まず、リターゲットマネージャを開き、Manage Retarget Souceにスケルタルメッシュを登録します。そのうえでアニメーションシーケンスのRetarget Souceで登録したスケルタルメッシュを指定することで、そのキャラクターをリファレンスポーズとして使用できます。

Manage Retarget Souceの設定ですが、ちょっとわかりにくい位置にあります。
冒頭で全く別の機能にリターゲットという名前をつけているという話をしましたが、メニューでも入り混じっています。

そもそも全く別の機能をリターゲットという一つの言葉にまとめてしまっているので、どの項目がなにに影響しているのかとてもわかりにくいんですよね…
UE5ではぜひわかりやすい名前をつけてほしいなと思います 🙂

【UE4】Landscape Edit Layers は使えるぞ!

$
0
0
執筆バージョン: Unreal Engine 4.25

ランドスケープ編集レイヤー を使用してみます。

お試し用に機能別サンプルプロジェクト(4.25)内のLandscape Levelを使用します。

 

1.ランドスケープ編集レイヤーの表示方法

ランドスケープを作成し、World Outliner から選択します。

Details から Enable Edit Layers をONにします。

ダイアログが表示されるので Yes を押します。

ModesからLandscapeを選択し、ランドスケープツールを開きます。

※4.25からUIが変更されています。→ https://docs.unrealengine.com/ja/Engine/Landscape/Creation/index.html

先程のEnable Edit LayersをONにしていると、レイヤー が表示されます。


2.レイヤー機能

レイヤーを右クリックするとメニューが表示されます。

Edit Layers

① Create:新規レイヤーを作成します。
② Rename: レイヤー名を変更できます。
③ Clear:選択レイヤーの状態を削除します。(ペイント、スカルプト個別に削除できます)
④ Delete(Last layer): レイヤーを削除します。
⑤ Resserve for Splines:レイヤーとは別にスプラインを編集できます。

Visibility

⑥ Hide selected:選択レイヤーを非表示にします。
⑦ Show Only Select:選択レイヤーのみ表示します。
⑧ Show All Layers:すべてのレイヤーを表示します。

詳細は以下を参考にして下さい。

https://docs.unrealengine.com/ja/Engine/Landscape/Layers/index.html


3.使ってみる

土、草、雪の3種のペイントをレイヤーで分けてみます。

レイヤー毎に分ける事ができました!


4.編集部分のハイライト表示

Layer Contribution をONにすると、スカルプトやペイントの編集箇所をハイライト表示できます。

例:雪部分をハイライト表示

ハイライト表示のまま作業も行えます。

レイヤー毎にどこにペイント等が影響しているのか確認しやすくなります。


5.おわり

ランドスケープ編集レイヤーの簡単なご紹介でした!

是非使ってみてください!

「UNREAL FEST×ぷちコン 冬のゲームジャム祭り!」開催のお知らせ

$
0
0

2020年11月21日()~23日(日)
UNREAL FEST×ぷちコン
冬のゲームジャム祭り!

エピック ゲームズ ジャパンが主催するUnreal Engineの公式大型勉強会「UNREAL FEST EXTREME 2020 WINTER」が
今年はオンラインで2020年11月16日(月)~11月22日(日)の1週間かけて行われます。

平日の5日間では、毎日20時からゲームとノンゲームセッションが一講演ずつエピック ゲームズ ジャパン 公式Youtubeチャンネルで配信されます。

そして、金曜日の講演終了後から日曜日までの2.3日間にかけて
オンラインゲームジャム「UNREAL FEST×ぷちコン 冬のゲームジャム祭り!」を行います!

ヒストリア主催で行っている、Unreal Engine 4学習向けミニコンテスト「UE4ぷちコン」が「UNREAL FEST」とコラボさせていただくことになりました!
運営を任せていただき、当日の出演から審査、技術サポートまで多方面から「UNREAL FEST」を盛り上げたいと思います!

\ 参加はこちらから /

(Discordが開きます。アカウントをお持ちでない方はアカウント作成をお願いします。
詳しいアカウントの作成方法はこちらから! )

 

 

<開催概要>

■イベント名
UNREAL FEST×ぷちコン 冬のゲームジャム祭り!

■日時
・ゲーム制作時間
2020年11月21日(金)21:00~2020年11月23日(日)15:00

・審査結果生放送
2020年11月23日(日)19:30~21:30

■ゲームジャムについて
開催当日に発表されるテーマに沿ってゲームを制作、応募していただきます。
個人・チーム、プロ・アマチュア関係なくご参加いただけます。

制作していただいた作品は、YouTubeに動画形式で投稿し、応募していただきます。
応募締め切り後に審査を行い、エピック ゲームズ ジャパン 公式Youtubeチャンネル生放送にて受賞者を発表いたします。

受賞者には豪華景品も! 参加賞も用意しておりますので、ぜひお気軽にご参加ください。
※参加資格として作品動画の提出をしていただく必要があります。

■ゲームジャム参加はDiscordで! 安心の技術サポート付き
今回のゲームジャムでは開催中の進行や、技術サポートまでをビデオチャットツール「Discord」で行います。
普段はチャットのみで進行や交流を行い、ゲーム制作で詰まった時などは、
チャット・通話・さらには画面共有機能を駆使してヒストリアチームがサポートいたします。

「UNREAL FEST×ぷちコン 冬のゲームジャム祭り!」Discordはこちらから参加!
(アカウントをお持ちでない方はアカウント作成をお願いします。詳しいアカウントの作成方法はこちらをご覧ください。)

■同時に行われるYouTube配信も必見! 「UNREAL FEST」講演の再放送や、企画が盛りだくさん!
ゲームジャム開催中は、エピック ゲームズ ジャパン 公式Youtubeチャンネルにて「UNREAL FEST EXTREME 2020 WINTER」講演の再放送を行います。

また、エピック ゲームズ ジャパン 岡田 和也(Software Engineer Developer Relations)もテーマに沿ってゲームを作り、制作中の様子などを放送予定です。
他にも、さまざまなゲーム制作者をお呼びした雑談企画や、皆さんの制作途中のゲームを共有するゲームジャム進捗共有会も放送予定です。

■審査員
・エピック ゲームズ ジャパン  岡田 和也(Software Engineer Developer Relations)
・エピック ゲームズ ジャパン 斎藤 修(Technical Artist – Developer Relations)
・エピック ゲームズ ジャパン 小林 浩之(Technical Artist – Developer Relations)
・エピック ゲームズ ジャパン Axel Riffard(Software Engineer – Developer Relations)
・株式会社ヒストリア    佐々木 瞬(代表取締役 / プロデューサー / ディレクター)
・株式会社ヒストリア    有末 けい(広報/イベントデザイナー)

■ハッシュタグ
#ue4festjam

■関連リンク
UNREAL FEST EXTREME 2020 WINTER
EPIC BLOG(Discord登録や参加方法の詳しい説明はこちらから! )
エピック ゲームズ ジャパン 公式Youtubeチャンネル
最新情報はSNSでお届け!
アンリアルエンジン公式Twitter
ヒストリア公式Twitter

<スケジュール>

11月20日(金) ゲームジャム1日目テーマ発表の配信はこちらから!

時間 内容 詳細
21:00 ~ 21:30 オープニング・テーマ発表

11月21日(土) ゲームジャム2日目配信はこちらから!

時間 内容 詳細
10:30 ~ 11:00 2日目のご挨拶
11:00 ~ 12:00
(休憩含む)
「UNREAL FEST EXTREME 2020 WINTER」講演 再放送 NPRキャラクターレンダリング総結集!今こそ更なる高みを目指して
株式会社Indie-us Games
12:00 ~ 13:00 特別企画 その① 後日公開
13:00~14:00
(休憩含む)
「UNREAL FEST EXTREME 2020 WINTER」講演 再放送 Unreal Engine と XR でつくる「働く」の未来
株式会社リコー
14:00 ~ 15:00 ゲームジャム進捗共有会 後日公開
15:00 ~ 16:00
(休憩含む)
「UNREAL FEST EXTREME 2020 WINTER」講演 再放送 UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!
ガンホー・オンライン・エンターテイメント 株式会社
16:00~17:00 42時間ゲーム制作マラソン!〜おかずの進捗報告配信〜 エピック ゲームズ ジャパン 岡田 和也もゲームジャムに参加! 誰にも負けないゲームを作ることを目指して彼はゲームジャムに挑む。そんな様子を生配信でお届け。
17:00~18:00
(休憩含む)
「UNREAL FEST EXTREME 2020 WINTER」講演 再放送 アニメ「ノー・ガンズ・ライフ」における、UE4によるCGとセルアニメとの融合
サイクロングラフィックス
18:00~19:00 特別企画 その② 後日公開
19:00~20:00
(休憩含む)
「UNREAL FEST EXTREME 2020 WINTER」講演 再放送 個人製作インディーゲーム”ジラフとアンニカ” のUE4 制作事例紹介
atelier mimina
20:00~21:00 ゲームジャム進捗共有会

11月22日(日) ゲームジャム3日目配信はこちらから!

時間 内容 詳細
11:00 ~ 11:30 3日目のご挨拶
11:30 ~ 12:30
(休憩含む)
「UNREAL FEST EXTREME 2020 WINTER」講演 再放送 MRTK-Unreal(UX Tools) を利用した HoloLens 2 アプリ開発
株式会社ホロラボ
12:30 ~ 13:30 42時間ゲーム制作マラソン!〜おかずの進捗報告配信〜 エピック ゲームズ ジャパン 岡田 和也もゲームジャムに参加! 締め切りまで残り数時間を切った追い込みの制作風景をお届け。
13:30~14:30
(休憩含む)
「UNREAL FEST EXTREME 2020 WINTER」講演 再放送 視聴者参加 型のライブ動画を実現 !GenvidをUE4に実装する方法
Genvid Technologies
14:30 ~ 15:00 提出〆切 カウントダウン おかずと佐々木がみんなを一生懸命応援します!
 30分間の休憩 30
15:30 ~ 16:30
(休憩含む)
「UNREAL FEST EXTREME 2020 WINTER」講演 再放送 建築不動産|UE4を活用した建築ビジュアライゼーション・プレゼンテーション多角提案のススメ
株式会社積木製作
16:30~17:30
(休憩含む)
「UNREAL FEST EXTREME 2020 WINTER」講演 再放送 聖剣伝説3でのUE4利用事例の紹介~Making of Mana
株式会社スクウェア・エニックス
株式会社ジーン
17:30~18:30
(休憩含む)
「UNREAL FEST EXTREME 2020 WINTER」講演 再放送 自動運転車両開発におけるUE4の活用事例
株式会社理経
60 分間の休憩
19:30~21:00 審査結果発表会 本イベントで集まったゲーム作品の審査を行い受賞作品を発表!惜しかった作品を含め、参加していただいた作品を紹介していきます。
21:00~ エンディング

 

\ 参加はこちらから /

(Discordが開きます。アカウントをお持ちでない方はアカウント作成をお願いします。
詳しいアカウントの作成方法はこちらから! )

 

 

たくさんのご参加お待ちしております!


コンテンツ東京 第6回 先端デジタルテクノロジー展 出展レポート!

$
0
0

こんにちは、ヒストリア広報部 けーちんです☆

2020年10月21日(水)~2020年10月23日(金)の3日間、
コンテンツ東京 第6回 先端デジタルテクノロジー展に出展してまいりました!

今回はゲーム以外を扱うブランド「ヒストリア・エンタープライズ」としての出展でした!


ブースではUnreal Engineにて制作した自動車・建築・映像の3つのコンテンツを展示いたしました。
後ろには商談スペースも用意されていて、各コンテンツをUnreal Editorでお見せできるようになってます!

 

Cutting-Edge Test Drive

今年の6月に公開した「Cutting-Edge Test Drive」を展示しました!

車のカスタマイズが可能なカーコンフィギュレーター
Megascansをふんだんに使用した荒野
さまざまな表示方法ができ、走行シミュレーションをイメージした都市

3つのパートを自身が選んだ車が走っていくような体験ができる、
Unreal Engineの”いまの技術”をたくさん詰め込んだ技術デモとなっております。

実際に体験いただけるexeファイルのダウンロード期間は過ぎてしまいましたが、
特設ページやYouTubeをご覧いただけますと嬉しいです!

 

そして、つい最近発表されたばかりのSONYさんの空間再現ディスプレイ「Spatial Reality Display」に
合わせてカスタマイズした「Cutting-Edge Test Drive」の体験も行っておりました!
まだ未発売のものですが、先行してデモ機を貸していただき、展示もさせていただきました!

「Spatial Reality Display」は、視聴者の顔を捉え、3DCGをリアルタイムにレンダリングし、
視点位置に合わせた高精細な裸眼立体視を実現するディスプレイです。

より立体的に見えるように、本来の配置から変更したり、
カメラアングルをそれ用に調整したりと、工夫を施しました。

今回展示した「Spatial Reality Display」対応の「Cutting-Edge Test Drive」については
別記事で語らせていただければと思いますのでそちらもぜひお楽しみに♪

「Spatial Reality Display」についてはギズモードさんの記事でも
弊社佐々木がインタビューを受けているので、こちらもぜひご覧ください!

 

隈研吾監修企画<Multiplication>

世界的に有名な「隈研吾建築都市設計事務所」と共同で、Unreal Engineを用いて制作したバーチャルギャラリー

「映像ですか?」「実写ですか?」とたくさん聞かれました・・・!

こちらも8月から9月末までダウンロードして体験いただけたコンテンツになりますが、
今はぜひ動画を見てお楽しみいただければと思います。

 

Earth Visualization System

地球の大気や海洋、内部の計測データをビジュアライズし見る人に分かりやすく伝えるツール。
主に映像業界(テレビ)で使用してもらうためのソフトウェアです。

NHK「体感!グレートネイチャーSP」にて過去に2回採用されております。

「Earth Visualization System」に関してはまだWeb上では未公開のデモ映像を展示いたしました。
こちらもゆくゆくはWeb上で公開予定となっております。お楽しみに!

 

 

今回の出展では、既にダウンロード期間が終わったコンテンツが試せたり、
「Spatial Reality Display」対応の「Cutting-Edge Test Drive」や、未公開の「Earth Visualization System」デモ映像が見れたりなど
特別な出展になったのではないかと思います。

今回の出展に合わせて、3つのコンテンツのチラシを制作したり、

会社のパンフレットの制作もいたしました!

予想外の大盛況で、あっという間にパンフレットが無くなってしまいました・・・。
(余ると思っていたので、正直驚きを隠せません。)

 

今回の出展でヒストリア・エンタープライズがゲーム以外の分野で
どんなことをやっているか沢山の方に知ってもらう機会になっていたら嬉しいです!

以上、コンテンツ東京 第6回 先端デジタルテクノロジー展 出展レポートでした☆

[UE4]マテリアルで千鳥格を作ってみた

$
0
0
執筆バージョン: Unreal Engine 4.25

お久しぶりです、王様です。

今日はマテリアルで千鳥格模様を作ってみました。

 

完成品:

構成:

簡単なstepで行きましょう:

step1

 

 

 

SINEを使ってこんな感じの模様を作ります

 

 

 

 

step2

 

 

 

内積を使い、step2,3,4の模様を別に作ります

 

 

 

 

step3

 

 

 

 

 

 

 

 

step4

 

 

 

 

 

 

 

 

step5

 

 

 

1と3の結果を乗算します

 

 

 

 

step6

 

 

step2と4の結果を乗算します

 

 

 

 

 

step7

 

 

 

step2-step4してこんな感じの模様を作ります

 

 

 

 

step8

 

 

 

 

step5と6の結果を乗算します

 

 

 

step9

 

 

 

step8と7の結果をプラスします、これで千鳥格模様になります。

さらにclamp(0-1)にすれば完成です。

 

 

step10

 

 

 

ここで乗算の数値をいじれば、模様の大きさを調整できます。

 

 

 

 

以上で千鳥格模様が完成しました。作り方は一通りじゃないので、そのままCOPYしても良いし、参考して他の方法で作成しても良いかもしれませんね。

設立七周年を迎えました!

$
0
0

本日2020年10月31日に株式会社ヒストリアは設立7周年を迎えました!
また、9月末に第七期を終え、10月から第八期に突入しました。

 

この一年、ゲーム分野では長く制作していたタイトルである「ジョジョの奇妙な冒険 ラストサバイバー」のリリースが一番大きなトピックでした。そのほか、多くの仕込みを行えた年でもあり、露出は多くありませんでしたが、チーム規模の拡大やメンバーの成長を強く感じる一年となりました。来年以降、いま行っていることが次々と世に出ていくと思いますので、ぜひご期待頂ければと思います。

また、エンタープライズ分野は今年はチームとしての本格始動とも言える一年となりました。多数の自動車業界のお仕事をはじめ、NHKエンタープライズさまの案件「ミラクルトラベル 熱狂の1964東京へ」「体感!グレートネイチャーSP 驚異の大気循環」「体感!グレートネイチャーSP 躍動する海」、テレビ朝日さまの案件「AI×CGアナウンサー 花里ゆいな」、また隈研吾建築都市設計事務所さまとコラボ企画として制作させていただいた「隈研吾監修企画 <Multiplication>」、そして実績公開はできませんが、その他の多くのお仕事に恵まれました。

加えて、自動車のデモコンテンツ「Cutting-Edge Test Drive」の発表とともに、ヒストリア・エンタープライズをブランドとして本格的に広めていくために、新規にロゴを作成、先日はコンテンツ東京2020への出展も行いました。これらの経験を経てチームも成長し、今後がますます楽しみなチームとなりました。

イベント/コミュニティ活動の面でも、2019年に行ったデジゲ―博2019への出展、ぷちコン映像編の開催。そして2020年はコロナ禍という未曽有の中でのぷちコン開催(初春・夏の2回)、ぷちコンゲームジャムのオンライン開催、出張ヒストリアのオンライン開催、UNREAL FEST EXTREME 2020 SUMMERの運営協力、コンテンツ東京2020出展と、例年以上の活動が出来た一年となりました。すべてが前例通りとはいかない中、ひとつひとつ工夫を凝らして開催できたことは、今後にも大きく活きる力になったと感じています。

 

誰もが予想していなかったコロナ禍の中、このように事業として順調に過ごせたのは、取引先の皆様、そしてコミュニティの皆様のおかげです。ヒストリアはリーマンショック後に設立した企業のため、今回のような世界的困難に当たるのは初めての経験でした。その中で特に取引先の皆様には良くしていただき、本当に多くの方に支えて頂いているということを実感いたしました。みなさま、いつも気にかけて頂き、大変ありがとうございます。

そして、突然のリモートワーク開始となり、慣れない生活の中でも、一緒に前向きに環境への適応を努力してくれたヒストリアメンバー、ヒストリア常駐のパートナーの皆様には、感謝の限りです。リモート開始時は一緒にディスカッションし新たな制度を制定し、それを運用していく。また数日後に改善・改定を行う、といった日々の繰り返しでした。現在ではベースをオフィスワークに戻しており、一部のリモートワークも制度として安定してきましたが、今の形まで改善を図れたのも、一緒に働くみんなのおかげです。まだコロナ禍のさなかではありますが、経営者として自分にとって、7年目に迎えたコロナ禍での業務遂行と新制度制定の嵐は、大きすぎる壁でした。周りの支えが無ければ、乗り越えることは厳しかったでしょう。心から、感謝です。

 

今月から第八期を迎え、8周年に向けての日々が始まりました。そしてその先の設立10年に向けて、大きな目標を抱いて日々着々と成長をしています。まだまだ困難が多い情勢ではありますが、歩みは止めず、社員一同精進して参りますので、引き続き見守っていていただけますと幸いです。どうぞよろしくお願いいたします。

2020.10.31
株式会社ヒストリア
代表取締役 佐々木 瞬

[UE4]初めてグレーボックスをやる人向けショートカット

$
0
0
執筆バージョン: Unreal Engine 4.24

今回はグレーボックスを作成する際に
よく使用するキーボードショートカットを紹介しようと思います。

UE4の基本操作は、MAYAなどのDCCツールに触れたことがある方は
操作に共通する箇所があり、すんなりと基本操作に馴染めると思うのですが、
そうでない方には、意外と躓く箇所かもしれません。

そんな『とりあえず』、『なんとなく』、『突然やることになってしまい』等など、
やんごとなき事情でグレーボックスを作成し始めた!という方の手助けになればと思います。


●トランスフォームの切り替え
アクターを選択して操作する際、3つのウィジェットがあります。

 

移動 … アクターの移動
拡縮 … アクターの拡縮
回転 … アクターの回転

これらの3つのウィジェットは以下のキーで切り替えることが出来ます。

Wキー … 移動
Eキー … 回転
Rキー … 拡縮

また、これらの3つの機能はスペースキーで順番に切り替えることも出来ます。


●地面にスナップする

アクターを地面に配置する際、数値やマウス操作で地面に合わせるのは辛いものがあります。
そんな時、アクターを選択して、endキーを押すことで地面に簡単にスナップすることが出来ます。

endキー … アクターを地面にスナップ。


●フォーカス

アクターを選択した際、逐一マウスを操作してビューポートカメラを合わせるのは手間がかかりますが、
対象となるアクターを選択して、Fを押すことで簡単にフォーカスできます。

F … アクターをカメラ内にフォーカスする。


●Duplicate(複製)

同じアクターを複製したいと思った時、Altを押しながらアクターを移動させることで
選択したアクターを残して、複製することが出来ます。

Alt+アクターの移動 … アクターを複製する。


 

●ピボットをスナップする

アクターのピボットポイントを、Vを押しながら左クリックして移動させることで
アクターを他アクターの頂点にスナップすることが出来ます。
ちなみに、ピボットポイントの位置変更/固定については、別の記事で紹介しています。

Vキー … アクターのピボットポイントを頂点にスナップする。

●ピボットポイントの位置を変更する。
https://historia.co.jp/archives/13368/


基本、キーボードのショートカットは似た物が多く、Ctrl、Alt、Shiftは勿論のこと、
FはFocusのFなど、覚えやすい物も沢山あるので、ぜひ色々探して貰えればと思います。

【UE4】Cinematic Viewport を使ってみよう!

$
0
0
執筆バージョン: Unreal Engine 4.25

■ごあいさつ

こんにちは、プランナーの谷口です。

このご時世のため、
おうちにいる時間がこれまでより長くなり、
ドラマ・映画・漫画などに触れる時間が以前より増えました。

私の中では「時間的余裕」は「精神的余裕」と直結しており、
これまでは追われるように消化していたものを
じっくり楽しむことができるようになった気がします。

気になるシーンやいいなぁと思ったシーンがあれば戻したり止めたり…
至極当たり前のことなんですが、
改めて、演出ひとつでそのシーンの見え方や感じ方って
変わるよなぁ、大事だよなぁ、と思いました。

 

…というわけで、今回は、

Cinematic Viewport -シネマティックビューポート-

というものについて説明したいと思います!

 

—————————————————-

Cinematic Viewportって何?

 

スクリーンショットをいい感じに撮影したい時や、
カットシーンなどをいい感じに作成したい時等に役立つ機能です。

 

グリッドラインやアクションセーフ等をビューポート上に表示します。

▼使い方

1.ビューポートの左上から、ビューポートタイプを「Cinematic Viewport」にする。

 

2.右上に「Cinematic Viewport Overlay」ボタンが出るので、押す。

 

3.メニューが出るので制作シーンに合わせて選択する。

 

▼メニュー詳細

①.Disavled:以下②~④の表示を無効化する。

②.Grid(3×3):3×3のグリッドラインを表示する。

 

③.Grid(2×2):2×2のグリッドラインを表示。

 

④.Crosshair:十字線の表示。

 

⑤.Rabatment:ラバットメントの表示。

 

⑥.Tint:グリッドラインの色変更。

 

⑦.Action Safeの表示。

⑧.Title Safeの表示。

⑨.Custom Safeの表示。

 

⑩.Letterbox Maskの表示。

 

 

以上となります。

いい感じに使いこなして、いい感じの画にしましょう!
シーケンサでの確認に役立ちます。

確認方法は以下をご覧下さい。

▼シネマティックス ビューポートを有効にする
https://docs.unrealengine.com/ja/Engine/Sequencer/HowTo/ViewportOptions/index.html

The post 【UE4】Cinematic Viewport を使ってみよう! first appeared on historia Inc - 株式会社ヒストリア.

[UE4] Spatial Reality Display 制作事例 –気をつけるべき5つのポイント

$
0
0
執筆バージョン: Unreal Engine 4.25

「ヒストリア・エンタープライズ」は先日、コンテンツ東京 第6回 先端デジタルテクノロジー展に出展しました。
ブースではソニーさんよりお借りした空間再現ディスプレイ「Spatial Reality Display」(型番:ELF-SR1、以下SR Display)にて
弊社技術デモ「Cutting-Edge Test Drive」をSR Display向けにカスタマイズして展示させて頂きました。

本デバイスは裸眼でVRのような体験を得られる最新のデバイスです。
実際に体験するとディスプレイの存在を全く感じさせず、箱庭をのぞき込んでいるような体験が得られます。
こちらのギズモードさんの記事で弊社佐々木が本デバイスの素晴らしさを語っているので、ぜひご覧ください。

発売前のデモ機をお借りしての制作ということで試行錯誤しながらの制作でした。
そこで本記事では、UE4でSR Display向けコンテンツをこれから作る方に向けて
良いコンテンツを作るために気をつけるべき5つのポイントと解決方法をご紹介したいと思います。

※ 本ブログ内の写真ではSR Displayの映像がダブっているように見えますが実機でみると正しく立体的に表示されます。

 


1.描画負荷に気をつける

SR DisplayはVRのヘッドマウントディスプレイのように左目、右目それぞれに異なる絵を表示するため、
4K  x  2枚分の解像度でレンダリングを行います。
さらに常時60FPS以上を推奨しており、描画負荷に気をつけないと遅延でVR酔いを起こしてしまいます。

オリジナルの「Cutting-Edge Test Drive」のデモはレイトレーシングなどリッチな表現を使用したデモで
解像度はFullHD  フレームレートは60FPSをターゲットとして開発しました。

SR Displayは 4K x 2枚分の解像度で60FPS推奨です。
オリジナルと比較すると描画ピクセル数は8倍にもなります。
当然、オリジナルの設定のままでは描画負荷が高すぎて遅延が発生するので最適化する必要がありました。
基本的にはVRのヘッドマウントディスプレイ向けの最適化手法が踏襲できるかと思います。

VR パフォーマンス機能のドキュメント

 

・Instanced Stereoをオンにする


左目右目用2枚分の描画を一度に行うオプションです。
荒野、都市のシーンは画面内に見えるメッシュ数が多いため効果的でした。

 

・ScreenPercentageを下げる


安易にあまり行いたくない手段ですが、
最終的にカーコンフィギュレーターのシーンはScreenPercentageを75に下げました。
荒野、都市のシーンでは画面全体が動いている時が多いためScreenPercentageを50まで下げました。
数字ほど画質が下がった印象はなく
印象をさほど変えることなく大きく負荷を抑えることができました。

 

・VRではフォワードレンダリングが推奨されるが

フォワードレンダリングにすると車の質感が大きく落ちてしまうため
今回はディファードレンダリングを維持したままSR Display向けに描画負荷の軽量化を諸々行いました。
車の質感優先のために今回は選択肢がありませんでしたが、
今後他のコンテンツを作成するときには酔い対策のためにも
ディファ―ドレンダリングのTemporalAAよりも、フォワードレンダリングのMSAAをまず検討したいと思っています。

 


2.視差に気をつける

 

・視差の設定について

SR Displayでの裸眼立体視の設定は、
開発用プラグインを入れると使用できるSRDisplayManagerをシーンに配置するだけで
視差、見える範囲、カメラの制御は自動的に行なってくれます。

SRDisplayManagerの枠を超えた範囲も立体視はできますが枠から離れるほど視差のズレが目立ちます。
本来はシーン全体をSRDisplayManagerの中に収めることが立体視のクオリティとしてはベストです。
今回の制作のようにSRDisplayManagerの枠から大きくはみ出してしまうような広いシーンでは視差のズレがどうしても起こります。

 

・視野角について

推奨視聴環境を見ると垂直方向の方が視聴視野角が広いです。
制作していてもディスプレイに対して高さ方向、奥行き方向の方が左右方向より視差のズレが起こりにくい印象です。
崖のシーンを作って覗き込むようなシーンを作って検証したところ、
高さ方向に関してはSRDisplayManagerの範囲を大きく超えて崖の下を覗き込んでも視差のズレはほとんどありませんでした。

崖のシーン全体

覗き込むとなかなかの迫力ですがSR Display実機でなければ伝わらないのが残念です。

 


3.目の負担に気をつける

SRDisplayManagerの手前にものを置く、SRDisplayManager大きく超えてシーンに奥行きをつけると
立体感は強烈ですが目に負担がかかるので見せ方には注意が必要です。

画像上のSR Display実機の視点で見ると街路樹、信号がアップで視界に飛び込んできます

 

目の負担にならないように一定距離以上近づくと透明になる処理を加えました。

また、このシーンは道路の奥方向が見えすぎていました。
奥に視線が行き過ぎると目の負担につながります。
一定距離以上をフォグでボカすことで目のピントを合わせようとしないように調整しました。

 


4.アセットに気をつける

アセットの注意点は以下のようにVRでのアセット制作と共通するものでした。

・モデルやテクスチャのスケールは正確に作る。通常のモニタでは気にならないスケールアウトでもとても目立ちます。
・板状のポリゴンは板感が目立ちます。
・ノーマルマップでのディティールは通常のディスプレイほど有効ではありません。

 


5.レイアウトに気をつける

 

・立体感がレイアウトに与える影響

SR Displayは視差での立体感に対して強く視線が誘導されます。
実際のSR Displayで見ないと実感して頂きにくいのですが
絵画、映像的な視線誘導よりかなり強力です。

特に荒野のカットシーンでは顕著でオリジナルのレイアウトのままでは
意図しない背景アセットの立体感に視線、目のピントを奪われて、道路や車を見失ってしまうような現象が起こりました。
これを解消するため以下のように大幅に変更を加えました。

↓オリジナルのカット

↓手前の情報量の多い岩場に強く視線が引っ張られるため車が走ってくる道路のラインに目線が行かない。

↓SR Display用に修正したカット

↓手前の岩場の立体感情報量を大きく減らしつつ、道路に沿って立体感の壁を作ることでピントが奥の山に抜けないようにした。

・カットシーンでのレイアウトは特に慎重に

また、制作中に身長が大きく違う人にコンテンツのレビューをお願いしたところ
その人の目線では車が全く見えていない(画面に映っていない)ということがありました。
ユーザーは立って見るのかor座って見るのか?
身長はどれぐらいか?
カットシーンを作る際は 上記を想定しつつもある程度目線が変わっても成立するような
レイアウト、カメラワークを行う必要があります。

 


 

以上、Spatial Reality Display制作事例 気をつけるべき5つのポイントでした。
ヘッドマウントディスプレイによるVR開発の注意点と共通点はかなり多いので
それらの情報も役に立つかと思います!

The post [UE4] Spatial Reality Display 制作事例 - 気をつけるべき5つのポイント first appeared on historia Inc - 株式会社ヒストリア.

【Ranking】ヒストリアブログ 2020年上半期 人気記事TOP20!!

$
0
0

ヒストリアブログ 2015年上半期 人気記事TOP20 から5年

随分と期間があいてしまいましたが、久々にページビュー数集計を行いました!

※ ランキングは、2020年1月1日~2020年6月31日までの累計ページビュー数順です。この期間以前に公開された記事も含まれています。

 


1位 [UE5] Unreal Engine 5 が正式発表されました!

堂々の一位は、今年一番の発表と言っても過言ではないUE5に関する記事でした!
エンジニア,アーティストなど業種にかかわらず、また普段Unreal Engineを使っていない方も関心のある内容かと思います。
続報が楽しみですね!

 


2位 [UE4] コンソールコマンドの使い方&よく使うコマンド一覧

5年前もTOP10に入っていた便利コマンドの一覧記事です。
デバッグ,プロファイルでも大活躍なので上手く活用しましょう!

 


3位 [UE4] 文字列FString操作まとめ

FStringに関する一覧記事です。
実は今年の4月に改訂したものになります。
検索に引っかかるように 見やすいようにノード名を記述した成果でしょうか?

 


4位 [UE4] BlueprintのRotatorノードまとめ

こちらも今年の4月に改訂にした一覧系の記事です。
ノードの説明のほか、回転の仕方がわかるように一部写真を追加しています。

 


5位 [UE4] 最初に知っておきたいBlueprintノード集

こちらも5年前もTOP10に入っていた記事です。
プログラミング言語の基本であるif文やfor文,Swich文にあたるBPノードなどを紹介しています。

 


6位 [新型コロナウイルス感染症対策] ゲーム開発会社のオフィスクローズ&フルリモート移行の事例紹介

リモートワーク移行の事例紹介記事です。
緊急事態宣言前に公開した記事のため、リモートワークの一例としてゲーム業界以外の方にも見ていただいたのではないかと思います。

 


7位 [UE4]Niagaraで簡単なエフェクトを作ってみる

ナイアガラの機能紹介記事です。
2019年の記事ですが、ナイアガラがUE4.25から正式リリースになったことからこちらの記事を参考にしていただいたのでしょうか。

 


8位 [UE4] レベルストリーミングについて

レベルの切り替えやロード方法などをまとめた記事です。
メニュー画面とプレイ画面の遷移など、ゲーム機能制作以外にもこだわりたいポイントですね。

 


9位 [UE4] UE_LOGについてあれこれ

UE4 C++でのログの出力方法の記事です。
カテゴリでのフィルタリング機能も備わっているのでprintデバッグ等にご活用ください!

 


10位 [UE4] Input入門

初期の頃からある初心者指南記事です。
マウスやキーボード,ゲームパッドから入力を取る方法をまとめてます。

 


11位 [UE4] 手軽にオブジェクトを破壊する

ゲーム機能としてすぐに使える紹介記事です。
今年の夏に開催した第14回ぷちコンでも爆発演出を使ったゲームが多かったような・・・

 


12位 [UE4]Megascansについて(ダウンロードとアセットの設定)

2019年末に発表があったMegascansに関する記事です。
UE5のデモムービー内でもMegascansが活用されていましたね!

 


13位 [UE4] レベル間のやり取り

レベル間のやり取りの方法を複数紹介しています。
メリット,デメリットも紹介しているのでプロジェクトにあった方法を利用しましょう!

 


14位 [UE4]コリジョンの作成方法のまとめ

コリジョンの生成方法や調整ポイントを紹介している記事です。
コリジョン設定はUE4を触り始めたときにつまずくポイントの一つかと思います。

 


15位 [UE4] アクターをターゲットの方に向ける方法

ターゲティングはゲーム制作をしている中でほしくなる機能の一つだと思います。
完全BPで制作できるのでぜひ!

 


16位 [UE4] ランダムに移動するキャラクターを簡単に実装する方法

15位と同じくランダム移動はゲームに欠かせない機能ですね。
ランダム移動の方法は他にもあるので今後追加で紹介する…かも?

 


17位 [UE4] スプライン上を動く足場の作り方

こちらもゲームとしてすぐに使える機能紹介記事です。
スプラインはコース変形が楽なのでさくっと作りたいぷちコンでもおすすめの機能です!

 


18位 [UE4] スプライン移動するキャラクターを作る

17位と同じくスプラインを利用した機能紹介記事です。
上記記事にの追加記事という形で、地形に沿った移動ができる方法を紹介しています。

 


19位 [UE4] 他プロジェクトからアセットを移動させる方法

依存するデータもすべてコピーできるので
マーケットプレイスで購入したアセットのうち、必要なもだけをプロジェクトに移動させたい時にぜひ!

 


20位 [UE4] CSVデータを扱う方法 DataTable編

UE4外で作成されたファイルの読み込み方法の紹介記事です。
エンタープライズチームにて作成された「Earth Visualization System」の一部でも地球の計測データをまとめたcsvファイルを活用してビジュアライズしています。

 

 


おわりに

5年前もランキングに入っていたまとめ系記事の人気は健在でしたね!
また、前回のランキング時に増やしたいと書いていたゲームの作り方に関する記事は非常に増えており、実際にランキングにも入っているのでやはり需要があるように感じます。
(ぷちコン期間だけの集計を見ても面白いかな?)

 

初心者向けの記事はページビュー数が伸びやすいのですが、ページビュー数だけに拘らずマニアックな記事も多数用意しています。
これを機に様々な記事を見返していただけたら幸いです。

The post 【Ranking】ヒストリアブログ 2020年上半期 人気記事TOP20!! first appeared on historia Inc - 株式会社ヒストリア.


[UE4]OnlineBeaconで通信

$
0
0
執筆バージョン: Unreal Engine 4.25

今回はOnlineBeaconについてです。

OnlineBeaconとは?

UE4で提供されている、RPC・プロパティのリプリケーションはクライアント-サーバーモデルに基づいて作成されています。
ゲームに参加したプレイヤーがUE4のルールに則った方法でしか通信できないようになっています。
そのため、同じレベル、GameControllerでの環境にログインした状態でないとこの仕組を利用することができません。

ログインしてしまうと余計な処理(レベルのロード等)が行われるので、
できれば、別レベルにいる状態でサーバとの通信を行いたい場合は、別の方法で通信をする必要があります。

UE4は機能が豊富なので、独自にソケット通信を実装し通信が可能ですが、
この場合、通信量が多い場合の通信量の制御や通信の失敗時の再送信等を独自に実装しないといけません。

今回紹介するOnlineBeaconを使用すると、RPC・プロパティのリプリケーションの仕組みを使用でき、別レベルでの通信を行うことが可能になります。

必要なクラス

OnlineBeaconを利用した通信を行う場合以下のクラスを用意する必要があります。

  • AOnlineBeaconHost
  • AOnlineBeaconHostObject
  • AOnlineBeaconClient

AOnlineBeaconHost

クライアントマシンからのAOnlineBeaconClientの接続リクエストを受け付けます。
通信までの流れは以下のようになります。

  • 1. 接続リクエストを受け付ける
  • 2. 登録しているAOnlineBeaconHostObjectにAOnlineBeaconClientが対応しているか確認
  • 3. 対応しているAOnlineBeaconClientが見つかったらホストマシン環境に同じAOnlineBeaconClientを生成し、通信を行える状態にします。

独自に使用するポート番号の特殊な指定を変更を行う等、処理を加えたい場合はこのクラスをもとにして拡張する必要がありますが、
このクラスは通常では派生の必要はありません。

AOnlineBeaconHostObject

AOnlineBeaconClient クラスの定義をAOnlineBeaconHostに登録するため、このクラスでは以下の定義が必要になります。

  • 1. BoeaconTypeNameの定義
  • 2. SpawnするAOnlineBeaconClientクラスの定義

BeaconTypeName メンバー変数に格納されている値と、クライアントの GetBeaconType の戻り値が一致すると
AOnlineBeaconClientの組み合わせが完了し、ホストとクライアント環境に存在するAOnlineBeaconClient同士の通信が可能になります。

簡単に各クラスの関係を図に表すとこのようになります。

C++での実装

1. NetDriverの追加

OnlineBeaconを利用するためいには 新たにゲームとは別のNetDriverが必要です。
BeaconNetDriverをDefautlEngine.iniに以下の設定を追加して下さい。

[/Script/Engine.Engine]
+NetDriverDefinitions=(DefName="BeaconNetDriver",DriverClassName="/Script/OnlineSubsystemUtils.IpNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")

2. ModuleRuleに”OnlineSubsystemUtils”を追加

OnlineBeaconのモジュールを使用するためにPublicDependencyModuleNamesにOnlineSubsystemUtilsを追加して下さい。

3. AOnlineBeaconClientを継承したC++クラスを用意

ホストとクライアントの通信の実装はAOnlineBeaconClientに記述します。
基本的にはUE4のRPCとプロパティのレプリケーションが使用できますので、以下のドキュメントを参考にしてください。
RPC について
https://docs.unrealengine.com/ja/Gameplay/Networking/Actors/RPCs/index.html
プロパティのレプリケーション
https://docs.unrealengine.com/ja/Gameplay/Networking/Actors/Properties/index.html

ブループリントでも実装は可能ですが、一工夫する必要があります。
後述しますが、TSubclassOfを利用してブループリントのクラスを取得してAOnlineBeaconHostObjectのClientBeaconActorClassとBeaconTypeNameを設定することで可能です。

4. AOnlineBeaconHostObjectを継承したC++クラスを作成

例 1 コンストラクタで渡す。(AOnlineBeaconClientがC++で作られている場合)
2で用意したAOnlineBeaconClientの派生クラスをAOnlineBeaconHostObjectのClientBeaconActorClassに渡す。

AMyOnlineBeaconHostObject::AMyOnlineBeaconHostObject(const FObjectInitializer& ObjectInitializer) :
	Super(ObjectInitializer)
{
	ClientBeaconActorClass = AMyOnlineBeaconClient::StaticClass();
	BeaconTypeName = AMyOnlineBeaconClient::StaticClass()->GetName(); 
}

例 2 ブループリントクラスをClientBeaconActorClassに指定したい場合
別途関数を用意して2で用意したクラスを継承したブループリントクラスを用意し、
そのブループリントクラスのUClassとクラス名をAOnlineBeaconHostObjectを継承したクラスに渡します。

AMyOnlineBeaconHostObject* AMyOnlineBeaconHostObject::CreateOnlineBeaconHostObject(UWorld* World, TSubclassOf<AMyOnlineBeaconClient> OnlineBeaconClientClass)
{
	AMyOnlineBeaconHostObject* BeaconHostObject = World->SpawnActor<AMyOnlineBeaconHostObject>(AMyOnlineBeaconHostObject::StaticClass());
	if (BeaconHostObject)
	{
		BeaconHostObject->ClientBeaconActorClass = OnlineBeaconClientClass;
		BeaconHostObject->BeaconTypeName = OnlineBeaconClientClass->GetName();
    
		return BeaconHostObject;
	}
	// 失敗
	return nullptr;
}

5. ホスト側はAOnlineBeaconHostを生成して、3で作成したAOnlineBeaconHostObjectを登録する。

デフォルトで接続のリクエストは停止しているので、PauseBeaconRequests関数で停止を解除して下さい。

// AOnlineBeaconHostはワールドに1つだけでOKなので、GameModeかPlayerController等にプロパティとして保持して下さい。
	if (OnlineBeaconHost == nullptr)
	{
		OnlineBeaconHost = GetWorld()->SpawnActor<AOnlineBeaconHost>(AOnlineBeaconHost::StaticClass());
    
		if (OnlineBeaconHost && OnlineBeaconHost->InitHost())
		{
			OnlineBeaconHost->PauseBeaconRequests(false);
		}
	}
	if (OnlineBeaconHost)
	{
		AMyOnlineBeaconHostObject* BeaconHostObject = GetWorld()->SpawnActor<AMyOnlineBeaconHostObject>(AMyOnlineBeaconHostObject::StaticClass());
		if (BeaconHostObject)
		{
			OnlineBeaconHost->RegisterHost(BeaconHostObject);
		}
	}

6. クライアント側は2で用意したAOnlineBeaconClientを継承したクラスを作成し、ホスト側へ接続を行う

接続先IP、ポートの指定・接続開始はInitClient関数を使用します。
AOnlineBeaconClientも同様に接続のリクエストが停止しているので、PauseBeaconRequests関数で停止を解除して下さい。

void AMyOnlineBeaconClient::JoinBeacon(FString HostName, int32 Port)
{
	FURL JoinURL;
	// 接続IPアドレス
	JoinURL.Host = HostName; 
	// 使用するポート番号
	JoinURL.Port = Port;
    
	InitClient(JoinURL);
	// 接続のリクエストの停止を解除
	PauseBeaconRequests(false);
}

その他の設定方法

使用するポート番号の指定方法

DefaultEngine.iniファイルにListenPort変数を追加します。

[/Script/OnlineSubsystemUtils.OnlineBeaconHost]
ListenPort=15000

その他のポート番号指定方法

以下の方法で変更することができます。

  • 起動引数に「-BeaconPort=ポート番号」を追加する。
  • AOnlineBeaconHostのListenPortをInitHost前に上書きする
    ※ゲームのポートをもとに使用するポート番号を決める場合に利用

タイムアウトの設定

デフォルトで5秒に設定されていますが、変更したい場合は
DefautlEngine.iniに以下の設定を行うことでタイムアウト時間を変更することができます。

  • BeaconConnectionInitialTimeout (初期化時のタイムアウト時間)
  • BeaconConnectionTimeout (通常時のタイムアウト時間)

    [/Script/OnlineSubsystemUtils.OnlineBeacon]
    BeaconConnectionInitialTimeout=60.0
    BeaconConnectionTimeout=45.0

最後に

OnlineBeaconのUE4のドキュメントを確認すると基本C++で実装を想定されているので、敷居がある部分もあります。
ですが、UE4の通信の機能を使いつつ、ちょっと特殊なことができるようになります。

The post [UE4]OnlineBeaconで通信 first appeared on historia Inc - 株式会社ヒストリア.

【採用】「ヒストリア大型オンライン会社説明会」開催のお知らせ

$
0
0

12月12日(土)
ヒストリア大型オンライン会社説明会 開催決定!!

この度ヒストリアでは「ヒストリア大型オンライン会社説明会」を開催することになりました。
いつもは「ほぼ月1会社説明会」として平日の夜に開催しているのですが、今回は少し規模を大きくして実施いたします。

 

<普段開催している「ほぼ月1会社説明会」との違い>

・初の土曜日の開催
普段お仕事の予定で参加が難しかった方などにも、ゆっくりと参加していただけます。

・現場メンバーが登壇
ゲーム、エンタープライズの現場で働くメンバーに登壇してもらいます。
普段の開発の話や、働く環境などをより深く知っていただけます。

・ゲーム、エンタープライズで時間帯を分けて実施
普段はまとめてご説明しておりますが、今回は時間帯を分けて実施します。より各分野に特化した会社の事業戦略などを代表の佐々木からお話します。

・カジュアル面談の実施
ご希望の方には個別での面談も実施いたします。より詳しくお話したい方はぜひお申込みください。

<開催概要>

■日時

12月12日(土)
ゲーム説明会ご参加の方:13時~
エンタープライズ説明会ご参加の方:17時~

※説明会は各回90分程度を予定しています
※希望者の方にはカジュアル面談(1人15分間)を実施します

■場所

オンライン開催

※ビデオ会議ツール「Zoom」を使用します。
事前にソフトのダウンロードをしていただきご準備をお願いいたします。

「Zoom」アプリのダウンロード
表情が見える状態で会社説明会を行いたい為、可能な限りカメラが使用できる媒体でのご参加をお願いいたします。

・パソコンから参加の方
https://zoom.us/client/latest/ZoomInstaller.exe

・スマートフォンから参加の方
iPhone
 https://itunes.apple.com/us/app/id546505307

Android
https://play.google.com/store/apps/details?id=us.zoom.videomeetings

■カジュアル面談について

ご希望の方には説明会終了後にカジュアル面談を実施いたします。
こちらは選考ではありませんので、もっと詳しく話を聞いてみたい方などがいらっしゃいましたらお気軽にご応募くださいませ。

・面談希望者多数の場合、抽選となる場合がございます。予めご了承くださいませ

・カジュアル面談は説明会終了後にお一人につき15分間行います

・面談のお時間とURLに関しては12月10日(木)~12月11日(金)の間に個別にお送りいたしますので、メールのチェックをお願いいたします

・面談は説明会と同様「Zoom」にて行います。当日はお時間になりましたらURLにアクセスし、お待ちいただければ幸いです

・面談の際の持ち物は特に必要ありませんが、もしポートフォリオや履歴書、経歴書があればお持ちください

 

<応募フォーム>

ご参加希望の方は下記のフォームよりご応募くださいませ。

https://forms.office.com/Pages/ResponsePage.aspx?id=1h7jh2hPrUWwqDEotW9ca39Kb2s-HvdAnB8y6WP2dC1URVM3VEZVTlZXVEJBSUZWTDlHWEhKTDJKMi4u

参加は当日まで受付をしていますが、カジュアル面談の受付は12月9日(水)23時59分までとなります。
ご希望の方はお早めにご応募いただければ幸いです。

たくさんのご参加お待ちしております。

The post 【採用】「ヒストリア大型オンライン会社説明会」開催のお知らせ first appeared on historia Inc - 株式会社ヒストリア.

【予告】12月18日(金) Unreal Engine 4作品コンテスト「UE4ぷちコン」番外編、「UE4ぷちコン 映像編2nd」が今年も開催!

$
0
0

2、3日でサクッと作ってサクッと応募!

“UE4ぷちコン 映像編2nd”開催決定!

開催期間: 2020年12月18日(金)~2021年1月11日(月)(1月12日(火)AM10:00)まで!

 

UE4ぷちコンとは、株式会社ヒストリアが主催する、
ゲームエンジン「Unreal Engine 4」の学習を目的とした
一般参加型ゲームコンテストです。

その番外編「UE4ぷちコン 映像編」では、UE4を使用した映像作品を応募していただきます!

参加者は短期間(約1か月)でテーマに沿った作品を制作・投稿し、入賞を目指します。
個人・チーム関係なくご参加いただけます。

「UE4の学習」を目的としたコンテストなのでプロもアマチュアも関係ありません。
ぜひ皆さんのUE4に触れるきっかけにして頂けると嬉しいです!

テーマ発表は12月18日(金)

テーマの発表と同時に開催概要を公開、コンテスト開始となります。
12月18日(金)12:00に「UE4ぷちコン 映像編2nd」特設ページが公開されるので、チェックしてくださいね!

特設ページはこちらから

 

 

※UE4ぷちコンはご協賛いただける企業様を募集しております。
詳細は下記よりお問い合わせください。
株式会社ヒストリア (info@historia.co.jp)

【告知サイト】 https://historia.co.jp/ue4petitcon-mv2 (12月18日に公開)
【主催】 株式会社ヒストリア
【共催】 エピック・ゲームズ・ジャパン

The post 【予告】12月18日(金) Unreal Engine 4作品コンテスト「UE4ぷちコン」番外編、「UE4ぷちコン 映像編2nd」が今年も開催! first appeared on historia Inc - 株式会社ヒストリア.

[UE4] ThreadHeartBeat で無限ループを検知する

$
0
0
執筆バージョン: Unreal Engine 4.25

こんにちは!みなさん、ハートビート、してますか?
本日は ThreadHeartBeat の紹介です。

さて、突然ですが、Blueprint で以下のようなループ処理を書いて実行してみましょう。


すると、ループ処理は中止されて以下のようなワーニング&ログが表示されます。


これは、意図しない無限ループ処理を検知し、修正しやすくするための仕組みです。
Blueprint のスタックトレースが表示されるため、どこで無限ループになってしまっているかが分かりますね。
ちなみに、無限ループとして扱われるループ回数は、
[Project Settings] の [Maximum Loop Iteration Count] で変更することができます。

それでは、C++ でこんなコードを書いて実行してみましょう。

#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "InfiniteLoopTestFunctionLibrary.generated.h"

/**
 * 
 */
UCLASS()
class INFINITELOOPTEST_API UInfiniteLoopTestFunctionLibrary : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()
	
public:
	UFUNCTION(BlueprintCallable, Category = "Test")
	static void DoInfiniteLoopCpp();
};

#include "InfiniteLoopTestFunctionLibrary.h"

void UInfiniteLoopTestFunctionLibrary::DoInfiniteLoopCpp()
{
	int32 SomeValue = 0;
	do
	{
		++SomeValue;
	} while (true);
}

この関数を実行すると無限ループが発生し、アプリが固まります。
そして、ログにはなにも出力されません。
もしこのような不具合が発生した場合、デバッガ環境があればデバッガで追うことができますが、
パッケージでの実行だと調査が難しくなります。

というわけで、ThreadHeartBeat を使ってみましょう!

ThreadHeartBeat とは、メインスレッド(GameThread)などのスレッドが停止していないか
監視するための、UnrealEngine の仕組みです。

メインスレッドから定期的に HeartBeat 通知を受け取ることで、
メインスレッドが正常に動いていることを確認します。
この確認は、メインスレッドとは別の監視スレッドが行います。

一定時間 HeartBeat を受け取らなかった場合はメインスレッドが停止しているとみなし、
スタックトレースを出力してアプリを異常停止させます(※)。
なお、このような監視の仕組みは、”WatchDogTimer” と呼ばれたりします。

メインスレッドに対して ThreadHeartBeat を使うには、(プロジェクトフォルダ)/Config/DefaultEngine.ini に
以下のように “HangDuration” という項目を追加し、秒数を指定します。

[Core.System]
HangDuration=5.0

HangDuration = 60.0 なら、メインスレッドが60秒連続して停止すると異常とみなします。
HangDuration = 0.0 の場合は、ThreadHeartBeat が無効化されます。
設定できる最小値は5秒ですが、開発中は、まだ最適化していない重い処理で
一時的に時間がかかることもあるかと思いますので、HangDuration 値をやや長めに設定しておくことをオススメします。

今回は上記の通り HangDuration 値を設定し、先ほどのコードを呼び出すサンプルを作成します。

なお、ThreadHeartBeat の監視開始処理よりも、パッケージ起動時レベルの BeginPlay の方が先に呼ばれているようなので
BeginPlay 直後に Delay を挟んでいます。
(この辺ややこしいですね…)

では、パッケージを作成して実行してみましょう。
作成前に、[Project Settings] -> [Packaging] の[Include Debug Files] をONにするのも忘れずに。

見事、ログにスタックトレースが出力されました。
スタックトレースがあるのとないのとでは、調査のしやすさは雲泥の差ですね。
ぜひご活用ください。

(※)プラットフォームなどの実行環境によって若干動作が異なります。
また、Debug ビルドやエディタ実行時は、動作が重いことから無効化されているようです。
詳細は、エンジンの ThreadHeartBeat.h/.cpp のソースコードをご覧ください。

The post [UE4] ThreadHeartBeat で無限ループを検知する first appeared on historia Inc - 株式会社ヒストリア.

[UE4]UNREAL FEST×ぷちコン 冬のゲームジャム祭り!受賞作品発表!

$
0
0

UNREAL FEST×ぷちコン 冬のゲームジャム祭り!

受賞作品が決定!

 

2,3日短期間のゲームジャムでしたが、全部で113作品が集まりました!たくさんのご応募ありがとうございました!

今回のテーマは”あつまる”

オンラインのゲームジャムでしたが、それぞれの場所から”あつまる”
情報が”あつまる”、同じ想いが”あつまる”
場所は違えど我々はあつまっているなと感じて決めたテーマでした。

とても素敵な作品の中から全8作品を選出いたしましたのご紹介します♪

受賞作品の発表はUnreal Engine JP公式YouTubeにて生放送で行いました!

 

■審査員
・エピック ゲームズ ジャパン  岡田 和也(Software Engineer Developer Relations)
・エピック ゲームズ ジャパン 斎藤 修(Technical Artist – Developer Relations)
・エピック ゲームズ ジャパン 小林 浩之(Technical Artist – Developer Relations)
・エピック ゲームズ ジャパン Axel Riffard(Software Engineer – Developer Relations)
・株式会社ヒストリア    佐々木 瞬(代表取締役 / プロデューサー / ディレクター)
・株式会社ヒストリア    有末 けい(広報/イベントデザイナー)


【Axel賞】集まって進め!

peke2 さま


【小林賞】ラーメンあぶら集め

Penguin Gamers さま


【ずし賞】DICE COLLECTOR

しまふくろう さま


【おかず賞】コインをあつめるゲーム あつめました

Kakua さま


【おかず賞】Hervester

ネリスさん さま


【ささき賞】Swallow vortex

yeczrtu さま


【ささき賞】ミルクランナー

トクナガ さま


【けーちん賞】雪だるま大作戦!!

ひでぺぺ さま

 

 

受賞おめでとうございました!
そしてご参加いただきありがとうございました!

少しでもみなさんのUE4に触るきっかけになっていたら嬉しいです♪

 

 

The post [UE4]UNREAL FEST×ぷちコン 冬のゲームジャム祭り!受賞作品発表! first appeared on historia Inc - 株式会社ヒストリア.

Viewing all 981 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>