ラベル 3DCG の投稿を表示しています。 すべての投稿を表示
ラベル 3DCG の投稿を表示しています。 すべての投稿を表示

2020年3月22日日曜日

環境テクスチャのHDRファイルの作成方法 ~Blender2.82~

Blenderではいくつかの環境テクスチャ(*.exr)が同梱されており背景に設定できます。
その環境テクスチャ自体を作成する手順をメモ。
今回は HDR形式で出力してみます。

レンダーエンジンはEevee使用。

背景を用意 

事前に環境テクスチャに焼き込む背景やオブジェクト類はある前提とします。
今回はWorldのマテリアルノードで宇宙ぽい感じにしたものを環境テクスチャにしてみます。



カメラを作成&配置

  1. シーンにカメラを配置。
  2. カメラはシーンのGlobal座標で 0,0,0に、Global回転角度を 90,0,-90にする。
  3. カメラのプロパティで以下のように設定。
    Type: Panoramic
    Clip Start: 10m位以上。
※レンダーエンジンが Cycles の場合は PanoramaType欄を Equirectangularにする。


Clip Startが小さいとカメラ自身が背景を遮る(?)ようできれいにレンダリングされない為、適当に少し大きめにする。
背景オブジェクトがある場合はClip Endの距離設定で範囲に入るように設定。



レンダー出力形式設定

 今回はHDRI形式で出力する設定にしてみます。
File Format で Radiance HDR を選択しておきます。


追記:DimentionのResolution で解像度を変更できます。
例:Resolution X=4096, Y=2048
  Aspect X=2, y=1
※メインカメラもこの影響を受けるようなので、環境テクスチャ作成後はメインカメラ用の解像度に戻しておいたほうが良いかも。



レンダリング&出力保存

 F12キーを押すとウィンドウが個別に開いて、レンダリング結果を表示します。
 上部ツールバーから Image>Save As。




File Format で Radiance HDR を選択。
ここでは Space.hdr として保存。




Blenderに環境テクスチャを設定

 保存した hdrファイルを使ってBlenderの環境テクスチャに設定してみます。
  1.  World PropertiesのたタブをクリックしてWorldのパネルを表示。
  2.  Surfaceの欄をクリックして、Backgroundを選択。
  3.  Surfaceの欄をクリックして、Environment Textureを選択。
    ファイルをOpenできるアイコンが表示されるのでクリックして、先程保存した hdrファイル(Space.hdr)を指定して読み込み。
    一応 Equirectangular が指定されていることを確認。



2020年3月19日木曜日

親子設定オブジェクトの移動/回転連動のON/OFFについて~Blender2.82

環境:Blender2.82

Blenderでメッシュを親子設定した場合、通常は親を移動、回転すれば子もいっしょについてくる動作をする。

これを無効化する設定があり、うっかり無効化設定していると親を移動しても子がついてこない状態になってちょっとハマったのでメモ。


















  1. 3D ViewウィンドウでNキー押しでサイドバーを表示させる。
  2. Toolタブをクリック。
  3. Options>Transformにある Parentsがその設定。
  4. Parentにチェックが無い場合。
    ChildはParentの移動や回転に追従する(デフォルト)。
  5. Parentにチェックが有る場合。
    Parentを移動、回転してもChildには影響無し。

2019年9月27日金曜日

3D Viewで近くに寄るとモデルが見えなくなる ~ Blender2.80

3D Viewで近くに寄るとモデルが見えなくなる


3D Viewで作業中にモデルにズームで寄るとメッシュ面が消えて見えなくなることがある。
 


近接表示時の有効範囲がデフォルトで0.1になっている為、その距離未満に近寄るとめりこんだように表示される為。
Clip Startの値を小さくすれば解決する。

Clip Start値設定手順

3D Viewウィンドウで操作。
  1. nキーをクリックしてツールシェルフを表示する。
  2. 右端のタブの「View」をクリックして選択。
  3. Clip Startの値を0.01や0.001等小さくする。
  4. 消えていた近接距離内のメッシュが表示される。



ちなみに、遠いオブジェクトが表示されない場合は「Clip Start」すぐしたの「End」の距離を大きくして表示距離を増やせば見えるようになる。

追記:
0.0001等あまり小さくすると近距離で重なっているメッシュがチラついたりするので注意。
 


 

2019年9月20日金曜日

Symmetrizeで対称Armatureがズレる対策 ~ Blender2.80


人型アバターのボーン(Armature)を半身だけ作っておき、Symmetrizeを使うと自動的にもう半身を生成できて便利です。

ですが状況によってはうまく対称形が作れない場合があります。

ズレて反転コピーされる場合

Symmetrize はアバターの Armature の Object OriginのX座標を起点に対称形を生成します。
以下のような場合はうまく生成できます。

上記図ではアバターArmatureのObject Originが体の中心線上(HipsやSpline等の軸上)にあります。Symmetrize はそこを軸に反対側を生成します。



以下のような場合はうまく生成できません。

