読者です 読者をやめる 読者になる 読者になる

てんちょーの技術日誌

自分がつまづいたこととかメモ

【UE4】Widget Interaction Componentを使ってみた

#VR UE4 Vive

はじめに

2016/08/07現在ではまだUE4.13 preview 1ですが、 新たに追加されたWidget Interaction Componentが思ったより便利な気がしたので 簡単に使い方を書いておこうかと思います。

手順

基本は3DWidgetを作る流れと同じなので、こちらでも見てください。

docs.unrealengine.com

一応今回はこんな感じで作ってます。

Widget

f:id:shop_0761:20160807112220p:plain

WidgetのEvent f:id:shop_0761:20160807112230p:plain

3DWidgetのActor

こいつにWidgetInteractionComponentを追加します。

InteractionDistanceとか設定できます。

f:id:shop_0761:20160807112243p:plain

LineTraceでWidgetを拾う

f:id:shop_0761:20160807112337p:plain

今回はMotionControllerのShoulderボタンを使いました。

一応押してる間にHitした対象がなくなったら困るので、適当にキャッシュしてみる

f:id:shop_0761:20160807112256p:plain

終了!!

ちゃんとlogが取れてます。

f:id:shop_0761:20160807112805p:plain

おわりに

めっちゃ簡単だし超VR向けで便利なのでは!?って感じでした。 PosingEditorの方も似たようなことをしていますが、非常に面倒な感じなのでこれに乗り換えたいですね。

【UE4】UE4札幌MeetupでVREditorのお話をしてきた

#VR Vive UE4

はじめに

すごい勢いで決まった今回のイベント

僕が勝手に

と持ちかけたところから始まっています。

気がつけばとんとん拍子で決まっていき2時間くらいで決まってしまいました。

中身のお話

そこでVREditorのお話をしてきました。

Reveal.jsとMarkdownで資料を作ったのがこちら

VREditorを使ってゲームを作ってみた UE4MeetUpSapporo

2016/07/03時点で公開されているVREditorの資料の中で、一番色々やっている気がします。

資料読むのが面倒な方用にざっくり説明すると

  • 簡単なレベルデザイン"だけ"ならサイズ感ばっちり
  • すべてをVR内で完結させるのはまだ厳しい
  • 調整できることが限られている

といったことをまとめてあります。

他にもalweiさんの絵作りのお話と、おぎまふさんのセル表現のお話もありました。 どちらもとても勉強になる内容でした…

ue4studysapタグを追ってみたりするといいかもしれません。

そしてパネルディスカッションにも参加させていただきました。

質問内容は事前に教えて頂いてたのですが、ほぼその場で思いついたことを言っていただけなので役に立ったのかどうかわかりませんねww

あとでTwitterのタグを追いかけてみると、

とこの辺りが自分で話してた内容ですね。何か参考になれば幸いです。

まとめ

EPICの今井さんや、alweiさん、まえはなさんなどすごいギリギリな日程の中本当にありがとうございました!!

今井さんとalweiさんと僕が当日北海道入りするというよくわからない状態でしたね…

まだUE4歴1年未満ですがこれからも頑張って行きたいです。

おまけ

なんと、このイベントの予定を入れてから気付いたのですが大学院の推薦入試と被ってしまったことに気づき、さらに前日はVRZoneが21時終わり(飛行機の最終は21時半)など他にも色々不運なことが重なってました。

ということで、かなり出遅れていますが就活しようかと思ってます。

一応新卒です。雇ってやってもいいぜ!みたいなお話があれば@shop_0761にDMとかいただけると泣いて喜びます。

