今回は以下のような輪郭線制御をblenderで行う設定(モディファイア)について記録します
カメラが遠いと輪郭線が太く
カメラが近いと輪郭線が細く
ポイントだけかいつまむと「頂点ウェイト(近傍)」と「ソリッド化(法線による輪郭線)」のモディファイアを使えばカメラ距離が変化した場合に
追従して輪郭線が変化してくれる設定です
すでにソリッド化で輪郭線が追加できていれば以下をするだけです
1.頂点ウェイト(近傍)モディファイアを追加
2.頂点グループにソリッド化と同じグループを設定
3.ターゲットをカメラに設定
4.近接モードはジオメトリ
5.最低(もっとも近い距離)と最高(もっとも遠い距離)を設定
詳しく説明すると以下の通りです
なぜソリッド化を使うの?
ソリッド化モディファイアは、メッシュを内側や外側に複製して厚みを与える機能です。この厚みを利用して、オブジェクトの「アウトライン」や「縁取り」を表現することができます。
通常、ソリッド化の幅は一定ですが、今回はこの幅をカメラからの距離で変化させるのがポイントです。
準備:ソリッド化の前に必ずやること!
ソリッド化を適用するオブジェクトは、必ずスケールを適用してください。これを忘れると、意図しない太さになったり、不均一になったりすることがあります。
- ソリッド化したいオブジェクトを選択。
Ctrl + A
を押してメニューを開き、「スケール」を選択します。
これで、オブジェクトのスケールがリセットされ、ソリッド化が正確に機能する準備が整います。
ソリッド化の幅をカメラで調整する方法(2つのステップ)
今回は、比較的簡単に設定できる「頂点ウェイトプロキシミティモディファイア」と「ソリッド化モディファイア」を組み合わせる方法をメインでご紹介します。
ステップ1:距離に応じてウェイトを変化させる設定
まずは、オブジェクトの各部分がカメラからどれくらいの距離にあるか、という情報を「頂点ウェイト」という形で記録します。
-
頂点グループの作成
- ソリッド化したいオブジェクトを選択し、データプロパティ(緑色の逆三角形アイコン)を開きます。
- 「頂点グループ」パネルで「
+
」ボタンをクリックし、新しい頂点グループを作成します(例:distance_weight
)。 - オブジェクトを編集モード(
Tab
キー)に切り替え、A
キーですべての頂点を選択します。 - 作成した頂点グループの「割り当て」ボタンをクリックします。これで、すべての頂点に初期のウェイト(1.0)が割り当てられました。
-
頂点ウェイト(近傍)モディファイアの追加
- オブジェクトを選択したまま、モディファイアプロパティ(青いレンチアイコン)を開き、「モディファイアを追加」から「頂点ウェイトプロキシミティ」を選択します。
- ターゲットオブジェクト (Target Object): ここに、シーンのカメラを選択します。
- 頂点グループ (Vertex Group): 先ほど作成した頂点グループ(例:
distance_weight
)を選択します。 - プロキシミティモード (Proximity Mode):
ジオメトリ
または頂点
を選びます。今回はジオメトリ
で問題ありません。 - 最低ウェイト (Lowest Weight): カメラから最も遠いときのウェイト(例:
0.0
)を設定します。 - 最高ウェイト (Highest Weight): カメラに最も近いときのウェイト(例:
100.0
やカメラの遠方クリップ値)を設定します。- この値を大きくすることで、距離によるウェイトの変化範囲を調整できます。例えば、カメラのクリッピング範囲の遠方クリップ(デフォルトでは100m)と同じ値にすると、カメラの有効範囲全体でウェイトが変化します。
これで、カメラから遠い部分はウェイトが0
に近く、近い部分はウェイトが1
に近くなるように設定されました。
ステップ2:ソリッド化モディファイアで幅を調整する
いよいよ、ソリッド化モディファイアを使って、先ほど設定したウェイト情報を幅に反映させます。
-
ソリッド化モディファイアの追加
- オブジェクトに「モディファイアを追加」から「ソリッド化」を選択します。
- オフセット (Offset): アウトラインをオブジェクトの外側に作りたい場合は「
1.0
」に、内側に作りたい場合は「-1.0
」に設定します。通常は1.0
で外側に出すことが多いです。 - 厚さ (Thickness): 基本となるソリッド化の厚さを設定します。ここが、カメラに近づいた時に一番太くなる幅になります。
- 頂点グループ (Vertex Group): ドロップダウンメニューから、ステップ1で作成した頂点グループ(例:
distance_weight
)を選択します。 - 必要に応じて、「均一な厚さ」や「高品質な法線」にチェックを入れると、より滑らかで綺麗な結果が得られます。
-
モディファイアの順番を確認!
- 重要: モディファイアのリストで、「頂点ウェイトプロキシミティ」が「ソリッド化」の上にあることを確認してください。もし逆になっていたら、モディファイアの右側にある矢印ボタンで順番を入れ替えてください。
- 順番が正しくないと、ウェイト情報がソリッド化に反映されません。
これで、カメラを動かして見てみると、オブジェクトがカメラに近づくにつれて線の太さ(ソリッド化の幅)が太くなり、遠ざかるにつれて細くなるのが確認できるはずです!
さらにプロっぽく!アウトライン用マテリアルの設定
ソリッド化された部分に、アウトラインとして機能する特別なマテリアルを設定することもできます。
-
ソリッド化モディファイアの設定
- 「ソリッド化」モディファイアの「マテリアルオフセット (Material Offset)」の値を「
1
」に設定します。 - 「法線を反転 (Flip Normals)」にチェックを入れます(通常のアウトライン表現では必須です)。
- 「ソリッド化」モディファイアの「マテリアルオフセット (Material Offset)」の値を「
-
マテリアルの設定
- オブジェクトのマテリアルプロパティ(赤い玉アイコン)を開きます。
- 既存のマテリアルとは別に、新しいマテリアルスロットを「
+
」で追加します。 - 新しいマテリアルを作成し(例:
Outline_Material
)、ベースカラーを黒や好きな色に設定します。 - シェーダーを「放射 (Emission)」にして、アウトラインが常に明るく表示されるようにするのもおすすめです。
これにより、ソリッド化された部分だけにアウトライン用のマテリアルが適用され、よりクリアなアウトライン表現が可能になります。
まとめ
Blenderでカメラの距離に応じて線の太さを変える方法は、少し複雑に感じるかもしれませんが、以下の2つのモディファイアを正しく組み合わせることで実現できます。
- 頂点ウェイトプロキシミティモディファイア: カメラからの距離に応じて、オブジェクトの頂点にウェイト(重み)を設定する。
- ソリッド化モディファイア: このウェイト情報を使って、厚み(ソリッド化の幅)を変化させる。