ゲームエフェクトデザイナーのブログ | A Real-Time VFX Artist's Blog

About Making Materials on UE, Making Tools with C#, etc

「Technical Art of STREET FIGHTER V」レポート

UNREAL FEST OSAKA 2016』に参加してきました!
非常に充実した講演内容でした。

講演の中から、資料等が公開されないっぽい(?)2つのセッションについてメモしたものを記事にしておきたいと思います。
まずはストVの講演から。

Technical Art of STREET FIGHTER V


講演者:亀井敏征さん
ゲーム業界16年 TA/ArtDirector

◆はじめに

TAとUE4はとても相性が良い
3年から4年いかないくらいの期間、業務で使っている
目標・イメージからゲームを開発する ‥がゲームに落とし込めないことがよくある
仕様が決定していなくてもやもやしていることが沢山ある
目標となるイメージ ⇒ もやもや ⇒ インゲームのイメージ
このもやもやを取り払うことができた

もやもやを取り除くのがTAの役割り
実現手法の提案 こういう技術がある シェーダーはこう組んだ方が良い
アセットのパイプラインの提案など 具体的に提示

UE4はTAだけで問題解決できたり実現手法の提示ができる TAと相性が良い


アジェンダ 3部構成

TAに興味あるアーティスト向け

1「目標」
 高い視認性
 個性的な絵作り

2「実現手段」
 キャラ
 背景
 カメラ
 ライティング
 ポストエフェクト

3「まとめ」

1「目標」


2つのキーワード

「高い視認性」
ハッキリしたシルエット 筋肉もりもり
大げさな表情 大笑い、すごく痛そう 意図的にやっている

「個性的な画作り」
速いゲームスピードの中でいかに情報を分かりやすくユーザーに与えるか
画面写真を見ただけで「あ、ストVの絵作りや」と思ってもらえるようにする
差別化 独自の絵作り


◆高い視認性

キャラクター ⇒ 状況をフィードバックするため記号として存在する
最速の攻撃 3/60フレームでもわかるシルエット ちょっとくらい大げさな方が良い
ゲームから状況のフィードバック ⇒ 脳みそで判断してコントローラーで入力 ⇒ ゲームに反映‥の繰り返し
格闘ゲームのビジュアルは数フレームでの攻防の分かりやすさ
高い視認性は格闘ゲームとしてはマスト 必須条件 非常に大事

◆個性的な絵作り

世界中のフォトリアルな絵作りのタイトルとは差別化する 埋もれないためのNPR
そこについて一瞬でチーム内で納得した
NPR選択の理由はもう一つ
タイトルの系譜 歴代のアート(あきまんさん西村キヌさんなど)を大事にする

 

2「UE4を使っての実現手法」


UE4の使用バージョンは4.7.6

◆キャラクター

キャラアートについて NPR 油彩+リッチなライティング
60fpsでも落とし込めるもの

ライトベクトルとポリゴン法線の内積 DotProduct 一般的な手法 ‥に一工夫
この一工夫で独自の絵作りになる
境界を分けて二値化する
UE4はディファードなのでライトベクトル使っていない
BP使って疑似的にライトベクトルを割り出してマテリアルで利用する方法
うまくいったが それぞれのライトからベクトルを出すと嘘だと分かってしまう
ライトプローブの要素も考えると破たんする
これはお蔵入りになった

結論:マテリアルでは複雑なことをしない

(以下は実際にUE4上で中国ステージを表示しながら解説)
switchパラメータで機能を切り替えているだけ
ノーマルもそのまま繋がっているだけ
アルファマスク、スペキュラもそのまま
フェードはキャラの点滅などに使う
いくつかカラーを設定できる キャラのカラーカスタマイズができるようにしている 4色 色の乗算で設定
カラーマスクテクスチャで領域を分けている
シンプル 何か特別なことはやっていない

NPRについて 絵画やイラストを見直してみて要素を切り出した
1 タッチ
2 エッジ・色境界の協調
3 色・彩度のコントロール

筆のタッチ
ノーマルマップへのタッチ追加
ライトの当たっているところ、当たっていないところにタッチが出にくい
でこぼこしているところにタッチが出やすい
実はスト4でもやっていた
ノーマルマップに対してPhotoshopのちりめんじわをかけていた
すると陰影にタッチが乗る
実は問題が1つある
スト4 ⇒ 5でテクスチャサイズが大きくなったことでフィルタが乗らなくなり解決が必要に
ノーマルマップをTangent SpaceからObject Spaceに一旦変換
するとグラデーションが出るのでフィルタがかかりやすくなる
その後さらにTangentに戻してUE4で確認
油彩や水彩フィルタはサードパーティ製「SnapArt4」を導入

豊富なフィルタと自由度 キャンペーン中だと安い 1万円以下
細かいものから粗いものまでいくつかのパターンを用意
それを体の部位によって使い分けている
 一番細かいのは顔だけ
 ちょっと粗いのは体
 さらに粗いのは服
 一番粗いのはアクセサリ系

合成ルールは絵的に見えるのを重視 イラスト 顔は密度が高く繊細
顔から離れるほど粗く描くことが多い 視線誘導している
リュウの顔や腕 見せたい場所が細かい
ノーマルもそうした 顔に視線誘導させるのも狙っている

◆背景(ステージ)

ドット絵時代の絵作りを参考にしている
一番分かりやすいのはストゼロの背景 奥行きがあるように見せるために色の管理をしていた
キャラはすごく明るい 彩度高い 背景は色を落として雰囲気重視 キャラが分かりやすい
(キャラと背景のヒストグラムを表示して解説)
背景は色のレンジが狭い 背景は真っ黒真っ白は全く使っていない
ドット時代は厳密にルール化されていた
副産物としてキャラの周りの彩度が落ちることで、対比でさらにキャラの彩度が上がって見える
ヒストグラム調整のためUE4のカラーグレーディングを改良
Multi Color Grading ON
OFFだとライティング的には正しいが数フレームを争う格闘ゲームでは視認性が低い
Lookup Table(LUT)
ステージの前後左右で4つのLUTを使い分けが可能
ステージ左右での屋内、屋外の違いにも対応可能
UE4でもその様子を紹介
マテリアルの紹介 近景用のLUTブレンドを3つまでブレンド
遠景用も3つまでブレンド それをさらにLerpでブレンド
実はSwitchでLUT3つ使うかどうか切り替えられる
ただしフルで使うと若干処理負荷が上がる
0.2msなどだが60fpsには大きいので背景ごとに使うか選べる

