【Blender5.0】カーブの接線・法線・従法線を解説:Tiltのトラブルを解決する

blender
記事内に広告が含まれています。

Blenderでカーブを使ってモデリングしていると、「Curve to Mesh したらねじれる」「Tilt を入れたらおかしな方向に回る」「平面に沿わせたいだけなのに回転が暴れる」といった問題にぶつかることがあります。

これらのトラブルの多くは、カーブが内部的に持っている「接線・法線・従法線」、そして Tilt がそれらをどう回しているかを理解すれば修正できます。

この記事では、カーブの

  • 接線(Tangent)
  • 法線(Normal)
  • 従法線(Binormal)
  • Tilt は何をしているのか
  • Tilt の直し方

を、Geometry Nodes の使用を前提に整理します。

この記事は、Blenderでのカーブの法線・接線・従法線、ねじれの直し方などを解説している中級者向けの記事です。

難易度 3.0

スポンサーリンク

接線(Tangent)とは

接線(Tangent)とは、カーブが進んでいる方向を表すベクトルです。

  • 各ポイントごとに必ず1本定義される
  • カーブの形状そのものから一意に決まる
  • Tilt を変えても接線は変わらない

Geometry Nodes では Curve Tangent ノードで取得できます。

本来、接線は微分可能な滑らかな曲線を微分することで得られるベクトルです。しかしCGでは、曲線であっても内部的には点の列として扱われており、実体は折れ線の集合になっています。

そのため、角ができているポイントでは数学的に厳密な接線は定義できず、Blenderでは「手前から入ってくる方向」と「次に進んでいく方向」をもとに、それらをならした向きが接線として計算されます。

これはあくまで疑似的な接線方向であり、特に急角度で折れている部分では、接線の向きが直感とずれることがあります。その結果、Tiltで回転を与えたときに、想定していない方向へねじれたような挙動が発生することがあります。

接線は、以下の方向として使われる

  • Sweep(断面プロファイル)の向き…接線の垂直方向にプロファイルが広がる
  • Curve to Mesh の押し出し方向…接線の垂直方向にプロファイルが広がる
  • Tilt の回転軸
スポンサーリンク

法線(Normal)とは

法線(Normal)とはその線に沿って使われる上方向を表すベクトルです。

しかし、線そのものには「上」は存在せず、Z軸方向を指すというものでもありません。

Blender におけるカーブ法線

Blender は次のようなルールで法線を決めています。

  • 最初のポイントで「上方向」を仮に決める
  • 次のポイント以降は、接線の変化に合わせてできるだけ回転しないように追従させる

このため、同じ形のカーブでも開始点が違うと向きが変わる、途中で突然 180° 反転することがあるといった現象が起きます。

Geometry Nodes では Normal ノードで取得できます。

青い矢印が法線ベクトルの向きです。

上図にもあるように、Set Curve Normalノードで法線方向を変えることができます。

ジオメトリノード内のカーブの法線の決め方

まず決まるのは平面の法線
たとえば XY 平面上の線(カーブ)なら平面法線はZ方向上向きになります。これは 基準方向 として使われます。

そこから線の 法線(Normal)が作られる
接線 T
基準方向 Up(平面法線 = Z上向き)
この2つから、
線の Normal = T × Up(外積)
を計算しています。

平面上のカーブ法線のZ方向は0ですが、スパイラルのように高さが出ると、平面から離れるほどZ方向に曲がるようになります。

スポンサーリンク

従法線(Binormal)とは

従法線(Binormal)は、外積(Binormal = Tangent × Normal)で定義されます。

接線法線従法線はお互いに直交しています。従法線は、接線にも法線にも直交する、カーブの横方向を表すベクトルです。

外積で従法線(Binormal)を求めるときのポイント

Curve TangentノードとNormalノードをCross Productノードで計算すると外積を求めることができます。

重要なのは 順番で、Tangentを上につなぎます。

  • T(接線) × N(法線)
    → 正しい従法線
  • N(法線) × T(接線)
    → 向きが逆(-Binormal)

※また、従法線は正規化されていないので、自分でNormalizeノードで正規化する必要があります。(長さを1にすること)

接線・法線・従法線の関係

この3本で、カーブ上の ローカル座標系 ができます。

  • Tangent:前
  • Normal:上
  • Binormal:横

Tilt は、この座標系を 接線を軸に回転させる操作です。

スポンサーリンク

Tilt は何をしているのか

Tilt は、接線(Tangent)を回転軸として、法線と従法線の平面を回転させる角度です。

  • 回転軸:Tangent
  • 回転される:Normal / Binormal
  • 正の Tilt右手系Normal → Binormal )の正回転

Tilt の角度が正のとき、接線を軸に、Normal が Binormal 側へ回転します。

スポンサーリンク

Tilt の直し方

Tiltや、カーブのねじれが思ったように制御できない場合、多くの原因が法線がおかしい(意図しないもの)からです。

法線を直す

例えばQuadrilateralノードのようなカーブは、法線がある一定の方向を向いているため、カーブのTiltで一斉に中心を向くようなことができません。

そんなときはSet Curve Normalノードで法線方向を修正します。Positionノードなどで位置ベクトルを法線としてSet Curve NormalノードのFreeモードで法線へ入れると、Tiltが中心向きにそろいます。

スポンサーリンク

Set Curve Normalノードについて

「法線をどう計算するかのルール」を指定するノードです。カーブのねじれで修正したいときはほぼここを修正すれば良いので、使い方をまとめておきました。

Mode の違い

Minimum Twist(ほぼデフォルト)

  • カーブ全体でねじれが最小になるように法線を決める
  • 方向が逆のカーブを混ぜても安定

複雑なカーブでもねじれが綺麗になるように揃えてくれる

Z-Up

  • 法線をZ軸に対して直交する向きに固定
  • 垂直なカーブでは例外処理あり

滑り台のような、ある程度平面だけどカーブに沿ったものを作りたいときに使える。地面・床・重力方向を基準にしたい場合に有効。

Free

  • 自分で指定した カスタム法線 を使う
  • 回転後に設定しないと壊れる

階段・道路など上向きに固定したいとき、中心に向けたいときなど、ある方向に固定したいときに使える

スポンサーリンク

関連記事

ジオメトリノードの回転系ノードについての解説です。

ジオメトリノード関連の記事のガイドです。

コメント