作成者別アーカイブ: child

【UE4】マテリアル小ネタ集(映像向け)

ハッピーハロウィン!!!

Geek Women Japan Advent Calendar 2017 24日目です。

(今日は26日だけど)

 

今回は映像案件でよく使っていたUE4のマテリアルネタです。

(前回記事の言質とは何だったのか)

通常のカラーテクスチャだけではできないようなちょっとした小技をご紹介。

 

注意

・これはわたしの独断と偏見による記事です。

・UE4.12くらいの頃に使っていたのが大半です。最新の4.18の動作確認してません。

・映像案件で使っていたので、処理負荷とかは不明…

 

 

TextureCoordinateをパラメーター制御

・テクスチャをタイリングしたいときなど。よく使う。

Reflectionマップをはっちゃう

・いつ使ったか忘れた…多分ReflectionProbe代わりにした気がする。

 

ワールド座標で色塗り

・「ビルの窓の上側を青くグラデーションして!」って急に言われたときに使った。

・UV空間ではなくワールド座標で指定できるのでちょっと便利。

・某VR音ゲーでも使われていた気がする。

 

TextureのMipmapをパラメータで制御

・ミップマップレベルをこちらで制御しなきゃいけない特殊なときに使った。

・テクスチャをアルファで抜いているとどうしてもアンチがきついので、ミップマップレベルをコントロールすれば多少は改善する。かも。

 

カメラとオブジェクトとの距離で遠くにあるオブジェクトを暗く落とす

※画像はUnityのAmplifyShaderEditor

・暗いシーンでAOにさして使った。

 

カメラからの距離でフェードしていく

・カメラとオブジェクトの距離をとってオパシティの値を変更する。

・これもテクスチャをアルファで抜いているときにアンチが辛かったので、これで馴染ませる。

 

ワールド座標でテクスチャのタイリングをコントロールする

ヒストリア式UE4を使用した建築リアルタイムデモセミナーで知りました。

・壁に壁紙のテクスチャを貼るのに、あらかじめUVでスケールと位置を合わせておかなくてもマテリアル側で一致させられるので便利。

 

以上!

もっといいやり方があれば是非ともご指摘ください。

それではみなさま良いお年を!

Pocket
[`evernote` not found]

【UE4】SubstanceSourceでお手軽マテリアル!

Unreal Engine 4 (UE4) その2 Advent Calendar 2017 2日目です。

こんにちは。進捗どうですか。

先日ブラックフライデーでプライベート用のSubstanceサブスクリプションを購入し、
SubstanceSource良いな~と思ったので記事にします。

(本当はライティングしたかったんですが間に合わなかった!!)

 

SubstanceSourceについて

SubstanceSourceは、SubstancePainter,Designerでお馴染みのAllegorithmic社が提供するPBRマテリアルライブラリです。

マテリアル・テクスチャライブラリといえば、他にもCGtextures,Poliigon,GameTexturesなどがありますが、

SubstanceSourceの第一の特徴は、素材の豊富さだと思います。

SubstanceSourceは、2017年12月1日現在、1085個のマテリアルが公開されています。

 

 

 

 

 

とにかく素材が豊富、そして質が良いのでついついダウンロードして試してみたくなっちゃいます。

先日のSubstanceUpdateセミナーで「2018年以降、もっと素材数を増やします!」と中の人がおっしゃっていたのでとても楽しみです。

ちなみに、サブスクリプション会員は毎月30ポイント付与され、1マテリアル1ポイントでダウンロードできます。

 

ブラウザからマテリアルをダウンロードすれば、Painter,Designerで使用できますが、

プラグインを使えば、プロジェクトに直接ダウンロードもできます。

 

UE4にインポート

プラグインから使いたいマテリアルをダウンロードすると、

マテリアルで使われているテクスチャ2Dと、それらの調整ができるパラメータ、マテリアルがコンテンツブラウザにインポートされます。

インポートされるアセット

インポートされるテクスチャの種類は、

・BaseColor

・Metalic

・Roughness

・Specular