◆カメラ(画角)

キャラクターが画面端に立つと画角の影響で歪んで見える
そうすると見た目とコリジョンが一致せず分かりにくくなり、遊びで言えば迷い易くなる
画角に合わせてキャラの頂点を疑似的に画角と逆に補正を入れている
Fix Projection 最大限までかけると画角の影響が消える 0~1の範囲で指定
0は補正無し 1だと立体感が無くなる
立体感が完全に無くなると3Dのゲームでは勿体ない
結果、製品版では0.5でいこうとなった
立体感とコリジョンの分かりやすさの両立ができた
Fix Projectionマテリアルを設定したキャラだけに影響がある
キャラを真上から見ると四角が台形になるイメージ 並行投影みたいに見える
当初マテリアルファンクションでアーティストが模索
台形補正のみのマテリアルファンクション
当たりが見やすくなるというのが試してすぐ分かったのでプログラマに渡して実装してもらった

◆エッジの強調

RGBの差が大きいところに色を載せる「Edge Filter」
全く同じ絵で左右に任意のピクセルをズラしたものを二枚
Aは n pixelズラしてBは -n pixelズラしたもの
Bは-1乗算して反転 AとBを加算すると差分が取れる つまり輪郭検出ができる
左右にズラしたものだけでなく上下にズラしたものも用意 これをさらに加算する
出来上がった絵に対して任意のカラーを乗算(ここでは赤くした)
結果にOneMinusをかけて反転(緑になる)
それを元の絵(シーン)に対して減算することで赤いエッジが載る
「SS Subtract」
エッジ専用のマテリアル(実際にマテリアルの中を見せながら解説)
かなりシンプル 最後のDotProductは線をはっきりさせるためにかけている
最後にシーンバッファに対してsubtractで載せる
ぼかしを入れられるようにもなっている
色のにじみやかすれも表現できる
単に輪郭を取得したいだけでなくノーマルのタッチと合わせてさらに絵的な表現を目指す意味合いがある

◆ライティング

間接光 色彩豊かな絵的な表現になる イラストを例に
・背景ライト(Sky Light / Stati Light)
・キャラライト(Stationary Light)
 キャラの立体感を出す
 メインとフィル 胥吏が許せばバウンスとリムを入れる 基本的には2、3灯
・間接ライト(Indirect Lighting Cachr/Enlighten)
 自動で生成をそのまま利用 調整はすべてEnlightenで行っている

ライティングは非常に重要な要素になっている
絵的にかっこ良い、色鮮やかになるようライトを配置
ステージの場所場所でどうするかライティングアーティストとかなり密に連携して行った
リアルタイムGIのミドルウェア「Enlighten」の導入は成功
アーティストが思うままに意図的な色を関節光として当てたい‥
ただしその都度ライトビルドすることは極力さけたい
Enlightenでは「プリコンピュート」という機能を行っておけばある程度触り放題になる
Enlighten Onlyのチェックを入れることで確認できる
中国ステージはEnlighten Onlyで2灯使っている(実際に表示しながら解説)
間接光をその場で自由に変えつつチェックできる Enlightenの強み
プローブの表示も実演しつつ解説

3「まとめ」


UE4では思い描くビジュアルを実現するハードルは下がった
常識外れな使い方で「考えてなかったわ」とプログラマから言われるも実現できた
アーティストが無茶苦茶しても受け入れてもらえる アーティストにとっては良いこと
ウェブに情報が沢山あるのも良い 自社エンジンはぐぐっても何も出てこない
もやもやを取り払うのにとても良かった
UE4に改善して欲しいところも山のようにある このあたりはEpicさんに聞いてもらいたいと思う

質疑応答

Q:Fix Projectionは頂点の位置をズラすとコリジョンともズレると思うがそこはプログラマが良い感じに?
A:格闘ゲームは特殊でそもそもコリジョンとキャラモデルは結びついてない
 格闘ゲームのアタリは2Dで持つのでズレは問題にならない

Q:カラーグレーディングはどのレンダリングのタイミングで行われる?
A:マテリアルの設定はBefore Translucency
 LDRの時にやってしまうので調整が難しい
 そこはPhotoshopのアクションを組むことで最終結果に近くなるものを用意
 実機で確認してダメだったらPhotoshopで調整する

Q:BPかコードかの判断は?
A:FixProjectionはコードで実装
 判断理由としてはUE4がまだ若いバージョンの頃だったため
 マテリアルファンクションでやるとなぜか処理が重くなった
 そこでプログラマがコードで試しに組んでもらって採用に

Q:UE4を使ってネックになった部分は?
A:いっぱいあるが一つに絞れない
 言うなれば物理が弱い その辺はかなり試行錯誤した印象はある
 物理はスト4の方が綺麗
 骨のリミットが決められるがUE4はぶっとばす コリジョン置いているのにめり込む
 ディンプスさんの自社エンジンでは軽くて性能の良い物理エンジンだった

Q:エフェクトの液体表現はどんな工夫が?
A:流体計算したメッシュをMaya上で骨に入れて、Nullアニメーションに追従させている

 

ストVのエフェクトについては「CGWORLD 2016年 6月号」で特集されてます!必見です!

togetterでのまとめ。こなべさん毎回ありがとうございます!

UE4 Osaka Meetup! レポート

レポートというよりも議事録ですが。。

 

GDCアップデート情報 by ロブさん


まずはEpicJapanのロブ(Rob Gray)さんの自己紹介
日本のサポートチームは4人 主にライセンシーのサポートを行っている

今日はGDCのUE4に関する情報の発表について動画を交えながら紹介
GDC Sizzle Reel」の紹介

日本のタイトルもたくさんあって喜ばしい
UE4は150万ユーザー

「DevGrants(デヴグランツ)」70万ドル配って開発をサポートする試み

「VR Editor」VR内でゲームのエディットが可能

「Photoreal Live Chapture Performance」アクターの演技をリアルタイムで反映

「Sequencer」シネマティックカットシーンツール 4.11で利用可能 4.12で機能追加
 ビデオ編集のようなワークフロー ParagonのトレーラーはSequencerで作成された
 UE4大阪で詳しく解説予定
 MatineeはUE3のままあまり変わっていなかった

「Bullet Train」VRコンテンツ