上記図のような場合、Lower Leg.Lの左側に Object Originがあります。
これでSymmetrizeした場合、Object Origin の左側にLower Led.Rが生成されます。
結果、おかしな状態になります。



ArmatureのObject Originを正しい位置へ合わせる

X方向の体の中心線上に合わせれば良いのでHipsでもSplineでも良いのですが。
だいたい人型アバターだと足元、中心線上にアバター起点用のArmatureが仕込んであることが多いようです。そこにObject Originも合わせておくのが後々も都合がよいかもしれません。


作業手順。
  1. 3D ViewでObject Modeにする。
  2. Armatureをクリックして選択する。
    ※画面左のツールシェルフがSelelctになっていないと選択できません。
  3. Edit Modeにする。
  4. 合わせ先のボーンをクリックして選択。
    足元でアバターの中心線にあるボーンを選択。
    ※Symmetrizeだけを考えるならHipsでもSplineでも中心線上のボーンならOK。
  5. Shift+Sから、Cursor to Selected をクリック。
    ※3D Cursorが選択したボーンに合います。
  6.  Object Modeにする。
  7.  3D View のヘッダーメニューから、Object > Set Origin > Origin to 3D Cursor をクリック。
  8. これでObject Originがアバターの中心線上に移動しました。
    あとはSymmetrizeすればきれいに対称形が作成できます。


2019年9月19日木曜日

アバター半身のArmatureから対称形を自動生成 ~ Blender2.80

Blender2.80での操作系変更点の自分用メモ。

アバター半身のArmatureから対称形を自動生成する方法。
(2.7系と基本的に同じ)。

X-Mirrorで作りながら対称形も同時制作する方法もありますが、ここでは先に半身を作ってから Symmetrizeで逆側の半身を自動生成します。
※未検証ですが、Symmetrizeだとコンストレイン等もコピーできるらしいので。



Symmetrizeで対称のArmatureを作成

作業手順。
  1. 3D ViewでObject Modeにして対象のArmature選択。
  2. Edit Modeにする。
  3. 全ボーンを選択する。
    ※厳密には対称形を作るボーンのみでOK。Hips、Spline等を選択していても中心線にあるボーンは自動生成はされない。
  4. 3D View内の何もないところでRMBクリックのメニュー > Symmetrize で対称形を生成。
  5. この時予めにボーン名末尾にあらかじめ「.L」等のBlender規定の命名規則を付与しておくと、生成した対称形の各ボーン名に「.R」が自動付与されます。
    ※これは後から LMB>Names で操作もできます。



2019年9月18日水曜日

ポースのIK設定 ~ Blender2.80

Blender2.80での操作系変更点の自分用メモ。
※説明中、ヘッダーが下部に表示している場合有り。
※動画等で海外情報を見ることが多い為、UI設定は英語のまま。


ポーズのIK設定

  1. 3D ViewでObject Modeから対象Armatureを選択。
  2. Pose Modeにする。
  3. 3D View のヘッダー右端の Pose Options をクリック > Auto IKをクリックしてチェック入れ。
  4. IKが有効になる。
  5. 手などの末端のArmatureを動かすと、腕のArmatureがついてくる動きになる。



2019年9月17日火曜日

ボーンX-Ray表示 ~ Blender2.80

Blender2.80での操作系変更点の自分用メモ。
※説明中、ヘッダーが下部に表示している場合有り。
※動画等で海外情報を見ることが多い為、UI設定は英語のまま。


ボーンのX-Ray表示

ArmatureのX-Ray表示をさせる手順。
  1. 3D View画面でObject Modeにする。対象のArmature選択。
  2. Propertiesウィンドウ内タブObjectDataをクリック
  3. Viewport Display項目を開けて、In Front にチェックを入れる。
    名称が X-Ray ではなく In Front になった様子。











2019年9月16日月曜日

法線の表示、反転、外/内向き揃え ~ Blender2.80

Blender2.80での操作系変更点の自分用メモ。
※説明中、ヘッダーが下部に表示している場合有り。
※動画等で海外情報を見ることが多い為、UI設定は英語のまま。


法線の表示

  1. 3D View画面でObject Mode。対象モデル選択。Edit Modeに切り替え。
  2. ダイアログが表示されるので、
    ヘッダーのOverlayアイコンをクリックして表示されるウィンドウで設定変更。



法線の反転、外/内向き揃え

  1. 3D View画面でObject Mode。対象モデル選択。Edit Modeに切り替え。
  2. 法線を操作したいメッシュ部分を選択状態にする。
  3. ALT+N で Normals のダイアログが表示するのでそこから、
  • Flip をクリックで法線反転。
  • Recalculate Outside クリックで外向き揃え。
  • Recalculate Inside クリックで内向き揃え。 

法線の外向き揃え:ショートカット

SHIFT+N 一発で指定できる。

法線の外向き揃え:ショートカット

CTRL+SHIFT+N 一発で指定できる。





Blenderの時代がくるカモ?その1

