今回の記事では、ボロノイ構造のオブジェクトを作る方法を紹介します。
なんとなく生き物の細胞のようにも見えるこの図形を使用すると、チーズから近未来的な建造物の一部など、さまざまなオブジェクトを作成することができます。
それでは早速作ってみましょう。
使用しているBlenderのバージョン:2.92.0
ボロノイとは
ボロノイ図という名前で知られていて、この図形のことをボロノイ図形と呼びます。
これは、平面上にランダムに配置された複数の、最も近い点同士の距離によって領域分けされた図で構成されています。複数の点同士が近いとその分図形は小さくなり、距離が離れていると図形は大きくなります。
領域同士の境界線=ボロノイ図の辺になっています。
ボロノイ図(Wikipediaより引用/Author:Mysid (SVG), Cyp (original))
社会ではこの図を地図に用いて学区や新規店舗の位置などを決めるそうです。
自然界ではキリンの模様やトンボの羽など、生き物にボロノイ図形を発見することもできます。
Blenderを使って作ってみよう:マテリアル編
マテリアルとして使用する場合は「ボロノイシェーダー」で作成します。
まずBlenderを開き、キューブを選択した状態でマテリアルプロパティからNewをクリックします。
すると新しいマテリアルが作成されるので、Base Colorの黄色い丸→Voronoi Textureを選択します。
このままだと特に変わってないように見えますが、上部タブからShadingを選択するとプレビューを見ながら詳細設定ができます。
画面下のシェーダーエディターにあるVoronoi Textureノードで詳細設定をしましょう。
シェーダーエディターでは、さまざまな要素同士を組み合わせることでひとつのマテリアルが作成できます。
ノードと呼ばれる長方形の項目についている丸をクリックし、別なノードの丸へドラッグ&ドロップでノード同士を繋げられます。
Dimensions
図形が反映される次元です。
立体的なオブジェクトに使う際、基本的に3Dで良いでしょう。
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 | 図形に内接しているN次元球の半径 |
Scale
図形の大きさです。
値が小さいと図形一つあたりが大きくなります。
Randomness
図形のランダム具合を決定できます。
0で完全なグリッド、1でボロノイに変化します。
Voronoi Textureで表面に凹凸を作りたいのであれば、Principled BSDFのBase ColorではなくMaterial OutputのDisplacementへ繋ぎます。
Base Colorはその名の通り表面の色設定で、Displacementはテクスチャの情報を使用して面自体に凹凸があるかのように表現させる技術です。
この時点で既に反映されていますが、Powerというノードを2つのノードの間に挟むと凹凸加減を調節できます。
PowerはMathという数式ノードの中にあります。
そのためまずはノードエディター内で[A]キーを押し、出てくるメニューのSearch部分に「Math」と入力します。
Mathを選択したらそのまま挟みたい場所へカーソルを動かし、クリックすると自動でノードが接続されます。
その後、Math内のAddからPowerを選択します。
Exponentの値を変更すれば凹凸加減の調節ができます。
Blenderを使って作ってみよう:オブジェクト編
表面の凹凸ではなくオブジェクト自体をボロノイ構造にする場合、Voronoi Textureとは別の方法で行います。
元々Blenderに備わっているCell Fractureというアドオンを有効化しましょう。
左上の3DビューポートアイコンからPreferencesを選択し、画面を切り替えます。
右上の検索欄に「Cell Fracture」と入力し、出てきたアドオンにチェックを入れます。
再度左上のアイコンから3Dビューポートに戻ったら、オブジェクトを[Shift+A]で新規作成します。
マテリアル編で使用したキューブを使う場合、設定したマテリアルは別なものに変更しましょう。
キューブを選択した状態で[tab]キーまたは左上から編集モードに切り替え、[A]キーで全選択します。
そして右クリック→Subdivideで細分化します。
左下のオプションからNumber of Cutsの値を変更し、さらに細かくします。
[tab]キーまたは左上のアイコンから再びオブジェクトモードに切り替えて、Object→Quick Effects→Cell Fractureを選択します。
メニューが出たら以下の部分を変更します。
OKをクリックすると、キューブがどんどん細かく分裂していきます。
完了したら、元のキューブのみを選択→Xで削除します。
分裂したキューブを全て選択し、右クリック→Joinで統合します。
ひとつのオブジェクトになりましたが、まだそれぞれの破片の頂点同士が重なり合っている状態です。
これらの重複している頂点を削除します。
エディットモードでMESH→Clean Up→Merge by Distanceを選択します。
左下の値を0.02mに変更します。
ここで設定する数値よりも近い距離同士の頂点が結合されます。
オブジェクト自体の形が変わりすぎないよう様子を見て調整しましょう。
完了したら、今度は上部の同じMeshメニューからLimited Dissolveを選択します。
これで、余分な頂点と辺を削減できます。
画面右のモディファイアプロパティからAdd Modifier→Wireframeを選択します。
オブジェクトモードに切り替えるとプレビューが表示されます。
なめらかにする為、Add ModifireからSubdivision Surfaceを追加します。
Levelsの値を増やすとさらになめらかになります。
WireframeとSubdivision SurfaceのApplyをクリックして適用したら完成です。
ポリゴンが増えるとデータが重くなりがちです。
STYLYへアップロードする前にAdd ModifireからDecimateを追加し、ポリゴンをできるだけ減らすと良いでしょう。
オブジェクトモードでDecimateのプレビューを見ながら値を調整します。
STYLYにアップロードする方法
3DモデルをSTYLYにアップロードしてみましょう。
アカウント作成方法
STYLYにアップロードする方法
UnityからSTYLYにアップロードする方法