NASA」トレーニングで活用 スペースシャトルとか UE4とVRの併用

TOYOTA」車のPRに 一週間でプロトタイプ
マクラーレン」頑張っても頑張っても買えない車 バーチャルで見るしかない

スターウォーズのテーマパーク」PRコンテンツ ディズニーとルーカスフィルム

 

UE4ディスカッション


司会:alweiさん
参加者:ロブさん おかずさん com04さん ずしさん とあるグラフィッカーさん

今回はディスカッション用のGoogleスプレッドシートが用意されました。
勉強会中に参加者が自由に記入することができ、それを議題に含めたりしていました。

これはガタケさん発案で自分のクローズドな勉強会でも行っている方法で、勉強会しながらみんなで議事録を取っていけたり感想を書けたりして非常に良いのでオススメです!

という訳で以下、ざっくりとした議事録です。発言者の敬称を略しています。
こうして記事に上げてみると非常に膨大なものになりました。
ロブさんの裏話も挟まれたりと、大変面白い内容でした。

 

■ 1.コミュニティについて

日本では「ぷちコン」が活発に行われている(alwei)

最初の開催から確か1年くらいしか経ってないと思うが、みんなすごく面白いものを作っているし、Epic内でもクオリティにびっくりしている(ロブ)
勉強会をよくやっているのもすごい

公式・非公式ともにUE4のイベントが増えてきた(おかず)

茄子さんの背景勉強会が最初の参加 勉強会の質も高い UE4の勉強会は東京に負けてない(ずしさん)
逆にHoudiniが情報が少なくて習得に苦労している
なかなかコミュニティがなくて、あるとないとで習得速度も10倍くらい違うのでは

情報を発信している人も多いが、その方々が次々と本を出している 発刊ペースも早くて驚く(とある)

アメリカはあまり本を出していない 本を出すのは日本の文化(ロブ)
それから日本はFacebookの「UE4ユーザー助け合い所」が活用されているが、公式のフォーラムが全然活用されていない
アメリカだとメーリングリストでサポートしていたりする
SQEXに在籍していた時はユーザー側の立場でUnreal Engineの文化を体験した
フォーラムではEpicのサポートチームよりも早く他社の人が回答していたり
開発者がシェーダーをアップしていたり、助け合いが行われている文化が良いなと思った

コミュニティは助け合い 学習やモチベーションの持続面で重要 継続してやっていきたい(alwei)


■ 2.VRについて

(まず最近のVRタイトルをまとめた動画を流して‥)
GDCではVRがメインと言っていいほどの印象だった(alwei)

ゲームだけではない 「OptiTrack」が印象的 バスケットボールにマーカー仕込んで投げたり(おかず)

ここのところではVR Editorが一番でかいトピックだった UnityやCryEngineも公開している
実際に試してみた レーザーハイドラというすでにあるトラッキングデバイスを利用
結構良かった
ゲーム空間でものを配置するのが新鮮で面白かった
VR Editor上でBPを変更してチェックしたりもできて良い
まずは企画やアーティストに使ってみて欲しい

メニュー系がまだ使いづらい(ロブ)
ものを配置したりはすごい自然だった ジェスチャーで拡大したりとか
宣伝になっちゃうが‥
VRで面白いのはまだまだ新しいから 何がうまくいくかは分かっていない
みんなで学んでいる最中
一年前のほとんどのコンテンツがゲロ吐きそうなものだった
実験的なプロジェクトが沢山ある
サマーレッスンとかBulletTrainとか ToyBoxは二人で遊ぶ
プロトタイプにUE4は強い メリット高いと思う

VR Editorでテキスト入力はどうするのか?(alwei)
ボイスでやる機能があるらしいがそれでやるのか?

どうするんだろうね?(ロブ)
バーチャルキーボードはだるい

Viveにもデフォルトでキーボードがある コントローラーからレイを飛ばすタイプとViveのタッチパッドのタイプと選択できるが後者は使いづらい(おかず)

値段が高いという意見があるがみなさんどうか?(alwei)
※挙手により高いというイメージの人は多い様子
興味あるという人は?
※多くの人が挙手していた
僕たちが頑張ってユーザーに遊びたいと思ってもらえるコンテンツを作らないと!

シミュレータとかの方が最初の実績になっていくのでは(ロブ)

まだまだ体験したことがない人が多いのでは(おかず)
今後イベントが増えて色んな人が体験してゆけると良いなと思う

今後競合のVR製品が淘汰されていくことに不安を抱える開発者もいると思う(ロブ)
でもUE4は製品間のフォローアップをエンジン側で行える コントローラーの差とかも吸収できる

GearVRの開発は?(alwei)

困る部分はほとんどなかった 普通のAndroid開発と変わらない(おかず)
チェックに実機がいるというのが面倒 Oculusと同じような感じで作れば移植はできる

自分も触ったりはしている 研究は常にやっている 学生に見せたり
今も何か作ろうかなと思っている(alwei)

開発をしていたりはする(com04)
SDKの差分を見ていかないといけないのがUE4が対応してくれていて楽
VRで表示するのが面倒とよく言われているがUE4はノード一個・ボタン一個でできる

4.11 NVIDIAの「VRWorks
【佐藤カフジのVR GAMING TODAY!】VRパフォーマンスを大幅に引き上げるGPU技術<br>NVIDIA「GameWorks VR」とは? - GAME Watch

二つの画面を同時にレンダリング 速くなるらしい(alwei)
インスタンスステレオレンダリング
エンジン側にはどんどん最適化が入っている 最適化されていくのは間違いない

SteamがUnityに渡した「Fixed Foveated Rendering」がUE4に欲しい(おかず)

「Bullet Train」のGDCのセッションが印象的だった(alwei)

映り込みを逆さにしたモデルを置いてフェイクでやっていたり(ロブ)
影をフェイクにしたりとか 古い技術を活用したトリッキーなことをしていたりしていて90fps出たりしていた
まだ英語情報しかないが、そのあたりを日本のみんなにシェアできるかも


■ 3.日本語環境について

日本では9割が日本語UI環境で使われているらしい(alwei)
気になる点はある カタカナの翻訳が雑に感じる 配列をアレイと書いていたり
みなさんはどうか?

翻訳者が何人かいて 他のスタッフを交えてミーティングしたり うちでも喧嘩になっていたり(ロブ)
他のソフト(MayaとかPhotoshopとか)を見たりするが、みんな表記がバラバラで難しい問題
使っている人がどんどんフィードバックしてくれるとやりやすい

