【Blender】ボロノイ構造のオブジェクトを作る方法

今回の記事では、ボロノイ構造のオブジェクトを作る方法を紹介します。
なんとなく生き物の細胞のようにも見えるこの図形を使用すると、チーズから近未来的な建造物の一部など、さまざまなオブジェクトを作成することができます。
それでは早速作ってみましょう。

使用しているBlenderのバージョン:2.92.0

ボロノイとは

ボロノイ図という名前で知られていて、この図形のことをボロノイ図形と呼びます。
これは、平面上にランダムに配置された複数の、最も近い点同士の距離によって領域分けされた図で構成されています。複数の点同士が近いとその分図形は小さくなり、距離が離れていると図形は大きくなります。
領域同士の境界線=ボロノイ図の辺になっています。

ボロノイ図(Wikipediaより)

ボロノイ図(Wikipediaより引用/Author:Mysid (SVG), Cyp (original))

社会ではこの図を地図に用いて学区や新規店舗の位置などを決めるそうです。
自然界ではキリンの模様やトンボの羽など、生き物にボロノイ図形を発見することもできます。

Blenderを使って作ってみよう:マテリアル編

マテリアルとして使用する場合は「ボロノイシェーダー」で作成します。
まずBlenderを開き、キューブを選択した状態でマテリアルプロパティからNewをクリックします。

マテリアルプロパティ

マテリアルプロパティ

すると新しいマテリアルが作成されるので、Base Colorの黄色い丸→Voronoi Textureを選択します。

Voronoi Texture

Voronoi Texture

このままだと特に変わってないように見えますが、上部タブからShadingを選択するとプレビューを見ながら詳細設定ができます。

色が変わっている

色が変わっている

画面下のシェーダーエディターにあるVoronoi Textureノードで詳細設定をしましょう。

Voronoi Texture

Voronoi Texture

シェーダーエディターでは、さまざまな要素同士を組み合わせることでひとつのマテリアルが作成できます。
ノードと呼ばれる長方形の項目についている丸をクリックし、別なノードの丸へドラッグ&ドロップでノード同士を繋げられます。

Dimensions

図形が反映される次元です。
立体的なオブジェクトに使う際、基本的に3Dで良いでしょう。

Dimensions

Dimensions

Feature Output

ノードの計算によって決まる図形の種類です。

Feature Output

Feature Output

F1 最も近い点同士の距離で作成される図形
F2 2番目まで近い点同士の距離で作成される図形
Smooth F1 F1がぼやけたバージョン

Distance to EdgeとN-Sphere Radiusを使用する場合、一旦ノードが切断されてキューブが黒くなります。
今回の説明ではBase Colorに繋ぎ直していますが、これを別なノードに繋ぐことにより、表面の見た目の模様ではなく凹凸で表現することもできます。
次の段落でその方法を詳しく説明しています。
Distance to EdgeとN-Sphere Radius

Distance to EdgeとN-Sphere Radius

Distance to Edge ボロノイ図形の角までの距離
N-Sphere Radius 図形に内接しているN次元球の半径

Scale

図形の大きさです。
値が小さいと図形一つあたりが大きくなります。

Scale

Scale

Randomness

図形のランダム具合を決定できます。
0で完全なグリッド、1でボロノイに変化します。

 

Randomness

Randomness

Voronoi Textureで表面に凹凸を作りたいのであれば、Principled BSDFのBase ColorではなくMaterial OutputのDisplacementへ繋ぎます。
Base Colorはその名の通り表面の色設定で、Displacementはテクスチャの情報を使用して面自体に凹凸があるかのように表現させる技術です。

Material Output

Material Output

この時点で既に反映されていますが、Powerというノードを2つのノードの間に挟むと凹凸加減を調節できます。
PowerはMathという数式ノードの中にあります。
そのためまずはノードエディター内で[A]キーを押し、出てくるメニューのSearch部分に「Math」と入力します。

Add

