てんちょーの技術日誌

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

【UE4】MayaLT2017でphysXを使って服を揺らす

はじめに

第6回ぷちコンにあわせて頓挫中だった3Dモデルを作りました。 その話は、また別の機会にするとして今回はワンピースをApexClothで揺らしてみたいと思います。

結論から言えば、微妙です。

あまり期待しないでください。

MayaLTも初心者ですのであしからず。

やるなら一通り読んでからのほうがいい気がします。

テスト環境

  • MayaLT 2017
  • UE4.13
  • PhysX: Maya DCC plug-in for PhysX 3-3-3

Maxでも出来ると思います。(未確認

手順

ApexCloth自体は最後にある参考サイトの@com04さんのサイトを見るといいかと思います。 以降はある程度知ってるものとして色々省略します。

基本的に参考を最後につけているのでそちらの動画(英語)を見ていただければ実際済むお話ですが、

つらい目にあったよってところも織り交ぜながら書いておきます。

それと、服のマテリアルは別にしておきましょう。そのほうが多分安全。

分けてなかった時

服だけになりました。

ちなみに服には一切ボーンは入ってません。

プラグインを入れる

nvideaにログイン後、こちらのDownloadCenterからダウンロード出来ます。

手元のMayaのバージョン等に合わせてください。

Download Center | NVIDIA Developer

.msi形式なので、実行すれば導入自体は出来るかと。

そして、MayaLT上で言うとウィンドウ → 設定/プリファレンス →プラグインマネージャー からphysx.mllをロードすると

f:id:shop_0761:20160914000609p:plain

このように追加されます。

physX Clothingを作る

これを作るときにはジョイント(ボーン)が必要になるはずなので、準備しておきましょう。

対象のメッシュを選択して(今回はワンピース)、右から6つ目のスカートみたいなアイコンをクリックするか、上のメニューからphysXphysX Clothing → Create Clothingで作れます。

これを色々調整していく感じです。

ペイントする

スパナみたいなアイコンをクリックすると、このようにメニューが出ると思うのでPaintを選べば塗れます。

f:id:shop_0761:20160914001216p:plain

この時、マテリアルを設定していればこのように紫色になるかと思います。ならなかったら確認してみてください。

ちなみに僕は一旦ここでハマりました。

はい、原因不明ですが乗り切りました。

こんな感じで色々設定できます。

f:id:shop_0761:20160914002529p:plain

Attribute

4種類塗れます。

  • maxDistances これがきっとメインになる塗り
  • latchToNearest 動画だと服の裏地に塗ってました

あとのBackstop系はよくわからなかったです()

とりあえずmaxDistanceを揺らしたいところに強弱をつけて塗るみたいです。

参考までにこんな感じしたり。

f:id:shop_0761:20160914003020p:plain

裏も塗りました。

f:id:shop_0761:20160914003026p:plain

シュミレート自体は再生ボタンを押せば勝手にやってくれます。

ちなみにlatchToNearestを塗ると表と裏の生地が貫通したのでやめました。

RagDoll

服と体のコリジョンを作れます。

Bodyになるメッシュを選択後、藁人形みたいなアイコンをクリックしてCreate Kinematic RagDollで作成できます。

つよそう

f:id:shop_0761:20160914003620p:plain

でこのように選択して、不要なジョイントのところのコリジョンをRemoveできたりします。

f:id:shop_0761:20160914003821p:plain

個々のコリジョンを編集するには、上でジョイントを選択した後に下のshapeSetUpから目的のコリジョンを選択して、Selectすれば編集メニューがでます。

f:id:shop_0761:20160914003955p:plain

f:id:shop_0761:20160914004212p:plain

と普通に移動、回転、スケールができるみたいです。

なお

こんな目に遭っているので様子見ながら調整しましょう。

出力する

一通りおわった(ことにした)ので、UE4用に出力します。

Create Clothingしたメッシュを選択して出力するだけです。

ポイントは

ファイルの種類をphysXにした後、ここを確認しましょう。

f:id:shop_0761:20160914004651p:plain

特にunitを間違えるとおかしなことになります。

あとは.apxファイルが生成されるので適用するだけですね。

この辺はスクショでも貼って終了にします。

f:id:shop_0761:20160914005550p:plain

結果

はい すごい微妙に変わります。

まとめ

ここまでやってこれだけ…しかも微妙って…

なので、現状はボーンを入れて、Anim Dynamicsで揺らすか手付けアニメーションにするかが最適解かもしれません。(けど面倒なのでやりたくない

余裕があれば髪もやります。

AnimDynamics

unrealengine.hatenablog.com

参考

www.youtube.com

www.youtube.com

www.youtube.com

docs.unrealengine.com

物理-布シミュレーション - UE4 Document@com04

CEDEC2016に行ってきた

はじめに

今回は特に行く予定がなかったのですが、急遽就活の関係で8/27に東京に行かなきゃならなくなったので

CEDECいけるじゃん!!」

ってなったので行きました。

個人的によかった講演やらメモをまとめておこうかなというお話です。

資料はCEDiLに公開されていたりするので、そちらもできるだけリンクを貼ります。

CEDiLは会員登録が必要なのでそれだけご注意を。

順番は適当です。

手と指がVRの中にある:Oculus Touchのインタラクションデザイン

資料公開があると思うのですが、さすがにまだ見当たらず…

Youtubeの配信もあったし、主婦さんのツイートとかを見ていただいたほうが早いかも。

Touchは非常に良いコントローラーなので、よりよい体験のためにどうしたらいいか というような内容が中心で、 僕も気になったところをちょこちょこツイートしてました。

こんなところですかね。Touchが楽しみです。

ベヨネッタ2』におけるゲーム品質を上げる為の自動化 ~オートプレイと継続的なパフォーマンス計測~

cedil.cesa.or.jp

前回のぷちコンでプレイ動画を撮るのにすごい苦労したので興味がありました。

AutoPlayの実装方法について説明されているのですが、非常にイメージしやすく これならUE4でもぱぱっと作れそうという印象でした。

ざっくりした方法を紹介するなら、

  1. コーンと呼ばれるマーカーみたいなものをレベルに配置
  2. 一番近いコーンに移動
  3. Actionを実行
  4. 終わったら次のコーンへ

と2-4を繰り返すイメージです。 AIを使うわけではなくAutoPlayなのでパッド入力としてActionを行います。

Actionには移動、待機、ジャンプなどそれぞれセットするだけなので単純。

Aで攻撃して壁を壊したら、移動する ではなく「適当に10回くらいA連打、待機、移動」のような実装で十分だそうです。

パフォーマンス計測の方は専用のwebページを作って、グラフィカルに負荷をみれるようにというコンセプトで作られており

アーティストさんにもパッと見で改善されたかわかるようにとのことでした。

データベース化すると管理で死んでしまうので取ってきたデータの生XMLを置いてあるとかいうお話です。

Unreal Engine 4 のレンダリングフロー総おさらい

BPでロジック組むの大好きだったのでレンダリングはからっきしでしたが、非常にわかりやすかったです。

毎日見直してレンダリングの流れを頭に入れておきたいレベルです。

細かいことは中身を見たほうがよっぽどいいですw

www.slideshare.net

「VR ZONE Project i Can」の知見、全部吐き出します!

これはEvernoteにメモったものがあるのでそれを

VRの宣伝は人の反応を見せるほうがインパクトがある

身長が10倍になると怖さは1/10

現実との比較がないと驚きが少ない

コントローラに機体をAttachするとずれない

被写界深度を浅くすると酔わなくなる…?

完全再現ではなく厳選再現でおけ

錯覚 クロスモーダル現象 認識とか判断を端折りたい →いつものパターンは端折る →騙される

得た経験とか知識によるリアリティの感じ方に差が出る

共感力の増加

  • 実際に経験豊富
  • 妄想
  • 楽しむ心 信じる心

減少

  • VR擦れ
  • 分析心

現実 実物は実在感が大事

物理法則のインタラクション大事 炎で熱いとか

複数の情報筋から得たいつものパターンつよい

映像 音 地響きのような複数インプットがあると信じる

VR

  • 旅に出る 体験して感動
  • 自分のからだ
  • 自ら行動→行動制限不能
  • 見回せる、歩ける
  • 強烈な体験そのもの
  • ゲームルールと面白さは別

ゲーム

  • 旅番組を見る 感情移入して感動
  • レバー ボタン
  • 意思を伝える
  • 作者の狙い通りに感動体験をした気分

面白い体験を発見すること

その場にいたら、本当に起こったら、を豊かに想像する力

アニメやゲームのシチュエーションはそもそもその場で体験したらすごい

百聞は一体験に如かず 開発者にも大事

リアル体験じゃないと得られない感動をコンテンツの中心におく

f:id:shop_0761:20160828125751j:plain

f:id:shop_0761:20160828125806j:plain

f:id:shop_0761:20160828125817j:plain

欧米で日本のゲームを成功させる方法 How to make Japanese games work in the West

同時通訳のせいで激辛セッションだった気がしますw

これもEvernoteのメモを

可愛らしい動物、アニメ的な簡単に描かれた顔、ファンタジー系、刀と銃の混在欧米ではない

欧米ではファンタジーは真剣に読んだりするものなのでアニメ的な絵などにすると子供向けに思われることも

アメリカ的にはシリアスなファンタジーのがよい

アメリカゲーマーは30-40代

アメリカとinterface(UI)が違う

アメリカではキャラになりきる、プレイヤーアバターのようなものが必要

PvPとPvEは混在させない

協力プレイがよい

アイテムを後から買うのはあまり受けない(ガチャとかガチャとかガチャとか

→時間をつぎ込むことで解禁できるように 他の手段でも獲得できるように

運によって差があると欧米ではマイナスな印象に(日本だとラッキーだねと割とプラスな印象に

探索可能、動機づけ(なぜ戦うのかなど)が大事

ポケモン的な感じが一番ウケがよく分かりやすい例(PvPとPvE、探索、ストーリーの動機付けなど)

f:id:shop_0761:20160828125835j:plain

f:id:shop_0761:20160828125846j:plain

f:id:shop_0761:20160828125857j:plain

まとめ

UE4のVRロードマップはだいたいリリースノートとかに書いてる感じだったので、資料を見ていただければいいかも。

下の2つは資料が公開されていないもののはずなので、なにか参考になればと。写真もちょっとあるので後で追記します。

ちなみにガチャは英語でGachaらしいです。

ネカフェで書いたので、帰ったあとに今回CEDECにかかった額の計算をしてみようかと思います。

(2016/08/28 追記 

計算しました。 およそ84000yenですね(やばい) 全部自費です。

簡単な内訳としては

  • 1daypass 2 expopass 1 33480
  • 飛行機 19300
  • Developer's Nightなどの懇親会費 12364
  • 宿代(ネカフェ) 3 6480

残りは交通費やらですね。

食費ゴリゴリ削る人なので、一人で飲食したのはジュース1本と帰ってきてから新千歳で買ったお菓子くらいです。

Developer's Nightは5000円の烏龍茶とオレンジジュースでした()

きっと普通に食べたら9万コースですねきっと。

)

全体を通して(懇親会もほぼフル参加では)、かなり行ってよかったなと思いますが

遠方+学校の支援なしな学生にはCEDECはコスト的な意味できついですね!!

内容の質を学生向けに下げる必要は全くないと思いますので、そんな学生向けのパス代にしてくれると助かります()

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

はじめに

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

僕が勝手に

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

気がつけばとんとん拍子で決まっていき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で解決したちょっとしたつまづきをまとめてみた(随時更新予定

はじめに

簡単な疑問とか、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ではなった)

2016/11/05 追記 これ Oculus系HMD専用コマンドなので、Viveでやるとダメっぽい

ForLoop→TimelineでTimeline終了時にLoopを回したい

色々ありましたが、たつのる(@tatsunoru)さんに教えて頂きました。

だそうです。ありがとうございます!

参考

違う場所(UnrealProjects以下でない)ところに保存したプロジェクトをもうLauncherに表示したくない

こんな感じのこと

でなんとか発見しました

どうやらここを参照しているようです。

なのでここを消したりすればいいんじゃないかと思います。

AppDataは隠しファイルなので、表示するようにしてから探しましょう。

参考

How do I delete projects? - UE4 AnswerHub

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

はじめに

ぷちコンで作ったもろもろ紹介編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を使った視点=照準のやつを作ってみた

はじめに

ぷちコンで作ったもろもろ紹介編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を使わずに銃の当たり判定を作ってみた【小ネタ】

はじめに

ぷちコンで作ったもろもろ紹介編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にしてます。

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

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