見出し画像

メッシュ(&シェーダー)の共有について

同じ形状のブロックでも色が違うと別メッシュになっているのは無駄が多いのでは?と思い、メッシュ (&シェーダー) の共有について調べました。

現状

メッシュを編集しても同じ色のオブジェクトにしか反映されません。
LDraw を直接取り込んでも Mecabricks を経由させても同じです。

画像2

Blender はメッシュの子としてマテリアルが紐づく仕様のため、オブジェクト毎にメッシュとマテリアルの組み合わせを変更できないようです。

画像2

シェーダー改造

Mecabricks のシェーダーを見てみると、色の異なるブロックでも Color 以外は同じ構成です。

この Color をオブジェクト毎に切り替えればシェーダーを共通化でき、メッシュを共有できそうです。

画像3

そこで Object Info ノードを追加して Color を繋ぎます。

画像4

この Object Info の Color の値は Object Properties の Viewport Display の中にある Color です。
これを元のシェーダーと同じ色に設定します。

画像5

メッシュ共有

改造したシェーダーが紐づいているメッシュを同じ形状のブロック全てで共有します。

メッシュの切り替えは Object Data Properties の一番上のボタンから行います。

画像6

Outliner で確認すると、下図のように別オブジェクトでも同じメッシュ、同じシェーダー (マテリアル) が適用されているのが分かります。

画像7

レンダリングすると、きちんと元と同じ色になりました。
※上段:元のシェーダー、下段:改造したシェーダー

画像8

このようにメッシュを共有しておけば、形状をブラッシュアップするのも楽ですし、メモリ消費も抑えられるはずです。微々たるものかもですが。

またシェーダーを共通化しておくと、エフェクト等で遊びやすくなります。これはまた別記事で紹介します。

おまけ

Solid Viewの表示設定について。

Solid View はデフォルトではマテリアルの色で表示されます。
( Material Properties の Viewport Display の Color )
そのため今回のようにマテリアル (シェーダー) を共通化すると見分けがつかなくなります。

画像10

そこで表示設定を変更します。
 Viewport Shading 右端のボタンで設定を開き、Color を Object にします。

画像11

するとオブジェクトの色で表示されるようになります。
( Object Properties の Viewport Display の中の Color )

画像11



参考にしたチュートリアル動画です。


この記事が気に入ったらサポートをしてみませんか?