使っている人は使っているBlender。
ゲーム業界では中々使われていない現実もあるわけです。
特に国内はAutodesk帝国のMaya民族ほぼ一色といっても過言ではない感じ。

そこにあの Epic Games が Blender Foundaionへの多額の寄付投下。
Blender利用者としては少なからずワクワクするニュースです。
(UE4との連携プラグインとかいろいろ妄想が)

はたしてゲーム業界的にもBlenderの波はくるのか・・・?。

ということで、一応定点観測的なメモ(今更感ありますが)。

Epic Games が Blender Foundationに$1.2ミリオン$を寄付

 1.2ミリオン = 1,200,000USD = 120万ドル。
ざっくり1USD = 100円とすれば120,000,000 = 約1億2千万円の寄付。

前身はUnreal Dev Games

前身は 2015に始まった総額500万ドルの Unreal Dev Games基金で、2019/3にその資金支援の最終回を終えたそうです(つまり全基金額の支援終了)。

これに伴い新たに Unreal Dev Games という基金を設立。今度は1億ドル規模とのこと。
資金支援には5000ドル~50万ドルの幅があるとされ、想定対象としては、

  • Unreal Engineを使って製作されるプロジェクト。
  • OSSによって3Dコンテンツ制作のための機能を強化しているデベロッパー。
    ※こちらはUnreal Engineの使用/非使用を問わない。

今回 Blender Foundation は後者として支援を受けたようです。

総額1憶ドル規模ということは120万ドルでも1/100程度の額なので、今後もまだまだこういう支援はありそうですね。


Blender Foundationへの支援とBlender2.8

Blender Foundation へは3年間をかけて120万ドルが順次支援されるとのこと。
どういう形態かはわかりませんが、40万ドル/年=約4000万円/年という感じですね。

仮にこれが現金での支援とすれば、どれくらいの人が働くことができるのか。
ざっくり人月100万とすれば40人。運営により様々な経費はかかると思われますが業界から優秀な人材、より多くの貢献者がさらにBlender開発に参加することが見込まれます。
※ちなみにBlender Foundationでは15名の従業員がオフィスで働いているそうです。
※樹木自動生成とか、オープンフィールドの自動生成支援とか、何かやってくれると嬉しいですね。

折しもBlender2.8の正式リリースの時期にも重なり、今後もさらに期待です。



ちなみに

私的にはBlenderのGUI大幅改変は2度目。
(1度目は2.4系から2.6系)
いろいろGUIメニュー配置やショートカットも変わっているので最初はかなりイラっとしましたが2~3日いじってるとなんとか慣れました。
むしろGUIが整理された感もあり、慣れれば使いやすいかも。
※特にノード系にて、とある操作で絶対落ちるバグが改善されたようで安心してノードもいじれます。
※最近はHoudiniしてましたが、久々にBlenderでなんか作ってます。

インディゲーム制作(個人/同人等の小規模開発)においてMayaなどは結構高コストなのでBlenderは良い選択だと思うのですが、ちょっと業界関連会社に関わるとMaya「しか」納品ダメ/過去資産が全部Mayaとかあるわけで。難しいところですね。

