Open7

Blenderの勉強記録

Koki IbukuroKoki Ibukuro

Blender移行を決めた理由

今まで3DソフトはCinema4D, MODO, Houdiniなどど触ってきましたが、

  • Win/Mac間どっちでも開発するのにライセンス移したり、
  • パソコン買い換えるたびにライセンス移したり、
  • とは言え、プロジェクトによって、使う使わないのムラがあるのでサブスクにするのももったいない。(実際Houdiniは1年しか使わなかった)

などの不満があり、ずっと古いC4Dを使い続けていたけど、今回新しいPCにはC4Dは入れずにBlender完全移行を目指すことにしました。なので勉強の記録を残します。

Blender移行を決めた理由

  • ユーザー規模がでかい。
  • YouTube・Twitterでいっぱい事例が見れる
  • オープンソース

とありますが、一番は

  • Geometry Nodesで結構プロシージャルなモデリングができるようになってきた!

です。Houdiniは言わずもがな、C4DのMoGraphの操作感も好きで、プロシージャル前提で組んでいたのでGeometry Nodesはありがたい。まだまだHoudiniに比べるとできることは少ないけど今後に期待ということで、学んだことのメモを残します。

基本的にはゲームエンジンUnityで使うこと前提の知識に偏っていくとおもいます。

対応バージョン

現在 3.4.1

Koki IbukuroKoki Ibukuro

勉強ソース

キャラなどのモデリングをする予定はないので、Modifier一覧が非常に嬉しかった。一度見ておくと見通しが立ちやすい。
https://www.youtube.com/watch?v=idcFMhoSdIc

とりあえずHoudini神でもある、Entagmaさんが上げてくれているYouTubeのリストが自分のやりたいことにちかいのでこれを勉強する所存
YouTubeのvideoIDが不正ですhttps://www.youtube.com/@Entagma/playlists

順次追加予定

Koki IbukuroKoki Ibukuro

環境設定系

Developer Extrasは有効に

Vertex ID見れるの便利だが、どうやって見れるようにするのかわからなかった。調べると、
Blender Preferences → Interfaces → Developer Extras
を有効にするとViewPort OverlaysでIndicesというオプションが登場するらしい。

Koki IbukuroKoki Ibukuro

書き出し設定

最初Blenderで吐き出したFBXをUnityで読み込むときに色々問題があったが、ExperimentalなApply Transformを有効にするとすんなり読み込めるようになった。

今のところこれが良さそう。

読み込み設定

反対に読み込み設定として、気をつける点は少ないがBake Axis ConversionはデフォルトではOFFだが、有効にしておくと、Z軸の反転を直さなくていいので、楽!C4Dのときも毎回起きていたけど、いつからついたオプションなのか?

Koki IbukuroKoki Ibukuro

Geometry Nodesで作ったやつのUVMapの扱い方

Geometry Nodesのチュートリアルの多くは、UVはカスタムAttributeに入れて、Shader側でAttributeからUVを読み込む事例が多い。でもこれだとBlender上は正常に見えるが、3Dモデルに書き出したときに、UV mapは書き出されない。

正しい方法はこの動画↓
https://www.youtube.com/watch?v=tqoIyfKuGK4

  1. Geometry NodesモディファイアをApplyでメッシュにBake
  2. Object Data Properties → Convert Attributes → UVMap でカスタムAttributesからUVMapへ変換する。

これで、書き出したモデルにきちんとUVMapが入るようになる。
この辺は近い将来のアップデートで直接Geomety NodesからUVMapをいじれるようになると良いな。

Koki IbukuroKoki Ibukuro

Geometry Shaderを使わないでワイヤーフレームの作り方

Unityでのワイヤーフレーム表示の方法は

  • MeshTopology.Linesでメッシュの表示方法自体を変更。keijiro さんのMetaWireなどで簡単に変更できますね。
    • この方法は一番簡単だけど、線の太さをいじれないなど、限定されたケースでしか使わないかも
  • Geometry Shaderでやる。GitHubではURP-Geometry-Shader-Exampleがよさそうでした。
    • 良い手法だが、Geometry Shader対応してないPlatformでは動かない
  • UVのトリックを使う。→ 今回の手法

基本はこれ。
https://www.youtube.com/watch?v=TAv-10FSBqc

UVをこういうふうにすれば、縁からと対角線からの距離で、Wireframeの線を引けるよ。というもの。仕組みがシンプルなので、shader graphにもcustom funcitonとして組み込みやすい。

…とほぼUnityの解説になってしまっていますが、

このUVを作るのはただ、UVメニューからResetを押すだけ! これだけです。Blender初心者過ぎてこの動画に出会うまで一時間以上調べてしまった…。

またメインのUVとは別に格納することも簡単だった。

Koki IbukuroKoki Ibukuro

Geometry Notes

途中の結果をプレビューするには

プレビューしたいノードをctrl-shift クリックでviewerノードがそこに移動して見れるようになる。