「のろい首塚5」背景モデル制作3 如何にクリスタへ
2024.06.06 更新
えち漫画「のろい首塚その5」を描くにあたり 女子トイレ の背景モデルが必要に。
漫画下描きから完成までの背景モデル制作の流れを3回に分け記載する。
・「のろい首塚5」背景モデル制作1 仮モデル使用
・「のろい首塚5」背景モデル制作2 本番モデル制作
・「のろい首塚5」背景モデル制作3 如何にクリスタへ
クリスタの事なんぞ忘れて 作ってしまった背景モデル。
Blender のマテリアル描画がクリスタで再現できる筈もなく…どうしたものか。
だが最終的にクリスタでここまで再現、無事背景に使用できた。
如何にしてクリスタ上で再現したか、その作業内容を以下に。
Blender 3.6.5
ClipStudioPaint Ex 3.0.2
PC: Surface Go(CPU:Pentium, RAM:8GB)クリスタ
PC: Surface Pro 7(CPU:Core i5, RAM:16GB)Blender
まずはエクスポートして確認
まず手始めにそのまま FBXエクスポートして確認する。
エクスポートの設定は第1回の設定と同じ。
クリスタで FBXを読込むと…
見事にベースカラーのみ…まぁそうだろうな。
ふーむ、テクスチャにベイクすればいけるか?
試しにテクスチャベイクしてエクスポート
試しに「床」をベイクしてクリスタで再現できるか確認する。
参考:シーンにライティングを追加して、テクスチャをベイクする
レンダー設定と確認
レンダープロパティを開き、レンダーエンジンを「Cycles」
(※残念ながら標準では Cycles でしかベイクが出来ない)
(サンプリング>ビューポート>サンプル数32)
・サンプリング>ビューポート>デノイズ 有効。
(サンプリング>レンダー>サンプル数128)
・サンプリング>レンダー>デノイズ 有効。
・ベイク>ベイクタイプ「統合」、ビュー元「表面の上」
・ベイク>影響>全てチェック。
・ベイク>出力>ターゲット「画像テクスチャ」、画像クリアにチェック。
・ベイク>余白>タイプ「拡張」、サイズ「16px」
(※デノイズを切ると粒子の荒い画像になる)
ベイクされる画像がどのようなものかビューで確認。
ワークスペースを Shading 、3Dビューシェーディングをレンダープレビューに。
確認すると窓が暗い。外環境を何も設定していないからだ。
拘るなら環境テクスチャを使うが、屋内で小さな窓なのでカラーのみに。
ワールドプロパティ > サーフェス > カラー を明るい白色にする。
(窓が明るくなったが壁も明るく…何か間違ってそうではある)
マテリアルにベイク準備
ワークスペース Shading で「床」を選択。
床のマテリアルにベイク用「画像テクスチャ」ノード追加。
ノードの「+新規」でベイク用テクスチャを作成(1024 x 1024、他の設定そのまま)
ベイク実行
ベイクする「床」オブジェクトを選択。
床マテリアルのベイク用テクスチャノードを選択。(白枠が付く)
レンダープロパティ > ベイク >「ベイク」ボタンを押して実行。
左下のビューにベイク後の画像が表示されるので、画像 > 保存。
ファイルフォーマット「PNG」、RGBA、色深度8、圧縮15%、sRGB で「別名保存」(なぜ別名…)。
エラーの意味
No valid selected objkects.
ベイクするオブジェクトが選択されていない。
Object "..." is not enabled for rendering.
オブジェクトがレンダー無効にされていてベイクできない。
ベイクテクスチャの確認
ベイクしたテクスチャを確認するには、
ベイク用テクスチャをマテリアル出力に接続する。
クリスタで表示させるには プリンシプルBSDF が必要。
ベイクテクスチャ ⇒ プリンシプルBSDF ⇒ マテリアル出力 と繋ぐ。
(プリンシプルBSDF はスペキュラー0、粗さ0にした)
(※グループノードに入っているとクリスタ表示に失敗する)
(※確認が終わったら、元の接続に戻すのを忘れずに)
床を確認すると問題点が、黒い影は何かな?
またトイレBOXをベイクすると白い線が…これは?
ベイクテクスチャの黒い影
黒い影は何かのオブジェクトが存在し影になっている。
ビュー非表示で見えてなくてもレンダー有効ならベイクされるので注意。
「レンダー無効」か「ビューレイヤーから除外」にする。
インスタンス元はレンダー無効にできない
インスタンス元のコレクションを「レンダー無効」にすると、
インスタンス複製したオブジェクトもレンダー無効になる。
コレクションを作成して、その中にインスタンス元を入れ、
作成したコレクションをレンダー無効にすれば、インスタンス複製オブジェクトに影響なく無効化できる。
ベイクテクスチャの白い線
トイレBOXの壁の床に近い部分が白い。
本来なら床と壁板の接地面なので真っ暗なはずだが…
調べると、ワールドカラーが床平面ポリゴンを突き抜けて壁を照らし白くなっている。
ワールドカラーを遮蔽する壁で女子トイレを覆うと解決した。(窓は覆わず)
エクスポートしてクリスタで確認
クリスタで問題ないかFBXエクスポートして確認する。
ふむ、床は正しく出ている。
テクスチャベイクすればクリスタにて再現できそうだ。
その他 ベイクTips
ベイクテストの高速化
ベイクテクスチャのサイスが大きくなるにつれ、ベイクに時間が掛かる。
サイズを小さく(例:1024 ⇒ 256)すると劇的にベイクが速くなる。
画質を見るには適さないが、ベイクの簡易確認なら一時的に小さくするのもアリ。
ベイクテクスチャのリサイズ
Shading ワークスペースで、左下のビューで対象テクスチャを表示。
画像 > 拡大縮小 でリサイズ。(画像 > 保存も忘れずに)
(リサイズ時、XY両方選択すると同時入力できるので楽)
ベイクテクスチャを部分更新したい場合
1つのオブジェクトのみベイク更新したい等の場合は、
レンダープロパティ>ベイク>出力>画像をクリア のチェックを外すと上書きできる。
Eevee でベイクしたい場合
TexTools アドオンで可能らしい。
しかし統合したベイクが出来ないので今作では使わなかった。
ベイク作業の効率化
テクスチャベイクで行けそうだと思ったが、
オブジェクトの選択や各マテリアルのノード切替は流石に面倒。
実作業上はベイクは手間がかかりすぎて使えない。
何か良い手段はないか?
ベイクテクスチャ確認の効率化
確認時にのみベイクテクスチャを出力ノードに繋ぐにはどうするか?
属性ノードで接続の切替ができる。これを使う。
追加>入力>属性 でノード追加。
タイプは「ビューレイヤー」、名前は「prop_view_baked_tex」とする。
属性ノードを選択して、追加>グループ>グループ作成。
グループ入力を整理、グループ名を「Baked出力選択」とする。
(※グループにしたのは複製や修正が楽だから)
この「Baked出力選択」を以下のように接続
これで「prop_view_baked_tex」の値で切替できる。
ビューレイヤーにプロパティ追加
ビューレイヤープロパティ > カスタムプロパティ > 新規
タイプを「ブーリアン」、名前を「prop_view_baked_tex」としてOK。
これでチェックのON/OFFだけでノードの切替ができる。
ベイクオブジェクト選択の効率化
オブジェクトの選択状態の記憶にはビューレイヤーを使った。
ビューレイヤーは下記設定を個別に持つようである。
・オブジェクトの選択状態
・ビューポートから除外
・ビューポートから隠す
・ビューレイヤープロパティ
よってベイクするテクスチャの枚数分ビューレイヤーを作成。
ベイクするオブジェクトを選択しておく。
(※レンダー無効は記憶しない、ビュー除外で代用)
これでビューレイヤーを切り替えるだけで、オブジェクトは選択されている状態になる。
ベイクテクスチャノード選択の効率化
実は各マテリアルはノードの選択状態を保持している。
よって1度選択状態にしておけば以降は作業の必要がない。
マテリアル編集を行った後は必ずベイクテクスチャを選択状態にするルールで行く。
(※他の方法は後で説明するスクリプトを利用すれば可能と思う)
効率化後のベイク作業
効率化後のベイク作業は
1. ベイク用ビューレイヤー選択
2. ベイク実行、画像保存
3. ベイクテクスチャ確認用ビューレイヤー選択
(「prop_view_baked_tex」にチェックの入った確認用ビューレイヤーを作成した)
ビューレイヤーを切り替えるだけで済むようになった。
ベイクとエクスポート
モデル構成の変更
ベイクテクスチャが多いと管理が難しいので、ある程度オブジェクトを纏めて数枚に。
トイレBOX2はドアが開閉して陰影が変わるので、影響するものは2枚必要。
漫画に必要なのはトイレBOX2だけなので、他のBOXはそれを使い回す。
洗面台はそれぞれ陰影と鏡の映り込みが異なるので個別にベイクテクスチャ必要。
以上の事から必要なベイクテクスチャを決定
・baked_ルーム.png (size.1024、トイレBOX2ドアOpenのトイレルーム)
・baked_ルームClose.png (size.1024、トイレBOX2ドアCloseのトイレルーム)
・baked_BoxOpen.png (size.1024、トイレBOX2ドアOpenのトイレBOX2)
・baked_BoxClose.png (size.1024、トイレBOX2ドアCloseのトイレBOX2)
・baked_ホルダーOpen.png (size.512、トイレBOX2ドアOpenのペーパーホルダー)
・baked_ホルダーClose.png (size.512、トイレBOX2ドアCloseのペーパーホルダー)
・baked_洗面台001~004.png (size.512、各洗面台)
・baked_ダウンライト.png (size.256、天井のダウンライト(4つ共通))
纏めたベイクテクスチャに合わせてUVを再展開。
マテリアルをベイクテクスチャに合わせて整理。
インスタンス複製オブジェクトに個別にマテリアルを設定する必要から、
インスタンスを実体化してオブジェクト固有のマテリアルを設定する。
インスタンスの実体化
オブジェクト散逸を防ぐためコレクション(洗面1)を作成して入れてから実体化。
全体を動かす為のエンプティ十字(洗面001)を追加して親に。
オブジェクト固有のマテリアル設定
実体化したオブジェクトは元データとリンクした状態。
マテリアルも元データが使われるが、画像の部分を切り替えるとオブジェクト固有に設定可能。
ベイク
各ベイクテクスチャを作成。問題ないか確認。
エクスポート準備
クリスタ用にエクスポートするには、ベイクテクスチャが単純に出力ノードに接続されている必要がある。
だが作業効率化のためグループ化したり属性で切替している。これではクリスタで出ない。
スクリプトを使用してマテリアルの単純化を行う。
自動化のためスクリプトの勉強
参考:Blender で Python スクリプトを実行
ワークスペースを 「Scripting」 にして作業を行う。
コンソールでテスト
左側のコンソール画面でテストを行うも文字が入らず…???
マウスカーソルがコンソール画面上に無いとキー入力できない。
まったくBlenderって奴は…
コンソールに以下を入力して実行するとオブジェクト名が列挙される。
>>> D = bpy.data
>>> for o in D.objects:
>>> print(o.name)
>>>
どうやって実行するのか分からなかったが、最後の空行を改行すると実行された。
表示された名前を見るに、シーンのオブジェクトが一覧されてそうである。
テキストエディタでテスト
画面中央がテキストエディタ画面。新規を押すとエディタが使用できる。
実行を押すとエディタ上のスクリプトが実行される。
実行ログはシステムコンソールに出ている。
トップバー:ウィンドウ > システムコンソールの切替。
一部文字化けしているが重要ではないため問題ない。
気になる方はコマンドプロンプト等からBlenderを起動する。
参考:簡単に起動する方法
マテリアルのベイクテクスチャ接続自動化スクリプト
色々情報を漁ってようやくスクリプト完成。
全マテリアルを捜査し、マテリアルに「Baked出力選択」グループがあり、ベイクテクスチャが接続されている場合に、ベイクテクスチャ⇒プリンシプルBSDF⇒出力と接続する。
ConnectBakedTexture.py (7.14kB)
ダウンロード実行手順
1. Scripting ワークスペースに変更
2. トップバー:ウィンドウ > システムコンソールの切替 を行う
3. 「テキストを開く」でスクリプトファイルを開く
4. スクリプト実行(ヘッダ:テキスト>スクリプト実行、または実行ボタン)
5. 結果をシステムコンソールで確認
※マテリアルが変更されるので保存しないように注意。
blenderファイルを別名保存してそこで作業すれば安全。
エクスポート
マテリアルをエクスポート用に変更したら、FBXエクスポートする。
第1回のエクスポートと同じ設定でエクスポート。
エクスポート対象はビュー表示オブジェクトのみにしているので、
エクスポートしたいオブジェクトのみビュー可視にしたビューレイヤーを作成しておくと便利。
Clip Studio Modeler で素材セットアップ
ドアの開閉やマテリアルの切替などがあるので、
FBXをそのまま利用するより素材としてセットアップした方が良い。
Modeler を立ち上げセットアップを行う。
第1回で作成した仮モデルの素材を更新せず、新規で作成する。
(クリスタで仮モデルの置換を行うには、別素材である必要あり)
FBXの読込
右のオブジェクト構成でノードタブを選択。
下の「ファイルから追加」でFBXを読込む。
仮モデルと違いテクスチャが付いた状態で読込まれる。
マテリアルのセットアップ
右のオブジェクト構成でマテリアルタブを選択。
マテリアルを見ると同じ材質が複数存在する。
下の「同一材質をマージ」で整理する。
このモデルでは、ドア開閉でテクスチャを別に用意している。
マテリアルをドアオープン、ドアクローズの2つ用意する。
初期マテリアルをドアオープンに
下枠のオブジェクト情報に移りサムネイルを撮影。(NoImageをクリック)
初期マテリアルはドアが開いた状態なので、名前を「ドアオープン」に。
(※鍵をかけるとオブジェクト情報に表示されなくなるので注意)
サムネイル撮影のカメラ操作
サムネイル撮影でのカメラ操作は本操作とは違い
左ドラッグで回転、中ドラッグで平行移動、右ドラッグで前後移動。
(本操作もこれにしてくれないかな…随分ましになるのだが)
マテリアル複製してドアクローズに
オブジェクト構成の「ドアオープン」を選択して、下の「ノードの複製」を実行。
名前を「ドアクローズ」。
ドアクローズのフォルダを開いて、テクスチャを変えるマテリアルを選択、
下の情報の画像部分をクリックするとテクスチャファイルを読込めるので、
ドアクローズ時のテクスチャを選択する。
全てのマテリアルの変更が済んだら、サムネイルを撮影して完了。
可動オブジェクトのセットアップ
トイレBOX(個室)2番のドアが開閉する。その可動設定を行う。
可動設定を行わなくてもドアの回転はできるが、操作が簡単になるのと可動範囲を限定するために設定する。
可動オブジェクトの選択
稼働するオブジェクトを選択状態にする。
これはオブジェクト構成のノードから選択できる。
トイレBOX2のドアを選択。
可動オブジェクトに追加
オブジェクト構成の可動タブを選択。
可動フォルダを開いてから下の追加ボタンを押す。
オブジェクト情報に移りサムネイルを撮影、名前を「ドア開閉」。
1. バーを最後の位置に動かす
2. ドアを回転させる(パーツ移動でドアを閉じた位置まで回転)
3. キーを追加
これでバーを動かすとドアが開閉する。
オブジェクト基本設定
このオブジェクトのサムネイルとクリスタでの表示設定を行う。
オブジェクト構成でスケッチタブを選択。
オブジェクト情報に移り
・サムネイル撮影(素材のサムネイルになる)
・名前を「女子トイレV2」
このモデルはライトや陰影をテクスチャにベイクしているので、
光源の影響をOFF、水平面に影を落とすOFF、
また輪郭線も必要ないのでOFF にする。
クリスタ素材として登録
クリスタの素材パレットに登録する。
ファイル > 「新規素材として登録」するとダイアログが開く。
オブジェクトの名前を「女子トイレ V0」、サムネイルは NoImage、
素材保存先を決めて登録。
CLIP STUDIO を立ち上げて素材管理に素材があるか確認する。
クリスタでの作業
素材セットアップの効能
素材セットアップでクリスタでどうなるか図示。
マテリアル
可動オブジェクト
仮モデルの置き換え
仮モデルを本番モデルに置き換える作業は意外に簡単。
仮モデルの3Dレイヤーを選択、仮モデルのコマ枠に素材ドラッグドロップ。
(3Dレイヤー選択は必要ないかも)
オブジェクトリストを開き、仮モデルを選択して削除。
無事置き換え完了。
面倒なカメラ設定周りを行わずに済むのは本当に助かる。
手描きの必要な場所
鏡の映り込みは手描き修正
鏡の映る角度毎にテクスチャをベイクしようと考えていたが、
流石に面倒になって適当に手描きした。
人物の落す影は手描き
適当に乗算で影を描く。
最後に
Blender でのテクスチャベイクからクリスタに持ってくる流れを
書いた記事が見当たらなかったので、実に苦労した。
誰かの参考になれば幸いである。
(恐らく未来の自分が忘れて参考にするのである)