・Normal

・Ambient Occlusion

の、6種類です。(でもマテリアル内ではSpecular刺さってない)

基本的に使うテクスチャはこれだけで揃えることができます。

 

 

しかもシームレス。かなり使い勝手が良いと思います。

 

パラメータで調整できること

テクスチャ・マテリアルと一緒にインポートされるパラメータですが、

これがすごいんです。

パラメータの詳細

調整できる項目がたくさんありますが、色味、Normalの強さ、パターンなどを調整することができます。

 

こちらの4種類の椅子は、2種類のマテリアルからできています。

Substanceのパラメータをいじってやれば、色味や模様を変えて量産できます。

便利だなぁ

 

こちらのシーンの床に、インポートしたマテリアルをそのままアサインしました。

※UE4Archのプロジェクトデータを使用

 

床の色を自在に変更したり、

 

フローリングのパターンを変更することもできます!

 

便利……!

 

結論

Substanceは人権。

SubstanceSourceは多分Unityにもプラグインがあったはず。

一度ダウンロードすれば、何回でも再ダウンロードできますし、

他のゲームエンジン、レンダラーでも使用可能です。

マテリアル作成が楽しくなること間違いなしなので、みんなでSubstanceに納税しよう!

 

次回予告

突然ですが、今所属している会社の建築チームの作品、めっちゃかっこいいんです。

https://www.behance.net/gallery/57091915/Loft-room(高解像度版)

Vrayを使った作品です。

おしゃん……!

このビジュアルをリアルタイムで再現したい!

 

というわけで、こちらのモデルデータをお借りしまして、

次回参加予定の Geek Women Japan Advent Calendar 2017 で、

このモデルを使ってUE4でVR化する記事を書きます!次こそは!絶対!みなさんと約束だ!

(言質)

 

それではみなさまよい週末を~

Pocket
[`evernote` not found]

【MEL】UVsetを指定してコピーする

UVのコピー元・コピー先を指定してUVをコピーするMEL。

0番目のUVで作業してたはずがいつのまにか意図しないUVsetで作業してることがよくあって、

いちいちぽちぽち直すのがめんどくさかったので作りました…

知らぬ間に身に覚えのないUV増えてたりするのほんとよくわからない…

 

BaseUVにコピー元のUV番号、TargetUVにコピー先のUV番号を入力する。

 

 

 

 

↑これだと、0番目のUVを1番目のUVにコピーします。

 

※使用は自己責任で…

 

////////GUI////////

global proc UVcopyGUI(){

    if(`window -exists UVcopyGUI`)
    deleteUI UVcopyGUI;

    window UVcopyGUI;
    deleteUI -window UVcopyGUI;
    windowPref -remove UVcopyGUI;

    string $window = `window -title "UVcopy" UVcopyGUI `;
    columnLayout -adjustableColumn true;

    //コピー元のUV番号を入力させる
    text -label "BaseUV" -align "center";
    textField -text "0" -w 60 TEXT_FIELD1;

    //コピー先のUV番号を入力させる
    text -label "TargetUV" -align "center";
    textField -text "1" -w 60 TEXT_FIELD2;

    separator -h 10 -w 300;

    //実行ボタン
    button -command "UVcopy()" -h 25 -label "COPY !!";

    separator -h 10 -w 300;
    setParent ..;

    showWindow $window;

}

UVcopyGUI();

////////UVcopy////////

global proc UVcopy(){

    SelectHierarchy;
    string $Sel[] = `ls -sl -type "mesh"`;

    for ($i = 0; $i < (`size $Sel`); $i++)

        {
    
            int $BaseUV = `textField -q -text TEXT_FIELD1`;
            int $TargetUV = `textField -q -text TEXT_FIELD2`;

            string $UV_List[] = `polyUVSet -q -allUVSets $Sel[$i]`; //UVをリスト化

            string $BaseUVSet = $UV_List[$BaseUV];

            polyUVSet -currentUVSet -uvSet "$BaseUVSet"; //BaseUVをCurrentUVにset

            string $TargetUVSet = $UV_List[$TargetUV];

            polyCopyUV -uvSetNameInput $BaseUVSet -uvSetName $TargetUVSet -ch 1 $Sel[$i]; //BaseUVをTargetUVにcopy

        }

};
Pocket
[`evernote` not found]

