ぼっちプログラマのメモ

UE4とかUE5とかについて書いたり書かなかったり。

UE4.17で追加された、VRのSpectator Screen機能について

はじめに

現在Preview版が配信されているUE4.17からSpectator Screen機能が追加されます。
この機能を使うことで、VRHMD上の映像とは異なる映像をPCモニタに出力することができます。対応しているVRHMDは、OculusRift, HTCVive, PlayStationVRです。
f:id:pafuhana1213:20170718001312j:plain
(PSVRのソーシャルスクリーンとほぼ同じ内容ですね!中身はともかく)

ただし、まだ最低限度レベルでのサポート・機能しかありません。その為、VRプレイヤーと非VRプレイヤーの操作分けなどは独自に組む必要があります。この辺りは今後サポートが追加されていく予定です。


ではでは、UE4.17では何ができるのかを紹介していきます。

続きを読む

Texture2D / RenderTargetを指定のフォルダに出力する方法について

f:id:pafuhana1213:20170708005617j:plain
とあるハッカソンで画像出力を実装したかったので調査のついでに記事を書いたり

はじめに

UE4.13でExportTexture2D / ExportRenderTargetノードが追加されました。
f:id:pafuhana1213:20170708002627p:plain

この機能を使うことで、ゲーム中にSceneCapture2Dでキャプチャした結果を出力できたりします。スクリーンショット機能自体は既に標準で用意されていますが、画面上の絵とは別の絵(例えばゲーム中のキャラクタが取った写真)を出力したい場合はこの機能が有用です。(ちなみに標準のスクリーンショット機能については以下の記事で解説してます)
pafuhana1213.hatenablog.com


出力自体はかんたんなのですが、問題はノードの引数にあるFile Pathです。

※ 2017/07/08/1:30 追記
ExportRenderTargetで出力されるファイルは.hdr形式です
。その為、標準のビューワーではおそらく開けません。UE4上のコードで一般的な画像に変換できないか、分かり次第追加します

続きを読む

World to Meters設定を変更した際にMotion Controller Componentによるトラッキングがおかしくなる問題について

ワールド設定にあるWorld to Metersはとても便利な機能で、この値を弄ることでVR実行時におけるレベルのスケール感を簡単に調整することができます。(自分を巨人、または小人にするイメージ)
f:id:pafuhana1213:20170521174117j:plain

しかし、Oculus TouchやViveコンを使用する場合はWorld to Metersの扱いには注意する必要があります。具体的には、Motion Controller Componentを使ったトラッキングが正常にVR空間に反映されなくなります

例えば、手を思いっきり動かしているのにVR空間上の手が全く動かなかったり、逆に動きすぎだり…。おまけで、VR空間上の手の大きさも合わなくなります。
f:id:pafuhana1213:20170521174454p:plain


この問題の解決策は実は簡単で、以下のようにWorld to Metersの値に応じてMotion Controller Componentのスケール値を変更するだけです。
f:id:pafuhana1213:20170521174657p:plain

注意:Motion Controller Componentに手などのMeshをAttachしていない場合は、そのMeshのスケール値も変更しましょう


あまり知られていない(自分も最近まで知らなかった)ノウハウなので記事にしてみました。おわり




f:id:pafuhana1213:20140602095044j:plain
なんとなくノリで1日に2回も記事書いちゃったぜ!
(下書きで貯めとけばよかったフラグ)

UMG(Widget)をテクスチャ(RenderTarget)に描画する方法について (サンプル配布) (UE4.21に対応)

*はじめに
UMGの描画内容をテクスチャに焼き込みたいケースはしばしばあります。3Dモデルの表面に反映させたり、以前説明したStereoLayerに使用したり…その他色々!

f:id:pafuhana1213:20170521162948p:plain


SceneCapture2Dを使うことで簡単に実現はできるのですが、処理負荷の問題やレベルのどこかに配置する必要があったりと面倒です。ということで、今回はUMGの内容を直接テクスチャに描画する方法を紹介します。

説明とかいいから使いたいんだけど!?という方は、↓のサンプルプロジェクトをどうぞ。プラグイン化してます。4.15で作りました。
github.com

続きを読む

UE4でWebカメラの画像を取得する方法について(UE4.17以前)

追記