Add

Mathを選択したらそのまま挟みたい場所へカーソルを動かし、クリックすると自動でノードが接続されます。
その後、Math内のAddからPowerを選択します。
Exponentの値を変更すれば凹凸加減の調節ができます。

 

Math→タブからPowerを選択

Math→タブからPowerを選択

Blenderを使って作ってみよう:オブジェクト編

表面の凹凸ではなくオブジェクト自体をボロノイ構造にする場合、Voronoi Textureとは別の方法で行います。

元々Blenderに備わっているCell Fractureというアドオンを有効化しましょう。
左上の3DビューポートアイコンからPreferencesを選択し、画面を切り替えます。

Preferences

Preferences

右上の検索欄に「Cell Fracture」と入力し、出てきたアドオンにチェックを入れます。

Cell Fracture

Cell Fracture

再度左上のアイコンから3Dビューポートに戻ったら、オブジェクトを[Shift+A]で新規作成します。

マテリアル編で使用したキューブを使う場合、設定したマテリアルは別なものに変更しましょう。

×をクリックしてマテリアル割り当て解除

×をクリックしてマテリアル割り当て解除

キューブを選択した状態で[tab]キーまたは左上から編集モードに切り替え、[A]キーで全選択します。

そして右クリック→Subdivideで細分化します。

Subdivide

Subdivide

左下のオプションからNumber of Cutsの値を変更し、さらに細かくします。

Number of Cuts

Number of Cuts

[tab]キーまたは左上のアイコンから再びオブジェクトモードに切り替えて、Object→Quick Effects→Cell Fractureを選択します。

Cell Fracture

Cell Fracture

メニューが出たら以下の部分を変更します。

Cell Fracture

Cell Fracture

OKをクリックすると、キューブがどんどん細かく分裂していきます。

Cell Fracture

Cell Fracture

完了したら、元のキューブのみを選択→Xで削除します。

Xで削除

Xで削除

分裂したキューブを全て選択し、右クリック→Joinで統合します。

右クリック→Join

右クリック→Join

ひとつのオブジェクトになりましたが、まだそれぞれの破片の頂点同士が重なり合っている状態です。

これらの重複している頂点を削除します。
エディットモードでMESH→Clean Up→Merge by Distanceを選択します。

Merge by Distance

Merge by Distance

左下の値を0.02mに変更します。
ここで設定する数値よりも近い距離同士の頂点が結合されます。
オブジェクト自体の形が変わりすぎないよう様子を見て調整しましょう。

Merge by Distance

Merge by Distance

完了したら、今度は上部の同じMeshメニューからLimited Dissolveを選択します。
これで、余分な頂点と辺を削減できます。

Limited Dissolve

Limited Dissolve

画面右のモディファイアプロパティからAdd Modifier→Wireframeを選択します。

Add Modifier

Add Modifier


Wireframe

Wireframe

オブジェクトモードに切り替えるとプレビューが表示されます。

Wireframe

Wireframe

なめらかにする為、Add ModifireからSubdivision Surfaceを追加します。

Subdivision Surface

Subdivision Surface

Levelsの値を増やすとさらになめらかになります。

Subdivision Surface

Subdivision Surface

WireframeとSubdivision SurfaceのApplyをクリックして適用したら完成です。

Apply

Apply

ポリゴンが増えるとデータが重くなりがちです。
STYLYへアップロードする前にAdd ModifireからDecimateを追加し、ポリゴンをできるだけ減らすと良いでしょう。

Decimate

Decimate

オブジェクトモードでDecimateのプレビューを見ながら値を調整します。

RatioでどれくらいDecimateを適用するか調節できる

RatioでどれくらいDecimateを適用するか調節できる

STYLYにアップロードする方法

3DモデルをSTYLYにアップロードしてみましょう。

STYLYアカウントを作成する

アカウント作成方法

STYLYにアップロードする方法

UnityからSTYLYにアップロードする方法