【MEL】DoubleSidedをオフにする

Unity・UE4に持っていって初めて「ウワッこのモデル片面しかないやん!!」って気づくことが多々あります。

こうした面倒をなるべく防ぐために、MayaのRenderStatsであらかじめ両面表示をオフにしています。

 

以下自分用める

////////////////////////////////////////////

global proc DoubleSideOff(){

SelectHierarchy;

string $obj[] = `ls -sl -type “mesh”`;

for ($objSel in $obj)

{

setAttr ($objSel+”.doubleSided”) 0 ;

}

}

DoubleSideOff();

 

////////////////////////////////////////////

 

MayaLT、コンポーネントエディタとリファレンスエディタくらいは標準で搭載してほしいですね、、

 

Pocket
[`evernote` not found]

【MEL】選択したオブジェクトに新規UVを追加し自動UV展開

 

選択したオブジェクトに新規にUVを追加し、AutoでUV展開するMEL!

ライトマップ用のUVをちゃちゃっと作ります。

オブジェクト一括選択してからMEL実行です。

使用は自己責任でお願いします…!!

////////////////////////////////////////////////////////////////////////

 

//選択したオブジェクトに”LightMapUV”というUVを追加してAutoMapping

global proc CreateLightMap(){

SelectHierarchy;

string $obj[] = `ls -sl -type “mesh”`;

$NewUVSetName = “lightMapUV”;

for ($i = 0; $i < (`size $obj`); $i++){

string $currentUVSets[] = `polyUVSet -q -currentUVSet`;

polyCopyUV -uvSetNameInput $currentUVSets[$i] -uvSetName $NewUVSetName -createNewMap 1 -ch 1 $obj[$i];

polyAutoProjection -lm 1 -pb 0 -ibd 1 -cm 0 -l 2 -sc 1 -o 1 -p 6 -ps 0.8 -ws 0 $obj[$i];

}

}

CreateLightMap();

 

////////////////////////////////////////////////////////////////////////

 

似たようなMELばっかり更新してますね…。

 

Pocket
[`evernote` not found]

【MEL】選択したオブジェクトのUVを一括で展開する

MELネタ。

ライトマップ用にざっくりとUV用意したかったので作りました。

Mayaのアウトライナでオブジェクトをまとめて選択して、実行。

数行のMELですが前の会社の先輩に教えてもらいながら作りました…感謝。

 


global proc AutoMapping()

{

SelectHierarchy;

string $obj[] = `ls -sl -type “mesh”`;

for ($i = 0; $i < (`size $obj`); $i++)

{

polyAutoProjection $obj[$i];;

}

}

AutoMapping();


 

Pocket
[`evernote` not found]

【MEL】1番目のUVを2番目のUVにまとめてコピーする

 

1番目のUVを2番目のUVにまとめてコピーするMEL。

UVをコピーしたいオブジェクトを選択して実行。

※使用は自己責任でお願いいたします

 

////////////////////////////////////

global proc UVcopy(){

string $Sel[] = `ls -sl `;

for ($i = 0; $i < (`size $Sel`); $i++)

{

string $UV_List[] = `polyUVSet -q -allUVSets $Sel[$i]`; //UVをリスト化

string $PriUVSet = $UV_List[0];

polyUVSet -currentUVSet -uvSet “$PriUVSet”; //0番目のUVをCurrentUVにset

string $LastUVSet = $UV_List[1];

polyCopyUV -uvSetNameInput $PriUVSet -uvSetName $LastUVSet -ch 1 $Sel[$i]; //0番目のUVを1番目のUVにcopy

}

}

UVcopy();

////////////////////////////////////

 

 

MELは楽しいなあ(棒読み)

 

 

 

ちなみに、