UE4.18にてWebカメラの取得に関して正式対応が入りました。その為、本記事は古い内容になりますので、UE4.18以降をお使いの方は以下の記事をご確認下さい。
pafuhana1213.hatenablog.com

はじめに

f:id:pafuhana1213:20170422234654j:plain
皆さん、カメラは好きですか!?僕は好きです!
ということで、UE4Webカメラの画像を取得する方法について調べました(雑導入)

Webカメラの画像を取得できると、昨今話題になっているAR, MR的なことがUE4上で可能になります。先日紹介したViveTrackerと併用すれば、こんな感じのことも簡単に?できるはず…?
www.youtube.com


Webカメラの画像を取得するには

2017/4/22現在で取れる手は以下の4つです。

OpenCVプラグインを使う

OpenCVプラグインに関しては以前の記事でご紹介しました。ただ対応しているバージョンが4.9とかなり古いため、今となってはあまりオススメできません…。
pafuhana1213.hatenablog.com

公式対応を待つ

公式対応は…今のところ4.17を予定しているようです。もうしばらくお待ち下さい…
Investigate Media Framework plug-ins for webcam support
https://issues.unrealengine.com/issue/UE-35406

がんばってコードかく

がんばって!

WebCameraプラグインを使う

お待たせしました、今回紹介するのはこのプラグインです!
forums.unrealengine.com
このプラグインWebカメラからの画像取得に特化したプラグインです。4.12と少し古いバージョンが対象になっていますが、数行修正するだけで現時点で最新である4.15で問題なく動作します!また、プロジェクトの組み込みは比較的簡単なので、とてもオススメのプラグインです。

以降では、このプラグインの導入・使用方法について紹介します。C++コードを編集・ビルドする関係でVisualStudioのインストールはしておいて下さい。

続きを読む

UE4でHTC Vive Trackerを動かしてみた

はじめに

HTC Vive Trackerが発売されました!
(なにそれ?という方は↓の記事がとても参考になります)
teruaki-tsubokura.com


ということで、早速UE4上で動かしてみました。( UE4.15.1 )

MotionControllerコンポーネントを試してみる

まずは、ViveコントローラやOculusTocuhを動かす際に使うMotionControllerコンポーネントを試してみました!
…動かない!

どうやらまだViveTrackerには対応していないようです(;_;)

現状の方法

GetTrackedDevicePositionAndOrientationを使うことで、ViveTrackerのトラッキング情報を取得可能です。指定するDeviceIdは動作環境によって変わってくると思います。
f:id:pafuhana1213:20170331015440p:plain

VirtualRealityテンプレートを使用する場合、↑のノード・コンポーネント階層構造のActorを作成し、MotionControllerPawnのBeginPlayでそのActorをSpawnすることで動作します。BP_MotionControllerをSpawnしている箇所の実装が参考になります。

おまけ:VR空間で酒を飲んでみた


f:id:pafuhana1213:20170331015944j:plain

深夜のテンションこわい

UE4のFullBodyIKプラグイン「IKinema RunTime Plugin」とRecording Sequence機能を使って簡単にモーションを録画・作成してみた

前回
pafuhana1213.hatenablog.com

はじめに


「UE4にはデフォルトでレコーダーシステムがついてるので、モーションキャプチャーの代用にもなるのでは?」

やりましょう!

ということで、IKinemaプラグインで付けたポーズ・モーションからAnimationSequenceアセットを作成してみました。録画はUE4標準機能であるRecording Sequenceを使っています。4.14で入った新機能です。
www.youtube.com
か、簡単過ぎる…!ちょっとしたポーズなら十分これで作れそうな気がします!
それでは、どういう実装・流れなのかを紹介します。

Recording Sequence

docs.unrealengine.com
www.youtube.com

この録画機能を使ってアニメーションを保存します。↑では録画ボタンを押していますが録画開始/終了用のBPノードが用意されているのでそちらを使います。
f:id:pafuhana1213:20170213230059p:plain
Actors to Recordには録画対象であるActorの配列を渡します。今回はVRコスプレしたキャラクタだけでいいので↑の実装になっています。

そして、シーンを実行 → 録画開始 → 録画終了すると…
"Content\Cinematics\Sequences\Animations"にアニメーションが出力されています!
おわり!

f:id:pafuhana1213:20170213230521j:plain
(あまりにも簡単過ぎて手抜き記事になってしまった…)