今はTwitterかフォーラムしかないが、フィードバックしやすい環境が欲しい(alwei)

考えます!その通りだと思う 今井君と相談している(ロブ)

今はポップアップのヘルプの日本語化が進んでいてめちゃくちゃありがたい(ずし)
以前は英語だったが今はほぼ日本語で使っている
バージョンアップでコリジョンのプロパティがなくなっていたりして、そういうのは困った

不思議 なぜ起こるのか原因が分かっていない(ロブ)
トゥルーステップ(?) 翻訳者に伝えておく すごい苦労していると思う
エンジニア側の文言では分かりにくい場合がある 意見が欲しい
関数名を訳せないことがある すごく悩むところ
BPのリストが英語やカタカナが入り混じっているのがすごく気になる
プログラマが英語ベースなので日本語に訳すとコミュニケーション時に混乱したりする

マテリアルのコメントが日本語で入力できる場所とできない場所があるので修正して欲しい(とある)

ドキュメントの日本語化のスピードが速い(おかず)

現状では気付いた点はぜひフォーラムで報告してください(alwei)


■ 4.こんな機能が欲しい

フォーラムなどどこかにフォードバックしてくれると嬉しい(ロブ)
日本でみんなが欲しがる機能がある 例えばスケールアニメーション 日本や韓国で多い
沢山要望があれば本社にプッシュして入れてもらうことができる
アメリカだとあまり使われないので優先度が低かった
欲しいものがある場合はどんどん言ってください

セルルックとかNPRシェーダー かなりプッシュしているが採用されない(alwei)

キーコンフィグが欲しい 今月マーケットプレイスで出てきた(com04)
DirectInputに対応して欲しい ストVでも話題になった
列挙体にコメントが書けない Enumration 初期値だけ設定できて日本語書けない

グラデーションを作成するツールがマテリアルエディタにあると嬉しい(ずし)
いわゆるPhotoshopやグラフィックツールでよくあるグラデーションランプ

配列のソートが、できればC#みたいな感じで欲しい(おかず)
Print Stringsで文字を出す VRだと全く見えない
コンソールコマンドはVR対応されているが普通のPrintは画面左上に出る
なんとか左上を目で見るしかない

コンテンツブラザのアセットに内容説明コメントを付与できたら便利(とある)
これは何のマテリアルなのかとか、何のパーティクルなのかとか

BPならコメントを入れることができる(ロブ)

他には、サムネイルの画像を自由に指定できると嬉しい 特にマテリアル(とある)
歪み用など透明なマテリアルはサムネイルに何も表示されなかったりする

レベルを開かずにレベルBPをいじりたい 巨大なものを開くのにすごい時間かかる(会場の方)

サブレベルならできるが直接何もなしにいじるのはできないかも(おかず)

できなかったと思う(alwei)

モバイル用に出力すると結構ファイルサイズが大きいので小さくならないか?(会場の方)

iOSなら50MBになったりする(alwei)

50MB だと大きい‥(会場の方)

下げるための方法はある UDNに書かれているやり方がAnswerHubに転載されている(alwei)
100MB以下に抑える方法ならある

シェーダーコンパイルGPUでできないか? CPUの性能が低いので‥(会場の方)

CPUのコア数を増やすのが良い お金で解決が一番早いかも
GPUでのコンパイルは技術的には難しいと思う(alwei)


■ 5.映像業界での活用について

建築とか車とかNASAとかGDCでも色々な活用がされている(alwei)
最近はゲーム業界よりも映像業界で使いたいという声が多い
Sequencerが明らかに映像業界を意識している印象

UE4はアメリカだと映像によく使われている 増えている
静止画のために使うこともある プレビズで使ったりもしている(ロブ)
スタートレック」の映画で使われていたり 2~3年前? 本社でもプッシュしている
VRとかゲームとか映像が色々と重なってきている

日本では「デスノート」が唯一、映像での商業での採用例(alwei)
あとマーザさんが試験的に映像を作ったり、東映さんが使える人を募集していたり

「ヘンリー」Oculus ハリネズミのVR+映像作品 元ピクサーの人?(おかず)

パスごとにレンダリングができるようになった G-Bufferを全て出力したりできるのか?(ずし)

あまり触ってないのでそのあたりは分からない(ロブ)
良い感じの印象
UMGとか触っているならシーケンサーの機能が部分的に入っている
ブログでGDCのレポート シーケンサー紹介の動画があって見ると面白い
動画見た感じすごく使いやすい 映像の人たちのフィードバックが多い

4.11と4.12でGUIも機能もかなり進化した(alwei)
ビューポートを二分割して最終的なカメラと編集用のカメラを表示できるのがとても良い


■ 6.他エンジンとの比較について

GDC情報を見て思ったのはVR EditorをEpicが発表したらUnityとCryEngineの追随があったりが面白い(alwei)
今はUE4が先を行っているのではないかと思う
おかずさんがUnityに詳しいので色々話が聞けそう

どちらも物理ベースで中身もレンダリング手法もUE4と同じだとは思うが(おかず)
ノードベースのエフェクトツールが入ったりなどで強みがあるのでは
UE4を触り始めた時にはすごくとっつきやすかった
Unityもアセットストアで買えばUE4のような機能が使えたりする

UE4の学習はどうしたか?(alwei)

作品を作ってみるのが一番良い(おかず)
ぷちこんとか ゲームジャムとか 締め切り駆動型開発なら作品が完成するので

今は”三種の神器”(UE4の書籍)があるので読んでおいたら(おかず・ずし)

StingrayとCryEngine5を触りはした(com04)
CryEngineにはFlowGraphというものがあった
整数型のOutputがあるがその二つのエンジンには無かった
UE4のBPは良くできている 検索性も高い

Stingrayを触ってみたがBPと比べるとノードが出しにくい、繋ぎにくい(alwei)
同じノードベースでなぜこんなに違うのか
BPは使いやすい、検索しやすい、ノードを繋ぎやすい
今後まだまだ進化するのか?

常に改善しているので良くなっていくと思う(ロブ)
UE3のKismetも良かったが、今BPと比べるとすごく進化した
大きなチームでみんなで作業する面でもBPは適している

