グリースペンシルから木の枝を作成する手法を考えてみる

Blender内でシーンを作る場合に樹木のモデル必要になることがあると思います
皆さんはどうしていますか？
ジェネレーターのアドオンもあるのでそういったものを利用するでしょうか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/3c31314e-479d-7fed-5c87-c6331732780c.png)


自動生成ではなく　シーンに合わせた枝ぶりが必要になった場合
Blender2.8以降ではGreasePencilがオブジェクトのように扱えるようになったので
それを利用する人もいるかもしれません、けれど

- 樹皮のテクスチャを入れたい
- VR用等他の環境にエクスポートしたい  

といった用途の場合には そのままでは利用できませんね。
今のところグリースペンシルからメッシュにするには少し手順があるので試してみました。

## グリースペンシルで枝を描く
まずはグリースペンシルで木を描いて
設定に少し触れたいと思います



木の枝を描く時は幹になるような枝を描いて枝を増やしていくかと思いますが
「ストロークの基準」のオプションをストロークにした上で
幹との交差部分から描く場合にはターゲットを**最初のポイント**
枝先から描いて交差部分まで描く場合には**最後のポイント**をオンにすると
描画後　３D上で自動調整されて幹とうまく交差するストロークが描けます。
![21120501.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/95be22b9-fc2b-32ad-191c-176a3e63e49a.gif)
グリースペンシルはブラシの一発描きだけでなく　描いた後にもストロークや太さが編集できるのも木を作るのに向いていますね

編集モードではストロークが連続したポイントで作られているのが分かるかとおもいます
このポイントを一個一個移動させるのではなくプロポーショナル編集で形を整えるのが楽です
![21120502.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/273e2309-8198-af02-917d-a5ee016c1aaa.gif)

## メッシュへの変換
### グリースペンシルからカーブに
グリースペンシルをメッシュに変換したい場合、一旦カーブに変換する必要があります。
今回はオブジェクトメニューの変換の**ポリゴンカーブ**を使用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/b054651a-9111-adf0-da74-7d6bcb984383.png)
「ベベル深度」は半径の大きさ　「ベベル解像度」は断面の形状を決める設定です
ベベル解像度0で断面が四角形　解像度1で六角形　2で八角形となります
ベベル深度やベベル解像度はカーブ変換後のオブジェクトデータプロパティの項目でも再調整できます

因みに「ポリゴンカーブ」への変換ではカーブのベベル深度等の設定が自動設定されますが
外のスプラインのタイプを指定した場合には手動で設定する必要があり
カーブのコントロールポイント間が分割も調整が必要になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/c79e3521-236a-e2fb-de71-e5aa41d17c06.png)


### カーブからメッシュに
カーブの変換の後にさらにオブジェクトメニューの変換でメッシュに変換します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/60263991-8177-cf18-994c-06664a663dcc.png)
ポリゴンカーブの設定ではオブジェクトの見た目そのままに変換されます。
（キャプチャの左は変換前のポリゴンカーブ）

グリースペンシルからポリゴンカーブそしてメッシュへの変換なら、
チューブ状の比較的扱いやすくポリゴン数も抑えられた形状になるのではないかなと思います。
### UVについて
ベベルをつけたカーブから変換したメッシュは　円筒状に開いたUVが設定された状態になります
シームはつけられていないので
UVエディタ上でメッシュを選択して　**アイランドによるシーム**を実行して
一旦現在の展開状態でシームを設定しておくといいでしょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/b05b8087-2a35-8a12-9c08-a723c4c7fa93.png)
プリミティブ形状等で、’最初から開かれてるUVの境界でシームを入れられる便利な機能です。
改めてUV展開するとこんな感じになります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/c2f443a0-2be7-abe4-e01c-aeec59b2151c.png)

## 1シェルなメッシュへの変換
これまでの変換では　いわゆるチューブ状形状「ぶっ差し」でしたが
１つのつながったメッシュにしたいということがあるかもしれないので ブーリアンを利用した設定も書いておきます

カーブからメッシュに変換する段階の話に戻ります
カーブのベベル形状は　デフォルトでは端が閉じられていない形状になっています。
ブーリアンを正常に行うために　「端をフィル」をチェックして蓋をした状態にします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/fd60b432-e5d4-da3c-758d-139bc938f37f.png)

Blender2.9になってから　ブーリアンのモディファイア設定に「自分自身（self）」の設定が加わったので
ブーリアン計算時に　モディファイアのある形状自身の交差も整理することができるようになりました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/483c0386-567a-743e-ba2e-ba5eeee16e5d.png)
ただし、このモディファイアでは他のオブジェクトを指定していない状態では計算がされないので
ダミー形状を指定する等ひと手間かかりました。

それとは別に2.93から搭載されたジオメトリノードにも　ブーリアンのノードが搭載されていて
同様に「Self Interdection」の設定があるのでそちらを使うのもよいかもしれません。’
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/31e8adb3-1436-dbc0-9d05-2d117cccf202.png)

木の枝について試してみましたが　どうでしょうか
何かの参考になればと思います

葉っぱについては　ヘアパーティクルを使って　枝先に頂点ウエイトを設定して密度に使うことを試していますが　模索中といった段階です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/806091cd-20e8-53be-6353-b1e8015a06bf.png)