【UE4】twitterで解決したちょっとしたつまづきをまとめてみた(随時更新予定

UE4

はじめに

簡単な疑問とか、AnswerHabに投稿するまでもないような内容はTwitterに投げておくと解決したりします。

それらをどこかにまとめたほうがいいんじゃないか、みたいなお話があったのでまとめておきます。随時増えると思うのでちょくちょく書き足していきたいです。

極み本にて

ピボット

これは直接筆者の方からコメントを頂きました。

と、根本的な解決が出来なかったのでその章のプロジェクトデータを使って次の章に進みました。

後日、他の方も同じような問題に遭遇してたみたいで原因はよく分かってません…

Possess

今となってはそりゃそうかって感じですね…

どんどん明るくなる

これ地味に困ってました。

そして解決したのは建築本を見た最近です。これskyLightを置けば多少緩和されるのですが、根本的な解決にはなってませんでした。室内でもわぁっとした感じが残ってしまっていました。

なにが問題だったかというと自動露出です。建築本によると

自動露出が設定されていると、プレイ中に明るい部屋から暗い場所に移ったとき、またはその逆のときに、じんわりと目が慣れてきて周囲が見えてくるという効果が現れます。

まさにこれでした。これを切るにはPostProcessVolumeを使います。

f:id:shop_0761:20160426114447p:plain

このMinとMaxを同じ値にすると切れます。あとは明るさの調整に寄るので数値は調整してください。(UnBoundとかにしておくと楽

アニメーションBPでのGetController

このころ何やってたか思い出せませんが、一応解決してるっぽいですね…

ポーズの実装

Splineのノード名が変わったっぽい

EventTickでの分岐

ゲート便利です。

物理アセットで見えてる軸

これ奥のやつだけY軸が上向いてたので揃えられるのかなーと思ったら、モデルの仕様っぽいので気にしないことにしました。(気にしなくてもなんとかなった

マテリアルのstaticBoolParam

そりゃstaticなので変更出来ませんよねってなりました。けど、このLerpで解決するのは面白いですね。

TimeLineノードでループ処理をしたい時

ForLoop→TimeLineとやると、ForLoopだけ先にぐるぐる回ってしまうので配列の最後の要素だけにTimeLineの結果が反映される感じになったと思います。

なのでTimeLine→ForLoopとすると配列の全ての要素にTimeLineの結果を反映させることができます。すごい。

BTService内でEventReceiveTickAIを使う時

wavファイルが上手く読み込めない

wavファイルは推奨設定がありました。

docs.unrealengine.com

これに合わせて編集するといいと思います。けど既存のSEとかは再変換しなきゃなりません。

ぷちコン作ってた時はこちらにお世話になってました。一括で変換できるし軽いので便利です。

osdn.jp

TimeLineの長さ

これで、3s、5s、7sとかで発火するイベントを仕込んでおいて長さを変更すれば7sのだけ発火させないみたいなことが出来るのかな…

継承とイベント

これはおかずさんのmotionControllerSampleでのBPです。

pafuhana1213.hatenablog.com

中身を読んだメモを書きました

shop-0761.hatenablog.com

RemoteEvent

これ便利なんですが、GameModeとかGameInstanceに処理を書いたほうが安全では…となりました。

配列のコピー

テレビみたいに見せたい

Billboardだとカメラに追従して回転するので3DWidgetのほうが良かったです。

ランダム生成すると出るエラーのひとつ

Failed to stream mip data from the derived data cache for "Map" Streaming mips will be recached

これランダム生成した壁とか床とかをStaticにしたら出なくなりました。

Animation Notifiesで落ちる

ぱっとTextureを表示した時にボケてから徐々にみえるようになる

Helpみたいにボケると困るものはTextureのここを変更するといいみたいです。

f:id:shop_0761:20160426121211p:plain

参考

effect.hatenablog.com

3Dwidgetに設定したWidgetクラス

Viveのコントローラの位置がなんか合わない

これに関してはマジでドキュメントに書いておいて欲しい

ありがとうおぎまふさん!

VR用のパッケージング

hmd mirror on/off

もともとは

タイプミスしたにもかかわらず、hmd mirror offと同じ現象になってしまった模様

解決策は@k0rinさんに教えていただきました

ちなみにUE4.12.5 7月15日現在では

hmd mirror mode [0-4]

でも発生する可能性がある…と思います

(hmd mirror mode 2ではなった)

【UE4】第5回ぷちコンでボツになってしまったものたち

UE4 ぷちコン

はじめに

ぷちコンで作ったもろもろ紹介編6です

元記事

shop-0761.hatenablog.com

作ったはいいけど、ボツになってしまったものたちをここで紹介させてください…

トロンの装備

Cannon

まずCannonはもともとビームではなく、弾を撃ってました。溜め打ちの実装まで作ったり、溜めてる間はゲージっぽいものを作ったりもしました。(こっちは残ってます

f:id:shop_0761:20160426110038p:plain

f:id:shop_0761:20160426110057p:plain

けど、世界観が出来上がっていくにつれてビームの方がいいんじゃない?と言われて修正しました。

弾を打つほうが衝突判定は取りやすかったんです、はい。

空を飛ぶ

トロンはもともと場所を指定したところへ放物線上に飛んで行くような感じで作ってました。もちろん今みたいに複数点を巡回する感じではありませんでした。 なので、遠くへ飛ばすときになにかいるなと思って最初に作ったのがWingです。

f:id:shop_0761:20160426111322p:plain

すごい壮大な感じになってしまいました。そしてこのwingのアニメーションも作ったんですが、どうもしっくりこないし世界観とのズレを感じてまた作りなおしたのがPropellerです。

f:id:shop_0761:20160426111430p:plain

なんとかコプター的なイメージで作りました。これは結構いい出来かなーと思ってました。けど常時浮いてるし、それならそもそもこういう装備がいらないんじゃ…ってなったのでさよならしました。

解錠

最初はカードリーダーではなく鍵を作ってました。けどこれ作り方を間違えたのかUV展開が上手くいかず、さらには世界観(ry なので割とすぐにボツになりました。

f:id:shop_0761:20160426111810p:plain

f:id:shop_0761:20160426111825p:plain

というか今回作ったカードリーダーの名前が分からなくて、なんとかの森で使ったe+カードリーダーを参考に作りました。

まとめ

と考えて作らないと世界観が(ryってなるのでいい加減イメージを固めてイラストにしてから作り始めるべきだなと思いましたw

こう見るとブレッブレですね… なんとか纏まったのが奇跡かもしれませんw

【UE4】MaterialBillBoardを使った視点=照準のやつを作ってみた

ぷちコン UE4

はじめに

ぷちコンで作ったもろもろ紹介編5です

元記事

shop-0761.hatenablog.com

色々VRのコンテンツを見ていると視点=照準みたいなのが多いけど、実装方法があんまり書いてないなと思ってました。 結論から言えばHUDで実装すればいいのですが、そこにたどり着くまでにつくったMateriallBillBoard版もメモとして書いておきます。

作ったもの

f:id:shop_0761:20160426032053g:plain

こんな感じでヒットしてる感は出せます。(HUDだと画面に張り付いてる感が大きい気がします…

作り方

PlayerにMaterialBillBoardコンポーネントを追加しておきます。今回はこんな透過pngを用意しました。

f:id:shop_0761:20160426030241p:plain

でマスクかけたものを使っています。一応UIかなと思ってUIMaterialにしてます。

f:id:shop_0761:20160426030446p:plain

で、これをあとはLineTraceでHitしたLocationにSetWorldLocationします。

ただこのままだとEventTickでSetすることになるんですが、そうするとPlayerが後退した時にぶれます。

f:id:shop_0761:20160426032741g:plain

なので入力の方でSetLocationすると解決しました。きっとTickが悪さしてるような気がします。

簡単なイメージ図だけ

f:id:shop_0761:20160426031441p:plain

こいつこのまま使うと壁にめり込んでしまうので、ちょっと調整したりしてます。

twitterでのメモも載せておきます。

【UE4】LineTraceを使わずに銃の当たり判定を作ってみた【小ネタ】

UE4 ぷちコン

はじめに

ぷちコンで作ったもろもろ紹介編4です

元記事

shop-0761.hatenablog.com

本来、LineTraceを使うところをちょっと違うアプローチで作ってみました。ほんとはBeamParticle自体に当たり判定を付けたかったんですが…w

作り方

無駄に2点間の距離を計算するノードを使っていますが、普通に(Vector)-(Vector)のLengthを取れば良い気がします。

f:id:shop_0761:20160426023556p:plain

f:id:shop_0761:20160426023607p:plain

  1. このイベントが発火したタイミングでのPlayerLocationを取っておく
  2. 1s後のPlayerLocationと比較してその距離が300以下の時にTrue
  3. BeamTargetを今のPlayerLocationにセットしてApplyDamage

としてます。Falseの時は取っておいたPlayerLocationのzを0にした値をBeamTargetにしてます。

これのいいところは、敵正面だけでなくちょっとしたホーミングのような感じになるところです。なので割と当たります。デバッグ時も普通に食らってました。

すっごいあっさり終わってしまった…

【UE4】 UE4上で簡単なアニメーションを1から作ってみた

UE4 ぷちコン

はじめに

ぷちコンで作ったもろもろ紹介編3です

元記事

shop-0761.hatenablog.com

既存のアニメーションに加算していく記事は見かけたので、今回は1から作ったのでまとめてみたいと思います。

作り方

SkeltalMeshをダブルクリックとかしてCreateAsset→CreateAnimation→FromReferencePoseします。(FromCurrentPoseでもいいと思います

f:id:shop_0761:20160426021203p:plain

適当なところに保存します。

f:id:shop_0761:20160426021211p:plain

すると1フレームだけのアニメーションファイルが出来ます。

f:id:shop_0761:20160426021236p:plain

これじゃ使いにくいので、下のバーを右クリックしてフレームを追加します。今は1フレームしかないのでInsertしようがAppendしようが変わらないと思います。

f:id:shop_0761:20160426021245p:plain

で、設定したいボーンを選択して、上のKeyを押すとトラックを追加できます。

f:id:shop_0761:20160426021252p:plain

後は加算アニメーションと同じ要領で作れると思います。試しに頭をぐるぐる回すものをつくりました。

f:id:shop_0761:20160426021314g:plain

参考

pafuhana1213.hatenablog.com

まとめ

このくらいの簡単なアニメーションならいいのですが、複雑なものまで…となると正直使いやすいかと言われると微妙です。どんどん改良されて使いやすくなるといいですね。