StingrayだとMaya上でStingrayと同じシェーダーが使えるプラグインがあるのが強み(com04)
つまりMaya上でStingrayと同じビジュアルにできる
Maya上でオブジェクトを設置して反映できる アーティスト的に強みなのでは

UE4を初めて触るとXYZの軸が違うのに戸惑う そこは統一されていって欲しい(とある)
Niagaraが登場した後にCascadeが残るのか、Niagaraがどこまでできるのかが気になる
BISHAMONと比べるとUE4では日本らしい複雑なエフェクトが作りにくい

Sequencerももっと早くリリースしたかったが中途半端な状態で出さないために今になった(ロブ)
Niagaraもそんな感じなので、もうしばらく待って欲しい
それから「Unity引越ガイド」もぜひ見てみてください
ZアップYアップ ニックに何でZアップなのか聞いたことがあるが、結構適当だったみたい
色々なところに影響が出るので直すのは難しい このままになると思う

Pivot Painterとか3dsmax向けのプラグインのサポートが多い(ずし)
Zアップもそうだけど、3dsmaxが使われていたのが理由?

海外は3dsmaxが多かった 今はEpicはMayaになってきている(ロブ)
「Fortnite」建物を作っていくシステムがある システムを作った人が3dsmaxユーザー
作った人が趣味で作ったような感じなのでMayaへの移植は難しいかも‥

そう言えばMayaに移植している人をフォーラム?で見かけた(ずし)

MayaのオートリギングツールのLT版が欲しい(alwei)


■ 7.UE4オススメ勉強法について

「BPが楽しそうだけど難しそう」ってよく言われるが、いつも言うのは「最初に簡単なことから始めるのがオススメ」(ロブ)
マテリアルを変えるとか そこからどんどん複雑にしていくのが勉強になる
テンプレート自体の中身を見たり キャラクターのBPを開いて見たり
日本語のチュートリアル動画もどんどん増やしたりしようとしている
時間がなかなか無いけど‥
日本語に訳して字幕を付けるとUE4を触りながら見るのは大変なのではと思うけどどう?

問題ない 情報があるだけで嬉しい(alwei)

バージョンが変わると過去に作った情報が使えなくなってしまう(ロブ)
エンドレスランナーシリーズの動画を作った時には人気もあったが、使えなくなってしまった
チュートリアルをバージョンアップに対応していくのは大変なので
ハンズオンのイベントも参加してもらえたらと思う

ハンズオンは今後もやっていくのでぜひ参加してください(alwei)

アーティストは絵が出るのが長いと心が折れる(ずし)
クオリティが高いものは画面に出た瞬間感動する Epicさんのサンプルが一番すごい
無限関数 マテリアル関数を開いても開いても関数が続く
サンプル読むのがテンション上がる

詳しい人に教えてもらうのが一番手っ取り早い サンプルを読む会をやったりすると良さそう(とある)

Twitterで終わる情報が多いのでハッシュタグをチェックすると良い #UE4Study(おかず)

Twichでライブノーディングされていたりして勉強にとても良い(ずし)

上級者向けの勉強法としては、フォーラムを見てひたすら解析するという方法がある(alwei)
英語を読む めちゃくちゃ高度なことをやっている 上級者向け


■ 8.会場からの質問

・3Dマウス対応されている?
 ⇒ 対応されていたような‥ 試してみてください

・アセット頼りなのでは
 ⇒ アセットが便利なのは間違いない Unityもアセットストアが強力

Json対応
 ⇒ 個人でプラグインを公開されていたような
 ⇒ どのレベルの話なのか BPで使用したいとか?

・マスコット対応は?(アンリアルツインズ)
 ⇒ 言えること言えないことが分からない 最近聞いたのはもうすぐ出るみたいな話
 ⇒ キムヒョンテさん原案の3Dモデルがリリースされる予定

メモリリークについて
 ⇒ ランチャーともども改善されてきた
   4.11で大分改善された GCガベージコレクション)周りとか

・マルチGPU対応の進展
 ⇒ VR SLIは4.11から入るはず 二つのGPUを使ってVRをレンダリングする

・PSVRは個人で開発したい場合は?
 ⇒ PLAYIZMさんに問い合わせしてみてください
   実績なしでいきなりは難しいと聞いている
   まずOculusで作って持っていくと良さそう 公式ではないので鵜呑みにしないで

・UE4を教育に使うとしたらどうなるのか?
 ⇒ 今学生向けに教えているが出来上がるもののクオリティが高いので
   学生のモチベーションが高くなっているのがとても良い
   ゲーム作りの楽しさを教えることができている 力を入れてやっている
   三つの学校で教えている UE4の出せるクオリティが高い
   実際に就職に繋がっているケースも出ている
   学校への導入については今井さんに相談すればすぐに飛んでいってくれる

Google Cardboardの対応は?
 ⇒ 動かすだけならいける
   CardboardSDKには対応していない iOSに対応していない
   ドリフトが厳しい SDKが無くて厳しい部分がある
   GoogleがUnity以外のエンジンに対応する気がない感じ

・AnswerHubはみんなどれくらい見ている?
 ⇒ 毎日見てる(alwei)
   「UE4AnswerHub新着質問bot」というTwitterアカウントがあるので利用してみては

・ランチャーのCPU使用率の改善は?
 ⇒ 今は改善されている

・Eyeシェーダーとかクロスシェーダーとヘアシェーダーの情報が欲しい
 ⇒ 多分今用意していると思う
 ⇒ GDCでParagonでの活用について色々と発表していたと思う
   何か配れるようなドキュメントがあるのではと思うので聞いてみる
 ⇒ サンプルもあるといいな 髪の毛生えたブルーマンとか

MELでらせんモデルのエッジをカーブにする

MELでらせんモデルを作成してエッジからカーブを作成する方法についてメモ。

まず、らせんモデルの作成は以下のように記述してみます。

//らせんモデルを作成(断面を三角形に設定しておく)
polyHelix -c 2 -h 10 -w 10 -r 0.5 -sa 3 -sco 64 -sc 0 -d 1 -ax 0 1 0 -rcp 0 -cuv 3 -ch 1;

//オブジェクト名を取得してモデルの底辺が0の高さになるよう移動
string $name[] = `ls -sl`;
for( $n in $name)
{
setAttr($n + ".translateY") 5;
}


結果はこのような感じ。

f:id:moko_03_25:20160130021905p:plain

次に頂点番号2と5を選択します。エッジを選択する前準備です。
(このために断面を三角形にしています)

