【Blender】画像を3Dモデルに転写する・画像をメッシュにProjectする

顔に画像を貼り付けるというやつ

手順解説

UV展開する

顔・頭のオブジェクトを選択し、UVEditorを開く。
全選択した状態で、ProjectFromViewを実行してUV展開する。

左画面はこんな感じになる。

さらに左画面のImage – Openで貼り付けたい画像を準備する。

マテリアルを準備

頭オブジェクトを選択してShaderEditorを開く。
PrincipleBSDFのベースカラーに ImageTextureNodeを接続し、UV展開のときに使った画像を割り当てる。
向きはぐちゃぐちゃ

UVの調整

UVEditorに戻り、右画面をMaterialPreviewにする。

左画面でとりあえず全選択し、大雑把な頭の位置にUVを移動させる。
画像とモデルの造形が近似しているなら特に困ることはないが、していなかったので、とりあえず鼻とかを基準に合わせた。

プロポーショナル編集をアクティブにして、パーツごとに調整していく。
動画では鼻から合わせていた。

調整後

新しくUVを作成し展開する

頭オブジェクトを選択し、ObjectDataPropertiesを開く。
UVMapsのプラスアイコンで新規にUVを作成しする。(上のは古いやつ、下が新規)

そしたら新しい方を選択(背景が明るくなる)する。ただこの時点でカメラアイコンは切り替える必要なし

そしたらUVEditorを開き、SolidPreviewモードにし、ColorをObjectにする。

後はUV展開をしていくが、今度はSeamを入れて丁寧にやる。
辺選択でシームを入れたい箇所を選択したら、Ctrol +E - MarkSeamを実行する。
左右対称のオブジェクトなら、そのままCtrol+ Shift + Mキーで ミラー選択を行い、そこにもシームを入れる。

できたら全選択、UV - Unwrap を実行する。
左ウィンドウはこんな感じ。

画像はもういらないので、上のツールバーのバツボタンで消す。
さらに回転させるなどして整えておく。

テクスチャを準備

左画面の Image – new と進み新規に画像を生成する。
サイズを変更して生成する(GeneratedTypeはUVgridでなくてもOK。後々のことを考えて大きめにしたほうがいい4096px)。

できたらSaveAsで名前をつけて保存する(テクスチャAとする)。

テクスチャペイント

TexturePaintモードを開く。
左画面には上で作ったテクスチャAを開く。

右画面に移動し、Toolを開く。
ModeをSingleImageに変更し、下にはさっき扱ったテクスチャAを割り当てる(ここに転写する)。
更にその下の項目には新しく作った方のUVを割り当てる。

クローンブラシを選択する。

ToolのAdvancedを開き、CloneFromPaintSlotをアクティブにする。
そしたらここでは一番はじめに使った転写元の画像を選択し、その下UVの箇所には古い方のUVを割り当てる。

後はブラシで塗っていくと、転写できる。
できたらテクスチャを保存する。

ProjectFromViewだと後ろはこんな感じになってしまう。
なので後ろは塗らなくても良い。

テクスチャを使用してみる

ObjectDataPropertiesのUVMapsを開き、新しい方のUVを選択し、さらにカメラアイコンもオンにする。

シェーダーエディタを開く。
ImageTexureノードを出し、さっき転写したテクスチャAを割り当てる。
表示されればOK

テクスチャペイントで修正する

専用の画像を使用しない場合、どうしても下のように髪の毛だったりが入り込んできたり、一方向はよいものの他の部分は破綻してしまうということが起こる。

クローンブラシで修正

修正方法は色々あるのだろうが、手っ取り早いのは、クローンブラシなどを使用して行う修正だろう。
①Ctrol + 左クリックでクローン元になる箇所に3Dカーソルを配置する。
②左クリックでクローン先をぽちぽち塗っていく。

これは細かい修正に向いている、が範囲の広いエリアを修正する場合面倒くさい

Stencil機能で修正する

例えばテクスチャAの頭皮部分に髪がのってしまっているので、そこを肌の感じで修正したいという場合、テクスチャAそのものを使って修正するという事ができる。

①テクスチャAを複製して名前を変更しておく(ブラシ用テクスチャとする)。

①SettingのTexureでNewを実行し、Mappingの箇所をStencilに変更する。

②TexurePropertiesでNewを実行し、Openの箇所にブラシ用テクスチャを割り当てる。

③もう一度Settingに移動し、ImageAspectとRectTransformを押す。