※Mayaもたまに使ってますがいまだに慣れません。なんでもかんでもアイコンでGUIに配置してて、よく使う機能のショートカットが無くて、自分でMELで書いてシェルフに入れるのが基本とかで25万円はどうなんだ~といつも思ってます(笑。

2018年8月30日木曜日

Blenderでポーズをリセットする


環境:Blender2.79

ポーズモードで色々動かした後、デフォルトのポーズに戻す方法。

  1. Pose ModeでAキーを押してボーン全選択
  2. 3D Viewのメニューから、Pose>Clear Transform>All
    又はAllのかわりにクリアしたい種類を選択。




2017年8月20日日曜日

Blenderでサッカーボールのようなものを作る

Blender2.78c でサッカーボールぽいモノを作るメモ。

※2.78cはプラグインの様相が変わったようで2.72とは少し異なるようなので。

環境

Blender2.78c


準備

まじめに作ると甚だ面倒そうなのでプラグインを利用。
プラグインは標準装備だが有効にする必要有り。


プラグイン Meah: Inset Polygon の有効化




  1. CTRL*ALT+U で UserPreferences を開く。
  2. 上部のAdd-onsを選択。
  3. 左列のMeshを選択。
  4. Mesh: Inset Polygonにチェックを入れる。
  5. Save User Settings で設定を保存。


ベースモデル作成

#1. 3DViewメニューバーから、Add>Mesh>Mesh Function>Regular Solid




















#2. 左「Transform」パネル下部の Presets から Truncated Icosahedron を選択。





















 #3. Editモードで六角形面の余計な対角エッジを消す




















  1. 六角形面にあるエッジを選択。
  2.  SHIFT+G から Length を選択。
    六角面の対角を全選択。
  3. DELでキー押し メニューから Dissolve Edges


#4. Editモードで五角形面の余計な対角エッジを消す



















  1. 五六角形面にあるエッジを選択。
  2.  SHIFT+G から Length を選択。
    六角面の対角を全選択。
  3. DELでキー押し メニューから Dissolve Edges




  これで一応サッカーボールらしい形状になる。
























白黒塗り

  1. 白にするマテリアルを作る。
  2. 黒にするマテリアルを作る。
    この時マテリアル一覧で、白のマテリアルの下にする。
  3. Editモードにする。
  4. Face選択モードにする。
  5. 五角形の面を選択。
  6. SHIFT+G > Area で五角形の面を全て選択状態にする。
  7. 黒マテリアルをAssignする。




※本当はこの後にもっと「サッカーボールらしくする」加工がありますが、今回はここまで。





参考: Blender Tutorial: Soccer Ball with Stitching


2016年12月11日日曜日

Blenderが何かと動作が遅くなる対策

久しぶりにBlenderを起動してみたら、何かとプチフリぽく動作が遅くなる現象が発生。

テクスチャを読み込むダイアログが出るまでに数十秒かかったり、いろいろな箇所が遅く・・・。

■環境

OS:Windows10。
GPU: nVidia GeForce GTX1060
Blender 2.77a/2.78a (x64)


■原因

どうもnvidiaのドライバが原因に関係しているようです。
状況としては、
  • 発生を確認したのはここ1~2か月位。
  • 少なくとも最近アップデートしたドライババージョン376.19では発生を確認。頻度高。
    たまにBlenderがハングアップするときもある。
  • 少し前のバージョンでも発生(正確なバージョン番号失念)。

■対策

nVidiaのコントロールパネルにBlenderを登録することで回避できるようです。

【手順】

  1. デスクトップ上のアイコンが無いスペースで、右クリック>nVidiaコントロールパネル でnVidiaのコンパネを開く。
    ※nVidiaのコンパネが開ければ他の方法でも可。
  2. nVidiaのコンパネを開いたら、左列のツリーで 3D設定>3D設定の管理 をクリック。
  3. プログラム設定のタブをクリック。
  4. 追加 をクリックしてBlender.exeを選ぶ。
    又はフォルダごと指定可能。
  5. 適用 をクリック。
    「カスタマイズするプログラムを選択する」のプルダウンで登録されていることを確認する。
  6. PCを再起動。


今のところこれで改善しているので、しばらく様子見です。




2016年8月30日火曜日

Polygon Fill ~ SubStance Painter


SubStance Painterの Polygon Fill機能と Quick Mask機能で簡単にメッシュ面を塗る方法。

こんな感じのものを塗ってみます。




メッシュのエッジ線を境目にちょっと塗りたい時に便利です。

■環境

SubStance Painter2.3.0

OS: Windows10pro バージョン1607(Build 14393.82)
CPU: i7-6700K
MEM: 32GB
GPU: GeForce GTX960(4GB)

※Polygon Fill機能、Quick Mask機能はVer1.xでも同じだと思います。


■モデル

Blenderで適当に作った以下のモデルを使って作業していきます。
OBJ形式で出力しておきます。





■新規プロジェクト作成

SubStance Painter2.2を起動。
CTRL+Nで新規プロジェクト作成ダイアログを開く。
Mesh の Selectボタンから先のOBJファイルを選択。
他の欄も以下のように設定し OK で進む。



以下のような感じになります。
ここで最初からある LayersウィンドウのLayer1は削除しておきます。


File>Save as... で適当なファイル名で保存しておきます。



■作業

ベースのマテリアルを設定

  1. Fill Layerを作成(Fill Layer 1)。
  2. 作成したFill Layerを選択。
  3. Materialsウィンドウから、Plastic Glossy Pure を選択。
以下のようにモデル全体が青のマテリアルで塗りつぶされます。



Quick Mask、Polygon Fill で塗る色の準備


前項と同じ要領で Fill layer を追加(Fill Layer 2)、マテリアルに SciFi PVC Plasticを設定。

Fill Layer 2上で右クリック>Add black mask。
マスクに何も描かれていない為この時点でモデルには Fill layer 1が反映されます。


Quick Mask、Polygon Fill で塗る

Fill layer 2のマテリアルで塗っていきます。

  1. Fill layer 2の black mask の四角をクリックして選択状態にします。
  2. 左上のツールアイコンから、Polygon Fill アイコンをクリックして有効にします。
  3. すると3D Viewのモデルにメッシュのエッジ線が見えるようになります。 
  4. さらにProperties - Polygon Fillウィンドウの Polygon Fillアイコンをクリックして有効にします。


  1. 塗る際はProperties - Polygon FillウィンドウColorスライダをめいっぱい右に寄せて1.0にします。(逆に消す時は左に寄せて0.0にして使う)

  2. 右クリック+ALTでだいたい真横からみえる位置に回転、さらにSHIFTも押下すると視点が正確に真横にスナップします。右クリック+ALT+SHIFTで視点角度が90度単位でスナップ)。
  3. 3D view上でTキーを押すと「Using quick mask」と表示されます。

    モデルの中央のみを選択するようにマウスでクリック&ドラッグで四角く囲います。
    囲ったメッシュ面がblack maskに自動的に書き込まれ、Fill layer 2のマテリアルが適用されます。
  4. このとき奥のメッシュも全て囲い対象になってしまう為、4隅のポールも一部選択されてしまいます。
    Properties - Polygon FillウィンドウColorスライダをめいっぱい左に寄せて0.0にします。
    4隅ポールの塗られてしまった部分をマウスドラッグで横長の四角で囲います。