f:id:moko_03_25:20160130021907p:plain

//エッジ編集モードにして頂点番号2と5を選択
hilite ($n) ;
select -r ($n + ".vtx[2]") ;
select -add ($n + ".vtx[5]") ;
}


結果はうまくいきました。

f:id:moko_03_25:20160130021906p:plain

最後は選択した頂点をエッジ選択に変換してエッジループ選択を実行、カーブへ変換。

ConvertSelectionToContainedEdges;
SelectEdgeLoopSp;
polyToCurve -form 0 -degree 3;


無事にできました。

f:id:moko_03_25:20160130021908p:plain

エッジ取るのにもっと良い方法が色々あるのだろうなと想像しますが。。
モデル単体を作成して移動するのにリストに代入してたりとか、モデルの高さの半分の移動値にするように組んでなかったりとかは宿題ということで‥。

ここから先は、元のらせんモデルにラティスを適用して変形するなり、カーブのインスタンスを複製してロフトするなり、カーブに沿って別のカーブを押し出すなりすれば良いと思います。

MELのウインドウ作成について

ウインドウ作成についての備忘録。

MELを始めて最初に作ったツールは以下のような感じにしました。

//グローバルプロシージャ「ツール名」を定義
global proc vfxModelingTool()
{

//同じウインドウがある場合削除します
if(`window -ex vfxModelingTool` == true )deleteUI vfxModelingTool;

//サイズ変更不可・最小化と最大化ボタンなしでウインドウを作成
window -sizeable false -mnb false -mxb false -title "ウインドウ名" vfxModelingTool;

//カラムを作成
columnLayout -adjustableColumn true;

//具体的にボタンを配置してコマンドを割り当ててヘルプを用意
frameLayout -label "フレームのタイトル" -labelAlign "top";;
 columnLayout;
 gridLayout -numberOfColumns 2 -cellWidth 100 -cellHeight 40;
 button -label "ボタン名" -command "命令○○" -ann "Help:\n ○○します\n";
 button -label "ボタン名" -command "命令○○" -ann "Help:\n ○○します\n";
 setParent ..;
setParent ..;
}

//ウインドウ「vfxModelingTool」を表示
showWindow vfxModelingTool;
}


ボタンに割り当てる命令がシンプルな場合はそのまま記述しますが、何行にも渡る場合にはプロシージャを定義して関数化しました。大まかな構成はこちらの記事に書いてます。
単にシンプルな命令を2つ続けて書きたい時は「;(セミコロン)」で区切ればOKです。

ヘルプを書いておくとマニュアルの用意が省けて良いかも。
ボタンにカーソルを乗せて少し経つとポップアップ表示されます。

MELを配布する時のプロシージャについて

MELを自分以外の人に配る時に行っておくと良いことの備忘録。

ウインドウを作成して各ボタンに色々と機能を割り当てたMELを作ったとします。
その際にプロシージャとウインドウ作成の構成を以下のようにしました。

グローバルプロシージャAを定義
 命令を色々記述

グローバルプロシージャBを定義
 命令を色々記述

グローバルプロシージャCを定義
 命令を色々記述

グローバルプロシージャD(MEL名と同じもの)を定義
 すでに同じウインドウ名 のウインドウがある場合に削除する
 ウインドウをウインドウ名付きで作成する
 カラム(columnLayout)を作成する
  ボタン1で命令”A”を実行
  ボタン2で命令”B”を実行
  ボタン3で命令"C"を実行
 ウインドウを表示

Dを実行


そしてウインドウ作成のグローバルプロシージャ名とMELの名前を同じにします。
columnLayoutを利用してるのは単に手始めに触るのに気に入ったタイプだからです。
具体的にどんな記述かはこちらの記事に書いています。

MELを配布したら、マイドキュメントのMayaのスクリプトフォルダに放り込んでもらいます。
そしてMayaを起動したらスクリプトエディタにMEL名(=グローバルプロシージャ名)をコピペしてもらい、そのままシェルフに登録してもらったらOKです。

MELスクリプトのある場所を参照する

MELスクリプトと同じ場所にあるファイルを参照したい場合の備忘録。
ちょっと手こずったので記事にしておきます。

例えばMELスクリプトと同じ場所にあるテクスチャをマテリアルで指定したい時に、テクスチャ名だけで指定するとプロジェクト/sourceimage直下を参照してしまいます。

しかしスクリプトフォルダはマイドキュメント以下にあるのでユーザーによってパスが変わってしまいます(Users/Document/ユーザー名/maya‥という感じ)。

そんな時には「MAYA_SCRIPT_PATH」を使うと良いようです。

下記の例は前回の記事「MELでシェーダーを作成 2」の一部になります。

//スクリプトフォルダのパスを取得して変数「vfxTexPath」に代入
$vfxTexPass= `getenv MAYA_SCRIPT_PATH`;

//スクリプトフォルダ直下のテクスチャ「sampleTex.png」を設定
setAttr -type "string" VFXfile.fileTextureName ($vfxTexPath + "/sampleTex.png");


これでうまくいきました。

他にもっと良い方法があればコメント頂けると嬉しいですっ。

MELでシェーダー作成 2

前回の続き。

MayaのMELで汎用マテリアルを1クリックで作成したい時の備忘録。
まずはLambertシェーダーを作成して、予め用意してあるテクスチャを適用する内容。