ライトマップ用に新規のUVを作って、1番目のUVを複製したいときはこっち。

スタティックメッシュをアンリアルにインポートするときなどに。

拾い物です。

 

////////////////////////////////////

string $Sel[] = `ls -sl -fl -l`;

$NewUVSetName = “lightMapUV”;

for ($i = 0; $i < (`size $Sel`); $i++)

{

string $currentUVSets[] = `polyUVSet -q -currentUVSet`;

polyCopyUV -uvSetNameInput $currentUVSets[$i] -uvSetName $NewUVSetName -createNewMap 1 -ch 1 $Sel[$i];

}

////////////////////////////////////

Pocket
[`evernote` not found]

【UE4】ライティングビルドを分散する方法

こんにちは。
久々の更新です。

今回は、UE4のライティングビルドを複数台のマシンに分散する方法です。

UE4のライティングビルドはかなり時間がかかり、やり直しがし辛いのが難点ですよね。

これを複数台のマシンに分散すれば、その分だけ計算が早くなります。

 

 

ライティングビルドを分散する方法

分散できるマシンの条件

1.マシン同士がネットワークでつながっている

2.UE4(SwarmAgent)がインストールされている

この2点だけです。

レンダーサーバーや帰宅後マシンでゴリゴリライティングしてクオリティアップを図りましょう!

 SwarmAgentについて

分散するための設定は、アンリアルではなく、ライティングビルドしたときに起動するSwarmAgentでおこないます。

ライティングビルドするとこっそりとタスクバーに起動していますので、ダブルクリックで開きます。

もしくは、インストールフォルダの”Engine\Binaries\DotNET”内にあるSwarmAgent.exeを起動します。

 

Settingsを開いて、下記の画像を参考に設定を変更します。

swarmAgentの設定項目

swarmAgentの設定項目

 SwarmAgentの設定

AgentGroupNameとAllowedRemoteAgentGroupを同じ名前にする。

例)AllowedRemoteAgentGroup を Defaultに変更。

 

AllowedRemoteAgentNamesに分散させたいマシン名前を入力する。

PC-01に投げたいときは、PC-01と入力する。

PC-01とPC-02に投げたいときは、PC-01;PC-02と入力する。

とにかく分散可能なマシン全部に投げたいときは、*(アスタリスク)を記入する。

 

CoordinatorRemotingHostに自分のマシン名(ホストとなるマシン)を入力する。

例)自分のマシン名がPC-01だった場合は、PC-01と入力する。

 

SwarmCoordinator

SwarmAgentの設定が完了したら、SwarmCoordinatorを起動します。

SwarmCoordinatorはビルドしても起動したりはしないので、

インストールフォルダの”Engine\Binaries\DotNET”内のSwarmCoordinator.exeを起動します。

 

すると、分散可能なマシンが一覧となって表示されていると思います。

 

SwarmCoordinatorで接続マシンを確認

SwarmCoordinatorで接続マシンを確認

 

 

確認ができたら、ホストのマシンでライティングビルドをスタートしてください。

SwarmAgentのSwarmStatusで、分散マシンのライティング進捗状況が確認できれば成功です。

 

分散が成功した場合

SwarmAgentで分散マシンの進捗を確認

 

分散すればするほど計算時間が短縮されるので、1台で1晩かかっていたのが1時間程度で終わります。

レンダーサーバーを所有しているプロダクションの皆さんは、全台にアンリアルをインストールしてもらいましょう…!

 

注意点

・SwarmAgentが複数起動しているとライティングビルドが失敗するので、注意してください。

・UE4のバージョンがバラバラでもビルドできるそうです。(4.12と4.10の頃で試しました)

・SkyLightが複数回バウンスするLightmass.exeを使っていても問題ありません。

 

 

 

 

 

Pocket
[`evernote` not found]

【UE4】マチネで360°パノラマ動画を出力する

こんにちは。

4.11にアップデートされてから、stereo panoramic movie capture というプラグインが搭載されたそうです。

プロジェクトを開いて、編集⇒Plugins⇒MovieCaptureで確認できます。

