Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
UE4初心者がエディタ拡張をやってみた
Search
mao
February 26, 2017
Technology
2.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
UE4初心者がエディタ拡張をやってみた
Unreal Engine Sapporo Meetup! (2/25)
ショートセッション・LT 資料
https://atnd.org/events/85683
mao
February 26, 2017
More Decks by mao
See All by mao
たのしいUnsafeUtility
mao_test_h
0
2.8k
VRMSpringBoneをJobSystem&ECSで最適化してみた話
mao_test_h
0
750
ECS初学者に向けてのTips集
mao_test_h
0
460
OculusGoで大量のオブジェクトを動かしてみた
mao_test_h
1
1.3k
UnityWebGL Tips集
mao_test_h
0
1.2k
UE4+Tangoをいじってみた話
mao_test_h
0
600
Other Decks in Technology
See All in Technology
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
230
個人開発で育てる「大規模設計の苗床」 - AI時代の1人開発から始める業務への知識接続 / The Seedbed for Large-Scale Design - From AI-Era Solo Projects to Professional Knowledge
bitkey
PRO
1
270
SRE依存からの脱却 運用を開 発チームへ移す、 フルサイ クル開 発体制の実践
joooee0000
0
3k
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
1
220
SREとQA 二人三脚で進めるSLO運用/sre-qa-slo
sugitak
0
780
Alphaモジュール使っていいのかい!?いけないのかい!?どっちなんだいっ!?
watany
1
250
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
130
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
310
第67回コンピュータビジョン勉強会CVPR2026読会前編
tsukamotokenji
0
140
地域 SRE コミュニティ最前線 / SRE NEXT 2026 Discussion Night Track C
muziyoshiz
0
230
SRE本の知られざる名シーン / The Hidden Gems of Google SRE Book
nari_ex
1
420
LLM/Agent評価:トップ営業の発言を「正解」にする 〜暗黙的正解による評価を営業資産に変える〜
takkuhiro
1
230
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
290
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
590
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Leo the Paperboy
mayatellez
8
1.9k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
2
330
GitHub's CSS Performance
jonrohan
1033
470k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
510
Transcript
Unreal Engine Sapporo Meetup! (2017/02/25) ショートセッション・LT
どこからきたの?なわばりは? ・mao (@TEST_H_) ・ゲームプログラマーなフレンズ. ・仕事では主にUnityちほー等に生息している. ・UE4は業務関係なしに趣味で楽しんでいる。
注意点 ・LTなので諸々端折ってます。。。 ・内容的に大分プログラマ寄りになります。
その他 質疑応答やご指摘等につきましては後のMeetupタイムで お受けできればと思いますので、お気軽にお声がけ下さい。
目次 1. はじめに 2. BehaviorTreeのTaskに Tick Intervalを設定できるようにしてみた。 3. アウトプットログに サーバルちゃんを表示してみた。
4. UE4上で けものフレンズが見たい。見たい。
はじめに
環境構築について historia社のブログが参考になります。 [UE4] エンジンのソースコード取得とビルド手順のまとめ UE4.6改訂版 http://historia.co.jp/archives/1327 •必要なもの ・GitHubアカウント ・VisualStudio(個人なら無料版であるCommunityでもok) ・UnrealVS
※VisualStudioの拡張機能。 UE4を起動する際にプロジェクト(.uproject)を指定して起動する事が出来る 。 無くても行けなくはないが、確実にあった方が良い。
BehaviorTreeのTaskに Tick Intervalを設定できるようにしてみた。
BehaviorTreeのTaskには Tick Interval(Tickの呼び出し間隔)に 相応する設定が無かったので追加してみた。 ※実装されていないと言う事は、 裏を返せばそもそも使用される想定が無いので 実装されていないだけとも考えられるが...
実装箇所の特定 元からTaskカテゴリーにある ”IgnoreRestartSelf”の文字列で全検索。 →結果”BTTaskNode.h”辺りに変数を発見。
Editor上から値を調整出来る様に 一先ずは処理に必要な変数を追加。 その上でUE4上から値を変更出来る様にしたいので 変数にUPROPERTYを付ける。 →これでEditor上に表示される。 ※ドキュメントに情報が纏まっているので要参照。
後は実装 BTTaskNode.cppに Tick関連の処理があったので改造。 結果、制御出来るようになった。 →右のキャプチャはintervalを [0.016秒][1秒]に設定したTaskを 何個か同時に走らせてログ出力した物。
アウトプットログに サーバルちゃんを表示してみた。
※はめ込み画像ではありません。
エンジンコンテンツにサーバルちゃんを追加 •必要なこと ・エンジンソースのContent以下にサーバルちゃんを追加 “/Engine/Content”が該当するかと思われるので 一先ずは“/Engine/Content/Editor/Slate”以下に追加。 ・SlateStyleクラスの追加 historia社のブログが参考になります。 [UE4] プラグインによるエディタ拡張(4) 自作ツールに画像を利用する http://historia.co.jp/archives/476
※但し、こちらはPlugin想定で書かれているので 画像の参照先をエンジンコンテンツ以下にする必要がある点には注意。
実装箇所の特定 前章と同じくEditor上の固定の文字列で 全検索をかけるという手もあるが、 EditorのUIであれば ウィジェットリフレクタが大変便利
表示が小さくて分かり難いかもしれないが、 下記のキャプチャはアウトプットログにフォーカスを当てたもの。 構造だけでなくソースと行数が表示されるので実装箇所も特定できる。 ※イメージ的にはブラウザの開発ツールのElementsの挙動に近い。
とりあえずはSOutputLog.cppに実装すれば良いことがわかった。 SlateStyleクラスを実装した上でソース中で読み込み、 アウトプットログの右側にボックスを配置して表示。
Slate UI なお、あまり見慣れないであろう下記の書き方は UE4のUIプログラミングフレームワークであるSlateUIの記述。 こちらは公式ドキュメント及びhistoria社のブログが参考になります。 [UE4] プラグインによるエディタ拡張(3) SlateUIを使用してウィンドウを作成する http://historia.co.jp/archives/373
None
UE4上で けものフレンズが見たい。
と言う事で、アウトプットログ上で 動画再生出来る様にしてみたお話。
やったこと ・MediaPlayerEditorの動画再生を行っているUIを特定して Plugin側からエンジンコード側に力技で移植。 ・移植した動画再生エリアをアウトプットログに表示。
None
実装箇所の特定 ウィジェットリフレクタを用いて特定。 結果、”SMediaPlayerEditorViewer.cpp”から 呼び出している”SMediaPlayerEditorOutput”が それっぽかった。 →こちら”SCompoundWidget“と言うのを継承しており、 このままSNewする形で付けられそう。
依存の解決 ・アウトプットログのモジュール依存関係を解決。 OutputLog.Build.csにMediaPlayer関連を追加。 (※精査せずにMedia関連を突っ込んだので多分不要な物も混じっている筈...)
移植 SMediaPlayerEditorOutputはPlugin側で実装されており、 エンジンコード側から参照する方法が現時点では不明だったので、 一先ずはエンジンコード側に 同じ物を実装すると言う力技を用いることに。
MediaPlayerのインスタンス化 再生するにはUMediaPlayerのインスタンスが必要。 →Editor上からの場合はAssetRegistryを用いる事で MediaPlayerのAssetを取得出来そう。 一先ずは必要なAssetのPathを 直打ちする形でMediaPlayerのAssetを取得し、 UMediaPlayerをインスタンス化。 ※右のキャプチャでは普通に呼んでいる が、実際にはAssetの読み込み完了時の コールバック等で読み込んだりと、
ロードの動作を保証する必要がある。
UMediaPlayerのインスタンス化は出来たので さっきのサーバルちゃんの位置に表示してみる。
結果 出来た。 https://twitter.com/TEST_H_/status/833 692908322582528 ※再生動画には けものフレンズでは無く、 サンプル動画を用いております。 (けものフレンズの動画ファイルなんて無かった...)
まとめ ・C++の基礎的な知識は必要になるが、 エンジンコード自体は非常に綺麗に書かれているので 意外と読めた。 ・内部処理を追っていると何が何処にあるのか? と言った情報を目に出来るので、これはこれで勉強に。 →例えばBlueprintに関数を公開している箇所とか見えてくる ※嫌な所がブラックボックスになっていないので 足りない機能や欲しい機能は自力で何とか出来たりするかも。
まとめ ・本格的にやるならエンジンコードをフォークするなりして 独自に管理するなりした方が良いかもしれない。 (寧ろ、ここらの管理方法は自分も知りたい)