//ネームスペース"VFX"がすでにある場合はメッセージのみ表示
if(true == `namespace -exists "VFX"`)
{
print "ネームスペースVFXはすでにあります";
}
else
{
//サンプルテクスチャシェーダを作成して"sampleTex.png"を割り当てる
shadingNode -asShader lambert -name VFXlambert;
sets -renderable true -noSurfaceShader true -empty -name VFXlambertSG;
connectAttr -f VFXlambert.outColor VFXlambertSG.surfaceShader;

//スクリプトフォルダ内の「sampleTex.png」をテクスチャとして適用
shadingNode -asTexture file -name VFXfile;
$vfxTexPath= `getenv MAYA_SCRIPT_PATH`;
setAttr -type "string" VFXfile.fileTextureName ($vfxTexPath + "/sampleTex.png");

//テクスチャフィルタリングを「オフ」にする
setAttr "VFXfile.filterType" 0;

//必要なノードを繋げる
shadingNode -asUtility place2dTexture -name VFXplace2dTexture;
connectAttr -f VFXplace2dTexture.coverage VFXfile.coverage;
connectAttr -f VFXplace2dTexture.translateFrame VFXfile.translateFrame;
connectAttr -f VFXplace2dTexture.rotateFrame VFXfile.rotateFrame;
connectAttr -f VFXplace2dTexture.mirrorU VFXfile.mirrorU;
connectAttr -f VFXplace2dTexture.mirrorV VFXfile.mirrorV;
connectAttr -f VFXplace2dTexture.stagger VFXfile.stagger;
connectAttr -f VFXplace2dTexture.wrapU VFXfile.wrapU;
connectAttr -f VFXplace2dTexture.wrapV VFXfile.wrapV;
connectAttr -f VFXplace2dTexture.repeatUV VFXfile.repeatUV;
connectAttr -f VFXplace2dTexture.offset VFXfile.offset;
connectAttr -f VFXplace2dTexture.rotateUV VFXfile.rotateUV;
connectAttr -f VFXplace2dTexture.noiseUV VFXfile.noiseUV;
connectAttr -f VFXplace2dTexture.vertexUvOne VFXfile.vertexUvOne;
connectAttr -f VFXplace2dTexture.vertexUvTwo VFXfile.vertexUvTwo;
connectAttr -f VFXplace2dTexture.vertexUvThree VFXfile.vertexUvThree;
connectAttr -f VFXplace2dTexture.vertexCameraOne VFXfile.vertexCameraOne;
connectAttr VFXplace2dTexture.outUV VFXfile.uv;
connectAttr VFXplace2dTexture.outUvFilterSize VFXfile.uvFilterSize;
defaultNavigation -force true -connectToExisting -source VFXfile -destination VFXlambert.color; window -e -vis false 
createRenderNodeWindow;
connectAttr -force VFXfile.outColor VFXlambert.color;
}


 次に選択中のモデルに上記マテリアルを割り当てる内容。

//サンプルテクスチャシェーダーを割り当てる
sets -e -forceElement VFXlambertSG;
//ディスプレイをテクスチャシェーディングに変更
DisplayShadedAndTextured;


この2つの記述それぞれにプロシージャ名を定義してボタンに割り当てればOKです。
ウインドウ作成とプロシージャの構成をどんな風にしているかはこちらの記事に書いています。
一応Maya2014と2016で動作を確認しました。

ただ‥テクスチャフィルタリングを「オフ」にする部分が自分の環境では動作しましたが、他人の環境では「オフ」に設定されるのにテクスチャがボケたままという状況になりました。
なぜなのかご存じの方いらっしゃいましたら教えてください。。

ちなみにこのMELで使用しているテクスチャはMELと同じ場所に放り込んでおきます。
そしてMELと同じフォルダ内のテクスチャを参照する記述についてはこちらで補足しています。

当方、MEL歴は累計5日ほどなので間違いも多数あるかと思いますが、ツッコミ所がありましたらコメントなどで教えて頂けると嬉しいです。

ヘッドホン買い替え

長年愛用していたSONYのヘッドホン「MDR-Z300」がぼろぼろになってきていたのでようやく買い替えました。4000円ほどだったか‥記憶があやふやですが、低価格な割に音も悪くなく、軽さとフィット感も申し分無かったので大変お世話になってました。

今回購入したのも軽くてフィット感が良いものをと思って探していたのですが、装着した時に丁度良かったのでこちらに決めました。audio-technicaの「EARSUIT ATH-ES500」です。

ブルートゥースのワイヤレスヘッドホンばかりが並んでましたが、ボタンが色々付いていてごちゃごちゃして感じたので旧来のものにしました。おっさん思考になってしまってるのかしら。

ZBrushのワークショップに参加してきました

この土日はZBrushの初心者向けワークショップに参加してきました。

講師はPuniNUKO先生。

《内容》
1.球体からこねこねして顔の作成(ダイナメッシュ)
2.Zsphereでベースメッシュ(素体ポリゴンモデル)の作成
3.サブディビジョンの意味
4.ポーズ
5.体のスカルプト
6.その他、最低限の基本機能
おまけで若干インターフェースのカスタマイズとリファレンス画像の貼り付け方とカメラの使い方など

《スケジュール》
1日目 12:00~17:00
2日目 10:00~17:00

‥という感じでした。
教材用にプリントアウトされたテキストも頂きました。

モチーフは実在の人物が良いということだったので、彫が深くて作り易そうな外人さんでプロポーションが良い人にしようと思いMiranda Kerrに。
形状を認識しづらくて難しい。テクスチャを貼りたくなってくる。

f:id:moko_03_25:20151220203313j:plain

胴体は気持ち良くスカルプトしたくてややがっしりタイプの人を参考に作っていたのでMirandaご本人とは似ても似つかない感じになりました。。
↓ Shift + S でスクリンショットをZBrush上でそのまま背景にすることができるの便利!

f:id:moko_03_25:20151220203314j:plain

楽しくて時間泥棒ですね‥。
一応ラフにポーズも付けてみましたがこちらはとりあえずやったという感じです。

Mayaとの連携や手の作り方、ポリペイントなど広く説明が及んでおり、2日間の中でかなり盛り沢山の内容となっていました。また、榊馨さんのブログ「SAKAKI Workshop」からdownload可能なブラシと榊さんのスカルプトのタイムラプス動画の紹介や、実際におすすめのブラシを使っての説明もありました。

また来年に中級編の開催も考えているとのことなので、次回も参加しますっ。
(初級編もさらに何度かやるそうですよ)

PuniNUKO先生とHiROさん、参加されたみなさま、おつかれさまでした!

帰宅後に評価版入れてちょっといじってみました。

f:id:moko_03_25:20151220234429j:plain

Spotlights機能を使ってポリペイントすれば写真を貼り付けて確認しながら形状を修正できますね!

f:id:moko_03_25:20151222021757j:plain

Billowy Smokeを使った煙のチュートリアル(後半)

■Introduction to Houdini - PyroFX for FumeFX Artists

前半に引き続いて後半。

 

手順についてのメモ(後半)


23:50
pyrosolver1ノード上で中ボタンを押して情報を表示
Containsの項目は40個のオペレーターを内包していることを表している
※Houdini15では表示は密度と温度の2つのみ

ボクセルサイズがpyroノードの設定と違うのはresize_containerでリサイズしているから
※Houdini15ではresize_containerノードが繋がっているままでも内容に違いが出ず

