ken26uの日記

Blender, Excel, その他ソフトのメモを中心にしています

Blender でアウトラインを作る方法を学ぶ LineArt(旧名:LANPR)

はじめに

3Dモデルでアウトラインがほしい時ありますね。

f:id:ken26u:20200802183846p:plain

基本的にはViewport shadingのOutlineで済ませていました。しかし物足りなくなったので調べた結果です。

f:id:ken26u:20200802184015p:plain

尚、冒頭のガチャガチャのアウトラインはLineArtという機能のものです。

参照元

www.youtube.com

アウトラインを得る方法

  • FreeStyle
  • 背面法(Inverted Hull)
  • compositor から行う方法(メモ無し)
  • LineArt(旧名: LANPR)

この記事ではFreeStyle と 背面法 は触り程度にしています。というのも動画を見た感じの熱量でいうと最後のLANPRに一番熱が入っていて、私としても一番近道をしたいので直でLANPRを選びます😃。 なのでLANPRは Windows 10ですがインストールを行い簡単にまとめています。

FreeStyle

  • 特徴
    • 最も有名で一般的な方法
    • Eevee でも Cycle でも使える
  • Advantage(利点)
    • Cycle時だと FreeStyle のみ有効にしてレンダリングしたりできる(らしい)
  • Drawback(欠点)

有効にする手順

  • Render PropertyのFreeStyleにチェックを入れる

f:id:ken26u:20200802183911p:plain

設定画面

f:id:ken26u:20200802184022p:plain

背面法(Inverted Hull)

  • 特徴
    • マテリアルでアウトラインを作成する
    • Eevee でも Cycle でも使える
  • Advantage(利点)
    • 簡単
  • Drawback(欠点)
    • アウトラインしたいオブジェクト全てに設定する必要があり時間がかかる
      • この手順を簡単にするアドオンがある模様 gumroad.com
    • 外側に法線が向いているマニホールドメッシュである必要がある
      • 🤔マニホールドってなんだろう?という事で最後のメモに調べたメモを残しています。
    • Textなどにもそのままでは適用できないとの事
      • 厳密に言うとメッシュに変換してないテキストはカーブであり、Solidify モディファイアーはカーブ用のものとの事 f:id:ken26u:20200802184058p:plain

設定手順

  1. Solidify モディファイアーを適用する
    • Thickness は線の太さ
    • Flip Normals にチェック
    • Material Index Offsetはマテリアル index を設定
  2. アウトラインの色を設定したマテリアルを作成
    • Backface Culling にチェックを入れる f:id:ken26u:20200802184032p:plain

LineArt(旧名: LANPR)

LineArtとは?

freestyleの代替としてリアルタイムでアウトラインを作るもの

  • Yiming Wu氏開発中
  • 公式サイト? https://www.artstation.com/artwork/9dPPo
  • 特徴
    • おそらく少し躓くが一旦使い方がわかると簡単
  • Advantage(利点)
  • Drawback(欠点)
    • 少し実験的なものに挑戦する姿勢が必要
    • ドキュメントが少しざっくりしている

LineArt インストール

せっかくなのでウィークリービルドから最新版で試します。

ウィークリービルド blender.community

  1. ダウンロード
    f:id:ken26u:20200802184105p:plain

  2. 解凍するとLineArt機能のついた Blender2.91 Alpha でした。

  3. ツールフォルダーへ移動する(これを見て作業している方は自身のツールフォルダーやテンポラリで作業してください)

LineArt 使い方

必要な手順は全て下記動画ありそれを参考に詳細な手順にしています。

www.youtube.com

動画の手順の詳細

  1. Grease Pencilを作成する(`Shift + A'→メニューからBlankを選択) f:id:ken26u:20200802184111p:plain

  2. レイヤーを作成

    • アウトラインはグリースペンシルで描かれる。その描画内容を格納するレイヤー
  3. マテリアル(ペン)を作成

    • アウトラインを描くのに使うペン f:id:ken26u:20200802184117p:plain
  4. Grease Pencil に LineArt モディファイアーを追加 f:id:ken26u:20200802183918p:plain

  5. モディファイアーの設定

    • Source Collection: アウトラインをつけたいオブジェクトが格納されいるコレクション
    • Target Layer: 作成したレイヤー
    • Target Material: 作成したマテリアル(ペン)
    • このパネルについてはこの記事最後のメモで少しまとめています
      • LineArt モディファイアーの設定という項目です f:id:ken26u:20200802183925p:plain
  6. Render Property の Line Art を有効にする

    • 動画には Auto Update にチェックを入れていましたがそのような機能はない模様 f:id:ken26u:20200802183931p:plain

    • 結果
      f:id:ken26u:20200802183938p:plain

    • カメラから見ている角度にラインが作られている。カメラの死角から見ると下記の通り線がない f:id:ken26u:20200802183944p:plain

    • しかしカメラをセットしレンダリングするとそのカメラから見えている部分に線が引かれる。

      • 🤔つまりレンダリング時には常に線が書かれますね。コレクションに入っている限りは。

テストシーン

  • Unreal Engine から拝借したマネキンをおいています。Rigify が適切に行われているのでとても使いやすい。
  • LineArt(ピンク)のフォントはCurve(デフォルト)です
  • LineArt(上段の黒)のフォントはメッシュです。※CurveからMeshに変換処理をしたものです
  • スザンヌとICOSphere
  • 四角い枠はCubeを細分化しWireframeモディファイアーを使っているものです f:id:ken26u:20200802183958p:plain

結果
f:id:ken26u:20200802183901p:plain

😃すごいですね。

もういっちょ

f:id:ken26u:20200802183853p:plain

🤔遮蔽物(オクルージョン)があって辺が見えていない場合は線が描かれないようです

f:id:ken26u:20200802183846p:plain

なめらかにするために欠けているベベルでもなめらかにしすぎると消えますね。 なめらかにする目的などでベベルをかけるならモディファイアーにするなどの工夫が必要かもしれませんね。少しコツがいりそうです。

メモ

LineArt モディファイアーの設定

f:id:ken26u:20200802184008p:plain

Use Contour ~ Intersection までのチェックを変えた例

f:id:ken26u:20200802184123g:plain

manifold メッシュとは?

f:id:ken26u:20200802184043p:plain

下記2つを満たすものはマニホールドメッシュだそう

  • 辺が1つまたは2つの面につながっている
  • 頂点に付随する面は、閉じた扇形または開いた扇形を形成する。

その他関連リンク - Manifold(多様体) ja.wikipedia.org

  • What is non-manifold geometry? マニフォールドジオメトリではないものとは?

blender.stackexchange.com

非マニホールドジオメトリは現実世界では存在しないもの(これは3Dプリンタではマニホールドメッシュである事が重要な理由)

英語メモ

  • Drawback 欠点