最終的に以下のように目的のメッシュ面のみに Fill layer 2を適用できる black maskが出来上がります。




この要領で、

  • Fill layer + black mask
  • Polygon Fill
  • Quick mask
を使うとSubStance Painter上の作業だけで任意のメッシュ面のみにマテリアルを適用できます。


ちょっと塗りたい&メッシュ面境界で良い場合は便利です。



以下、他も塗った状態。



塗り絵感覚なのが簡単で良いですね。


Unityにインポートするとこんな感じ。














2016年8月28日日曜日

SubStance Painter2.2で表示される [GPUIssuesCheck] The current TDR~ を解決する

SubStance Painter2.2を起動すると以下のようなログが流れる場合があります。



指定のURLからallegorithmicのサイトに行けば解決方法(英語)が書かれていますが、レジストリを直接書き換える必要があります。
(製品ソフト使用でいきなりレジストリ書き換えというのは少々敷居が高い気もします・・・)



■環境について

OS: Windows10pro バージョン1607(Build 14393.82)
CPU: i7-6700
MEM: 32GB
GPU: GeForce GTX960(4GB)


■何が起きているのか?

以下問題のログメッセージ

[GPUIssueCheck] The current TDR (GPU hang recovery) delay is low 2s.
See http://support.allegorithmic.com/documentation/display/SPDOC/GPU+drivers+crash+with+long+computations


このTDRTimeout Detection and Recovery の略です。

GPUドライバ側でGPUがハングアップしたと判断する時間値(タイムアウト値)が2秒を示しています。
GPUが何らかの原因(熱や故障など)で一定時間以上応答しない時ハングアップしたと判断しGPUにリセット(?)をかけるようです。

この判定時間=タイムアウト値が2秒になってるということです。

そしてSubStance Painter2.2にとって2秒では「タイムアウト値が短すぎるかもしれない」とログでレポートしているわけです。



SubStancePainter2.2はGPUコア(GPGPU的な利用?)を活用しているようで、大きなテクスチャを扱う等の際に、その処理に時間がかかることがあるようです。
(特にテクスチャExport時に長時間GPUを使用するようです)

その際先のTDR値の2秒を超えると、ドライバ側でGPUがハングアップしたと検知されてしまい、処理が中断してしまうようです。

つまりこのTDR値を適切な値に設定しすれば良いということになります。
(ちなみに2秒はドライバ内デフォルト値)


■適切なTDR値は?


ちなみにこのTDR値を0にするとハングアップ検出がされなくなります。
これは本当にGPUがハングアップした際にOSを抱き込んで固まる危険性があります。
その場合PCのリセットボタンか電源をOFFにするしかなくなるので少々リスキーです。

しかしどれくらいに設定すれば良いかの推奨値は先の公式ページにも特に書かれていません。
極論どれくらいの処理をさせるか=作業をするかに依存しそうです。

ひとつの目安としてテクスチャサイズが関係しているようです。
ちなみに巨大なテクスチャで(4k?8k?以上とか)あまりに複雑なことをやるとGPUメモリが3~4GBでも不足するといった事態もあるらしいです。
(そもそもExportができないらしい?)

フォーラム(海外)などの情報では60~240~480などといった数値が散見されます。

まずは30か60程度に指定しておき、作業中にExportがうまくいかない等の状況が発生したら120、240~等に増やしていけば良いかもしれません。



■レジストリ書き換え作業

まず概要ですが、

  • タイムアウト値の設定箇所(キー)は2つあります。
    • TdrDelay
      GPUスケジューラからのGPU処理中断(タイムアウト)されるまでの猶予時間。単位は秒。デフォルト2秒。
      この値秒以上GPUの応答が無いとGPUがハングアップとみなされる。
      今回はTdrDelay値120に設定してみます。
    • TdrDdiDelay
      OSのスレッド処理がGPUドライバ処理中断を判断する時間。単位は秒。デフォルト5秒。
      今回はTdrDelay値125に設定してみます。※TdrDelay<TdrDdiDelayとなっているようなので、TdrDelayより少し長い程度に設定してみます。どうせGPUハングを検出したらアプリ側で長い間待っていても意味がない気がするので。
  • この2つのキーは初期状態では存在していないかもしれません
    その際はキーを作ります。
    データは DWORD です。
    (キーが存在していない場合はデフォルト値が使用されます)