④この状況でテクスチャペイントの右ウィンドウにカーソルを入れると、ブラシ用テクスチャがオーバーレイ表示されるはずなので、後は使用したい部分を塗りたい箇所が重なるようにして塗っていく。
・テクスチャの移動 – 右クリック
・テクスチャの拡大 – Shift + 右クリック
・テクスチャの回転 – Ctrol + 右クリック

ブラシの色は白にしておくこと

例えば、下の部分を肌として塗りたい場合。

頬の部分のテクスチャを使って塗っていくというふうに作業を進める。

こんな感じに塗れる。

流れで解説

とはいえ、この方法でもやはりノイズを取り除くのは難しい。やってみた感じでは、
①肌のキメや体毛などはこの方法で写し取るのは困難なので、肌の色調、血色とかに限定して写し取っていく。ベタ塗り感やむらが出るのはある程度スルーして進める。

②クローンブラシなどでムラやベタ塗りを修正する。テクスチャを重ねると管理しやすい。
上のImageTextureがベタ塗りしたやつで、下がオーバーレイ。MixColorノードで重ねて、Basecolorに接続する。特にオーバーレイ側のテクスチャは、生成する際に背景を透過にしておく。

背景透過テクスチャで消したい場合はEraseAlphaを使用する。

③肌のキメなどはノーマルマップなどを使ってどうにかする。
マッピング専用の画像なら別だが、今回のように一枚の画像からという場合にキメの表現まで転写するのは流石に厳しい。

具体例2ーーポリゴンで作られた髪の毛に画像を転写する

ポリゴンで作られた髪の毛に画像を転写のメモ

髪の部位ごとに頂点グループを作成

髪の流れの向きが部位ごとに違うので、いくつかに分け、それぞれ頂点グループに登録する。
今回は編み込み部分・後ろ・横・前髪の4つ。

画像を当てていく

やはり部位ごとに作業を進めていく。
UVEditorを開き、頂点グループから任意で選び、視点を調整してProjectFromViewを実行。
左画面には割り当てたい画像を出しておく。
ShaderEditorでその画像をつなぐ。

再度UVEditorで位置調整。

右画面をMaterialPreviewにし、Tabキーを押すことで出来具合を確認できる。

例えばサイドパーツの場合、横向きにしてProjectFromViewを実行する。

最後全選択で変な位置にあるやつがないか確認。

今回の髪型だと一枚でやるのきつそうだったの、まず編み込みの部分と上の部分とでマテリアルを分けることにした。

画像を割り当てる

とりあえず編み込み部分からやっていく。

編み込みに割り当てたマテリアルを選択し、下のSelectで当該頂点を選択、視点を整えたら、ProjectFromViewを実行しUV展開する。

左画面に転写したい画像を出しておく。

ShaderEditorで編み込みのマテリアルに上で出した画像をつなぐ。

再度UVEditorに移動し、調整する。

テクスチャを作成

新しくUVMapを作成し選択しておく(カメラはアクティブにしなくて良い)

UVEditorを開き、左画面の画像を消し、Newからテクスチャを作成、SaveAsで保存しておく。
そしたら右画面で全選択し、Unwrapする。(今回は板ポリで作られた髪なのでシームとかは入れないでSmartUnwrap)

次いでテクスチャペイントモードを開く。
左にさっき作った画像を配置。

右画面に移り、SolidPreviewにしてObjectにする。

クローンブラシを選択する。
Strengthは100にしておく。

ToolタブからModeをSingleImageに変更。
下にはさっき作った転写先にするためのテクスチャを配置(まだ何も描写されてないやつ)
その下、UVの箇所には新しく作った方のUVMapを配置する

その少し下にある、CloneFromPaintSlotをアクティブにする。
SourceCloneImageには転写元の画像を割り当てる。
UVの箇所は古い方を。

後はオブジェクトを塗っていけば転写される。
ベイク先を透過画像だと、はじめは透明になっているが、塗れば表示されるはず(WireFrameプレビューにするのもOK)。

板ポリで作られた髪なので、メッシュが重なっており、塗るのが難しい。
外側を塗れたら、塗った箇所を選択してCotrol +i で選択反転、 Shift +H で 塗った箇所のメシュを非表示にして、塗り残しがないようにしたい。
また作った頂点グループごとに表示非表示を切り替えて塗るのも効率的だろう。

塗れたら、ShaderEditorを開く。
UVMapを新しい方をアクティブにする。

ImageTexureNodeに作ったテクスチャを当てて、ちゃんと表示されればOK。

実際は画像のように変な部分が生じてしまうので、さらに塗ったりクローンブラシを使ったりして修正していく。
あるいはこの上に板ポリやヘアシステムを重ねてリアル感を出すというのもあり。

タイトルとURLをコピーしました