25:55
pyrosolver1ノードのTimescaleの項目
※値を大きくするとシミュレーション結果の再生速度が速くなり、小さくすると遅くなる
Temperature Diffusion(テンパーチャー ディフュージョン/温度の拡散)の項目
Cooling Rate(冷却速度)の項目 温度がどれくらいで冷めるか
Viscosityビスコーシティ/粘度)の項目
Buoyancy Lift(ボーヤンシー/浮力)の項目
Buoyancy Dir(浮力が作用する方向)の項目
※+と-両方向へ作用させることは可能?

28:00
Combustion(コンバッション/燃焼)タブ
Enable Combusionで燃焼を有効にする

Shape(形状)タブ
Dissipation(霧散?)
※低い値(0.1)を入れて他の項目をOFFにすると拡散せず先端がダマになったまま立ち昇り、高い値(0.75)を入れると早めに拡散して尖った形状になる
Disturbance(ディスターバンス/妨害/騒乱)
大きな塊の中でさらに小さく乱流させて形を崩してくれる
Turbulence(乱流)

Windows標準の「Snipping Tool」を使ってスナップショットを撮って比較
Turbulenceのみ有効の時とさらにDisturbance(0.5)を有効にした時
「見た目で分からないかも知れないが僕を信じろ」

32:55
Disturbanceタブ>Block Size
外のシェイプを崩してくれる

Disturbanceタブ>Field to Disturb
Velocityでは加速度に対して、Temperatureでは温度に対して乱流させる

小さいディティールはDisturbanceで加えられる

34:50
Sharpening
形状がシャープになりふんわりしたところは消える
タバコの煙はシャープにしないとそれっぽくならない
爆発の時もシャープにするために使う

Shredding(シュレッディング/破砕)
炎の時に使うので今は説明しない

Confinement(コンファインメント/閉じ込める)
回転をブーストする 巻き具合の計算を強くする
あまり強くすると計算が遅くなるので気をつける
マイナスの値を入れると計算が速くなる

36:20
エディタ左下の本のアイコンを右クリック、Flipbook with New Settings...を選択
Render Flipbookダイアログが表示される
エクスプレッションでスタートフレームとエンドフレームを指定するよう入力されている

タイムスライダ右端のアイコンをクリック、Global Animation Optionsが表示される
Endフレームを100に短く変更してApplyを押して閉じる
Render FlipbookダイアログでAcceptを押すとシミュレーション開始と同時に録画され、MPlay Flipbookウインドウが開いて確認ができる

ガンマを調整
※色調整の項目はプレビュー画面上で右クリック>Color CorrectionをONで表示される
※File>Export>Video for Windows 64bitでAviを選択して動画を出力可能
 背景が透過された状態で出力できる

38:45
pyrosolver1ノードのパラメータのAdvancedタブでUse OpenCLにチェック

sidefx.jp | Houdini 15 システム環境

以下、上記サイトより引用。

グラフィックカード
OpenGL ハードウエアアクセラレーションは、最適なパフォーマンスを得るのに必須です。
Houdiniでは Direct3D のサポートは不要です (ビューポートとインターフェイスは全て OpenGL を使用)。

 

GPU による高速化と OpenCL
Houdini は、いくつかのグラフィックカード上で GPU を使用して Pyro FX および流体シミュレーションの劇的なパフオーマンスとスピード向上を図ることができます。
この性能を利用する為には、OpenCL に対応した GPU が必要です。Nvidiaでは、Tesla や Quadro x000 シリーズ (FX シリーズではなく Quadro; 600, 2000, 4000, 5000, 6000) や GeForce 400 又は 500 シリーズ。
AMD では、FirePro カード (FireGLではない) や Radeon 5000, 6000 及び 7000 シリーズの GPU 搭載型が必要です。Intel のグラフィックスは、現在 OpenCL に対応していませんが 、CPU ベースの CL ライブラリを所有しており、将来 Houdini と動作するようになるかもしれません。


オブジェクトレベルに戻ってpyro_simノードでReset Simulationをクリック

AMD Radeon R9 200 がおすすめ
マシン環境は速いものにした方が良い
全部のノードでOpenCLを使ってる訳ではなく使うべきところで使っている

42:00
レンダリングするためにはカメラを作る必要がある
ライトを作成した時と同様にCtrlを押しながらシェルフのCameraを選択
今のビューポートの視点に合わせてカメラを作成する
※そのままCam1の視点の状態でカメラの設定を調整すると良い

パラメータエディタのViewタブ>Focal Length焦点距離)とAperture(焦点から枠までの距離)を設定
※Apertureの項目にカーソルを載せてF1を押すとヘルプが表示され、Focal LengthとApertureの関係図が確認できます

Near Clippingを0にしてニアクリップを無くす
Enable Background Imageのチェックを外して背景を無くす
Resolutionで出力解像度を決める

ライトと同様にRockしてカメラを動かしてアングルを決める
レンダービューでカメラを指定

43:00
各ウインドウのタブ上で右クリックするとタブの内容を他のものに切り替えられる
シーンビュー上部のタブからRender Viewを表示
カメラはcam1を選択
レンダラーの設定がまだ無いのでレンダラーを選ぶ項目はグレーアウトされている
※Renderボタンでレンダリングすると標準のレンダラーであるMantraのノードが自動的に作成される

ネットワークエディタ上部のパス上を左クリックしてchに切り替え
Channel Operatorはアニメーション関連のグループでAnimation Editorで編集が可能

imgのネットワークではレンダリングしたものを表示する

ネットワークをoutに切り替えてTabメニューでMantraを作成
outのネットワーク上でレンダラーを作る
Mantraノードを選択してパラメータエディタのCameraでcam1が選択されているのを確認
obj表示に戻してcam1の名前を変えるとMantraでの指定にもちゃんと反映されている

45:15
Render Viewを表示すると先程グレーアウトされていた項目にMantraノードのパスが指定されている
Renderボタンでレンダリングを実行
Previewにチェックを入れているとレンダリング経過が粗い状態から表示される

MantraノードのRenderingタブ>SamplingPixel Samplesでサンプル数を上げると再度レンダリングされて先程より精細になる

Render View下部のカメラアイコンでスナップショットを撮ってレンダリング結果を見比べられる

ローレゾでハイレゾっぽく作る方法もあるけどそれも上級者向けになる


以上で終了です。