以下書き換え作業手順。
  1. スタートメニュー右クリック>ファイル名を指定して実行 欄で regedit と入力してENTERキー押し。
    「このアプリがデバイスに変更を加えることを許可しますか」のダイアログでは「はい」を選択。
    レジストリエディタを起動。
  2. レジストリエディタ画面左のツリーで以下を辿り右画面に表示させます。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers
  3. TdrDelayが無い場合は作成します(ある場合は次へ進む)
    右画面の空白部分で右クリック>新規(N)>DWORD(32ビット)値(D)
    作成した行の上で、右クリック>名前の変更 でTdrDelay に変更。
  4. TdrDelayの行の上で右クリック>修正。
    「表記」で「10進数(D)」をクリック。
    値のデータ(V)で120と入力します。
  5. TdrDdiDelay についても同じ要領でキーが無ければ作成し、名前変更、値の修正をします。
  6. レジストリエディタを終了し、PCを再起動します。
 これで書き換え作業完了です。

SubStancePainter2.2を起動して問題のログが表示されなければうまくいっています。




■参考サイト

msdn.micrfosoft.com: TDR Registry Keys









2015年4月8日水曜日

デカールを貼る ~ SubStance Painter

SubStance Painterで凹凸のある3Dモデルにデカールぽいものを貼ってみるメモ。


※他にもっとスマートな方法がありそうな気もしますが、とりあえずやってみたのでメモ。
※デカール = プラモデルなどで車のボンネットや戦闘機の翼などに貼ってあるマーク類。痛車ぽい絵を貼る際にも使えるかも。
※Blender上でも同様なことは一応できますが、SubStance Painterの方がいろいろと利便性が良い感じ。





環境

Windows7x64
SubStance Painter 1.3.3。
(モデルとマスクテクスチャ作成にBlender、PhotoShopを使用)

※作業中のデカール素材には『ユニティちゃんライセンス』で提供されるコンテンツを利用しています。


3Dモデルを用意

表面に凹凸があるモデルを用意(Blenderで適当に作ったもの)。
Obj形式でExportできれば他の3Dツールでも良いと思います。



□Blenderでモデルを作る場合のプチメモ:

先のモデルはBlender上では、
  • 色ごとに3つのObjectに分かれている(赤、青、緑)。

  • マテリアルは1つのみ作成。
    3つのObjectで1つのマテリアルを共用に設定。
     
  • UV配置も共存
    それぞれUV展開後、1枚のテクスチャ面積に収まるように各UVを配置。