360

どうやら360°の全天球画像がキャプチャできるとか?
レンダラーとして使っていきたい界隈には朗報。

にしても、どうやって使うのかわからず…
Forumでは英語でそれらしいことが書いてありますが、英語読めない…
UE4Forum/Thread: Stereo Panorama Exporter Plugin 4.11
↑ここに書いてあるっぽいんだけどな…

よく分からんかったので、せっかくですが今回は
UE4Forum/Thread: 360 StereoPano Export Method
↑こちらのやり方を試してみました。

 

◆マチネで360°パノラマ動画を出力する

パノラマカメラをダウンロード

ありがたいことに、パノラマカメラをアセットとして使えるように配布してらっしゃる方がおりましたので、そちらのデータを使わせてもらいます。

しかも、Tutorialまでアップしてくださっています。なんて親切。

↑UE4からパノラマ画像を出力するTutorialです。

上記動画の詳細に、プロジェクトファイルがアップされていますので、ダウンロードします。

 

プロジェクトを読み込む

ダウンロードしたプロジェクトを開き、コンテンツブラウザに入っているアセットを全選択します。
右クリック ⇒ アセットアクション ⇒ 移行 をクリック。
パノラマカメラを使いたいプロジェクトが入っているフォルダの Content にコピーします。

これで、読み込み完了です。

 

セットアップ

まず、シーンに BP_PanoCamera を、キャプチャしたい場所に配置します。

このカメラから見たパノラマ画像がマチネから出力されますが、このカメラは配置するだけでOKです。

次に、 BP_PanoCaptureSBS を配置します。

場所は、オブジェクトと衝突などしてなければどこでも大丈夫です。

さて、シーンに配置するとカメラビューからパノラマがレンダリングされていることが確認できると思います。

360_cameset↑カメラを選択すると、ビュー上でカメラ越しの画を確認できます。

ちゃんとパノラマっぽい歪みが確認できますね。

ここでお気づきの方もいらっしゃると思いますが、なぜか初期状態はカメラの後ろ側が描画されていません。

こちらはどういうときに使うのか分かりませんが、設定で変更できるので、変えたいと思います。

 

カメラを360°に変更

BP_PanoCaptureSBSのブループリントを開きます。

360_bpset

変数ノードの StereoOn を選択し、デフォルト値のチェックをはずします。

コンパイルして、先ほどのビュー画面に戻ると、360°のパノラマが描画されているのが確認できると思います。

360_bpend

↑先ほどと違い、きちんとカメラの後ろ側も描画されています。

 

マチネの設定

最後はマチネの設定です。

BP_PanoCaptureSBSをカメラグループに登録し、ディレクターを作成。

あとは、ムービーから書き出すだけです。

サイズは4096×2048で出力しました。

他にもいいサイズあるかもしれませんが、16:9とかで出すと天井と足元にブラックホールができるので御注意。

もちろんマチネから出しているので、連番で出力できますし、HDRも出せます。

ただ、カスタムレンダーパスは出せませんでした…

出し方をご存知の方いらっしゃったらぜひ教えていただきたいです。

 

こんな感じで進めると、UE4から簡単にパノラマ画像が出力できたと思います。

↑こんな感じになります。地面が怪しいですが、許容範囲内でしょうか。

先人のおかげで、かなり簡単にパノラマ出力できました。

足向けて寝れません。ありがとうございます。

GWもアンリアル漬けになりそう。

Pocket
[`evernote` not found]

CGデザイナー流情報収集のススメ

学生の頃から、「日々の情報収集が大切!」と言われていましたが、

昼夜働いているデザイナーさんにはなかなかそんな時間取れませんよね。

気になるサイトをお気に入りに登録するも、更新されているかチェックするのが面倒だったり。

毎日色々なニュースが飛び交っていて、気づいたら置き去りにされている感覚。

そんな忙しい皆さんにぜひオススメしたい情報収集用サービスをご紹介したいと思います。

続きを読む

Pocket
[`evernote` not found]