こうしておくと SubStance Painter上では、
  • マテリアルは1つなので、1つのモデルのように塗れる。
    Particleでオイルなどを流した際に3つのObjectにまたがって流れてくれる。
    ※Blender上で各Object毎にマテリアルを個別に作ってしまうと別のマテリアル領域には流れない。
    デカールも貼りやすくなる(3つのObjectにまたがって同時に貼れるので)。

  • パーツごとの塗りには色選択マスクを使う。
    各Object毎の塗りは色選択マスクを使えば問題なし。
    (参考記事: 色選択マスク ~ SubStance Painter
    マスクは別途2Dソフトで作る必要有。
    BlenderからUVレイアウト(Object3つ分)を出力し2Dソフトで合成&着色するだけ。

  • SubStance Painter上での(3つのObject分の)作業結果も1枚のテクスチャ(法線/絵/光沢など各1枚)になる。
    ExportしてBlenderやUnityで貼る際にも楽。

ということで、Objectが複数あるモデルの場合はマテリアルを1つ(各Objectで共用)でExportすると楽な場合がありそうです。

色選択マスクのテクスチャ(UV)はこんな感じ。
※追記:左下1つだけ8角形に塗れてないのはミスです。
後から気付きましたが記事の本筋には支障がないのでそのまま( ゚∀゚;



SubStance Painterで準備

  1. 3Dモデルの読込。
    Obj形式でExport済みの3DモデルをSubStance Painterで読み込む。

  2. Fill Layerを3つ作成&各色選択マスク追加。
    各Fill LayerにAdd mssk with color selection で色選択マスクを追加。
    2Dソフトで作成済みの色選択マスクを読込む。
    3つのObjectに相当するパーツを色選択マスクで指定。
     
  3. 3つのパーツを適当に塗り塗り。
とりあえず適当にこんな感じに。


デカールを貼る


  1. デカール素材読込
  2. レイヤ追加
  3. ブラシ選択
  4. ブラシのマテリアルにデカール素材を指定



デカールを貼る面が正面にくるように3Dビューを調整。
※3Dビュー内で CTRL+SHIFT+マウス左ボタン押し状態で90度単位の回転を使うと楽。

ブラシ設定内で、アライメントをカメラに設定(重要ポイント)。
各~ジッタの数値を0にする。
Alphaを無し、他、貼る角度を変更など。

3Dビュー上で大きさを調整して左クリックで貼る。


貼り終わった状態。

独り言

SubStance Painterの入門者向け(?)な日本語情報が少ない気がします。

オンラインマニュアル(英語)も簡素な感じであまり詳細に触れてないような。

Youtubeの動画は情報源としてそれなりに有効なのですが英語ばかりですし。
(特に公式動画は早口過ぎっ)

3Dツール関係は必要な基礎知識量(?)が多そうなので、どこまで詳細に説明するかなど、いろいろ難しそうですね。

2015年3月26日木曜日

タイル床を作る~ SubStance Painter + Unity5

タイル床(?)らしきものを簡単に作ってみるメモ。



つくるモノの概要

  • 3Dモデルは単なる平たい四角形。
  • 左右の濃い色と中央とで質感を変えてみる。
  • タイル溝部分はノーマルマップで凹ます。 



    環境

    Windows7x64
    PhotoShop5.5。 ※png形式等で出力できればなんでも可。
    Blender2.73a(x64)。 ※Obj形式で出力できればなんでも可。
    SubStance Painter1.32。
    Unity5.0.0f4(x64)。


    モデリング


    Blenderで作業。
    OBJ形式で出力できれば3Dツールは何でも良いと思います。

    モデルはただのCubeを上下つぶして四角い板状にしただけです。

    UVは上面を床(?)として使う前提でテクスチャ全面に展開。
    (Blenderなら3D Viewで u>unwrap)。
    下面、横面はどうでも良いですが、一応下図では適当な位置にUVを配置。

    できたらOBJ形式でExport。
    Blenderだとモデルを選択状態にして File>Export>Wavefront(.obj) で以下のような感じに。

    マスクを描く

    SubStance Painter上での作業用にマスクを描きます。
    ※最終的なテクスチャは全てSubStance Painter上で生成します。
     ここで作成するマスクはその作業を補助するものです。
    今回はPhotoShopを使っていますが、GMP2でもなんでも良いです。
    pngかtgaあたりで出力できればなんでも可。

    一応最終的な完成イメージは以下のような感じとしました。


    これをSubStance Painter上で作るために、2つのマスクテクスチャを描きます。

    ■タイル溝マスクテクスチャ

    格子線でタイル溝を描きます。
    赤色に特に意味はないです(気分です)。

    ■床面マスクテクスチャ

    中央と左右で床の色を変える為のマスクを描きます。
    既に完成イメージの単色で塗ってありますが、マスクとしては何色でも構いません。
    ※PhotoShop上で色彩を決めたので、そのまま色がのっているだけです。 
    ここで色をのせておくと、SubStance Painter上でスポイドで色を拾えてちょっと便利。


    2つのマスクはpngかtga等で保存しておきます。

    テクスチャ作成

    SubStance Painter上で作業。

    ■新規プロジェクト作成

    File>New (又はCTRL+N)で新規プロジェクト作成ダイアログを開く。
    右上のSelectをクリックしてExport済みのObjファイルを選択。
    Addをクリックして保存済みのマスクテクスチャ2つを選択。
    ※CTRLを押しながらファイルを選ぶと複数選択可能。
    OKをクリックで進む。



    画面下部のShelfパネル内のTextureタブにマスクテクスチャ2つが追加されていることを確認。
    ※もし無ければ File>Import image で読み込む。
    右上のLayersパネル内のLayer1は使わないので、左クリックで選択、DELキー押しで削除する。


    ■左右濃緑部分のレイヤ作成

    【色選択マスク作成】

    Fill layer を追加&Add mask with color selectionでColor selectionを付与。
    参考: 色選択マスク ~ SubStance Painter

    ID Maskでインポート済みの床面マスクテクスチャを指定。
    Pick colorをクリックすると2D/3D画面内がマスクの色を拾うモードに変化します。
    そこで左右の濃い緑部分をクリック。2Dでも3D画面内どちらでも可。



    Fill Layer 1の文字のところでダブルクリックするとレイヤ名を変更できます。
    ここではわかりやすいように Side Line に変更してあります。


    【色をのせる】

    レイヤの左側をクリックして選択(Fill Layer)。
    Base Colorをクリック。


    ここで左右の濃い緑色を指定します。RGB値で入力しても良いのですが、ここではスポイトを使うと楽です。

    ポップアップしているカラーウィンドウ内にスポイトアイコンがあります。
    このスポイトアイコン上でマウスの左ボタンを押したままドラッグして拾いたい色のところで離します。
    読み込み済みのマスクに既に色がついているのでそこで離せば色が拾えます。


    これで左右の端をマスクにしてFill Layerの色が適用された状態になります。


    ■中央薄緑部分のレイヤ作成

    前項と要領は同じです。

    Fill layerを1つ追加してColor selectionで、
    ID Maskは前項と同じマスクテクスチャを指定。
    Pick colorは中央の薄い緑部分を指定。

    Base Colorは中央の薄い緑色を拾います。

    レイヤ名をCenterに変更しておきます。

    ■タイル溝部分のレイヤ作成

    要領は同じです。
    Fill layerを1つ追加してColor selectionで、
    ID Maskはタイル溝マスクテクスチャを指定(赤い色の方)。
    Pick colorは格子の黒い指定。細いのでズームして拾うと良いです。

    Base Colorは格子の部分が細すぎてスポイトでは難しいので、RGB各0値で黒にしておきます。

    レイヤ名をCross Lineに変更しておきます。

    ■質感調整

    【Side Lineレイヤ】

    Side Lineレイヤをクリックして選択。
    同レイヤの左側のアイコンをクリック(マスクではない方)。



    レイヤパネル下の Properties - Fill を見ます。
    その中にRoughnessやMetallicのスライドバーがあります。
    ここで質感を調整。
    • Roughness
      0に近い程反射。1に近い程反射しない。
    • Metallic:
      1に近い程金属らしい反射が強くなる。
      ただしRoughnessとの兼ね合いもある。鏡面反射的な要素はRoughnessが支配的。
      Roughness=0.0、Metallic=1.0 で最もきれいな鏡面反射に。
      Roughness=0.0、Metallic=0.0 にすると鏡面反射しつつやや表面が濁る質感に。
    今回は、Roughness=0.6程度、Metallic=0.2程度にしておきます。
    ※スライドバー上のMetallic文字上をクリックするとさらにDirt等のテクスチャを使ってMetallicの設定もできます。

    【Centerレイヤ】

    同じ要領でCenterレイヤも質感調整。

    Roughness=0.5程度、Metallic=0.1程度にしておきます。

    【Cross Lineレイヤ】

    同じ要領でCross Lineレイヤも質感調整。

    Roughness=0.3程度、Metallic=0.0程度にしておきます。

    溝を凹ましたいので、Heightのスライドバーを0にします。

    こんな感じになります。


    ■Export

    いよいよテクスチャ出力です。

    Unity5のShader=Standardで使う前提で出力します。


    File>Export all channnels (又はCTRL+SHIFT+E)でダイアログを開く。
    ここでは出力形式をpngとしていますがUnityで読めれば何でも良いと思います。
    Config行のプルダウンから Unity5(Standard Metallic) を選択。
    Exportします。
    ※出力先フォルダは上部に見えるパスをクリックで変更可能。

    ※ダイアログでは4ファイル見えていますが、実際の出力は3ファイル。

    Unityで使う

    Exportした3つのテクスチャファイルはそれぞれ、
    1. ~AlbedoTransparency.png
      絵テクスチャ。
    2. ~MetallicSmoothness.png
      メタリック用テクスチャ
    3. ~Normal.png
      ノーマルマップテクスチャ
    と、なっています。


    これらをUnity画面のAssetsにドラッグ&ドロップで放り込みます。
    Export済みモデルのObjファイルも同様にAssetsに放り込みます。

    モデルをシーンに配置。
    モデル内のdefaultを選択。
    Inspectorからマテリアル(defaultMat)を展開。

    Main Mapsの下で各テクスチャを設定。
    ノーマルマップは Fix Now の問い合わせが出てくるのでクリックする。



    こんな感じに


    ただの板きれモデルが、それっぽい感じに♪


    考察


    ブログで書くと非常に面倒ですが・・・マスクテクスチャのデザインさえ決まれば、実作業は1時間もかかりません。

    今回マテリアルは全てSubStance Painterで調整。

    SubStance PainterはちゃんとUnity5向けのExport設定が用意されているのが嬉しいです。

    光源の違いで若干の差はでるものの、実質ほぼSubStance Painter上で見たものがUnity5で再現できます。

    今回のタイルの溝のようなものは、SubStance Painter上のHeight設定で簡単にノーマルマップ化できるので楽です。

    SubStance Painter上でさらにウェザリングの類もかけられるので便利だと思います。
    (Dirtやオイル汚れ等々)

    思うにSubStance Painterのプリセットマテリアルの把握と調整加減が肝なので、そこの感覚をつかむまでに時間がかかりそうです。


    追記~Androidで使う

    Androidなどのスマホ/タブレット系で使う際、Unity5のシェーダーをMobileにしたい場合があると思います(軽くなるはず)。

    その場合は、
    • Mobile/Bumped Specular
    • Mobile/Bumped Specular (1 directional light)
    あたりを使うと思います。

    このシェーダーを使う際は絵テクスのRGBAが、

    RGB=Diffuse、A=Gloss

    となる為、SubStance PaiterでUnity5指定でExportすると合致しません。

    Unity4を指定してExportします。
    ※SubStance PainterのExportダイアログ、Configurationタブをまじまじ見るとわかりやすい。
     右下のconverted mapsの色アイコンとOutput mapsの色アイコンを見比べるとよくわかります。



    1. ~_DiffuseGlossiness.png
      Base(RGB) Gloss(A) のテクスチャに割り当てます。
    2. ~_DiffuseIllumination.png
      使いません。
    3. ~_Normal.png
      Normalmapに割り当てます。
    若干見え方が変わりますが、一応使える感じです。


    独り言

    モノによっては非常に楽ができそうです。
    (BlenderでArrayでタイル並べてローポリにベイクしてる場合ではなかった(笑;


    PopcornFXなんてのもちょっと気になりますね(ボソ