Metlivi ブログ

既存のベクターノードを傾斜した線に沿って整列する方法

既存のベクターノードを傾斜した線に沿って整列するには、2つの固定された基準点で線を定義し、ほかのノードをその線上に移動します。正確に配置するには、座標を計算して各ノードに個別に入力します。画面上で編集する場合は、一時的な直線の基準パスに各ノードをスナップします。

このチュートリアルは、ノードを保持したまま、既存のベクターキャラクターの輪郭や細部を調整する人を対象としています。基本の手順では Inkscape の座標フィールドを使い、別の方法として Affinity Designer 2 のジオメトリへのスナップを説明します。どちらの方法でも、アートワークを作り直す必要はありません。

2026年10月29日読了時間 8 分Metlivi Editorial Team
セクション 1

ノードを整列する前に固定するものを決める

目的の傾斜を定義する2つの基準ノード A と B を選びます。大きなキャラクターの輪郭の中にある直線部分の両端を示すノードでもかまいません。それらの座標を記録し、中間ノードを移動する間は変更しないでください。

次に、中間ノードをどのように動かすか決めます。「線に沿って整列する」というのは移動先を示すだけで、移動方向までは指定しません。よく使われる方法は次の3つです。

配置ルール 保たれるもの 選ぶ状況
各ノードの X 座標を維持する 既存の水平方向の配置 ノードの位置がすでに水平方向の基準位置に合っている場合
各ノードの Y 座標を維持する 既存の垂直方向の配置 水平方向より垂直方向の配置が重要な場合
線に垂直に移動して載せる 各ノードの移動距離が最短になる 目的の線から横方向にずれたノードを補正したい場合

どの方法でも、結果のノードは同じ線上に並びますが、配置結果は異なることがあります。等間隔にする操作は別です。整列だけではノード間の間隔は均等になりません。Inkscape のドキュメントでも、水平方向または垂直方向の整列と、等間隔での配置は別々に説明されています。整列と配置 — Inkscape 初心者ガイド

セクション 2

シェイプ全体を動かさずに既存ノードを選択する

Inkscape で N または F2 を押してノードツールを選択し、既存のパスをクリックしてノードを表示します。位置を変えたいノードをクリックします。ノードツールでは、ノードの位置や隣接するセグメントを制御するハンドルなど、パスの形状を編集できます。ノードツールでパスを編集する — Inkscape 初心者ガイド

編集を始める前に作業用コピーを保存し、対象部分にどのノードが含まれるかを確認します。A と B の座標、移動する各ノードの元の座標、選んだ配置ルールを記録しておくと便利です。操作を再現しやすくなり、結果も明確に比較できます。

以下の座標を使う手順では、ノードを1つずつ選択します。Inkscape のノードツールのコントロールには、X と Y の入力欄と座標単位の選択欄があります。ノードを1つずつ選ぶことで、変更する座標を明確に指定できます。ノードツールのオプション — Inkscape 初心者ガイド

1つのパス内にあるノードが対象の場合、オブジェクトの整列コマンドは使わないでください。Inkscape の整列手順は、ノードツールと選択ツールのどちらが有効かによって変わります。整列と配置 — Inkscape 初心者ガイド

セクション 3

水平方向の配置を維持しながら正確な位置を計算する

A = (Ax, Ay) と B = (Bx, By) を通る傾斜した線では、水平座標 x を持つ点がその線上にある条件は次のとおりです。

y = Ay + (x − Ax) × (By − Ay) / (Bx − Ax)

各ノードの X 座標を変えずにおきたい場合、この式を使って整列できます。これはエディターの特別なコマンドではなく、幾何学的な計算です。

同じドキュメント単位で表した、説明用の仮の座標を考えてみましょう。A = (20, 30)、B = (100, 70) とします。水平方向の差は 80、垂直方向の差は 40 なので、線の式は次のようになります。

y = 30 + (x − 20) × 0.5

既存の中間ノードが次の3つの座標にあるとします。X の値を保つ場合の目標座標は次のとおりです。

ノード 元の位置 目標位置
P1 (40, 50) (40, 40)
P2 (60, 40) (60, 50)
P3 (80, 65) (80, 60)

次の手順で目標座標を Inkscape に入力します。

  1. ノードツールで P1 だけを選択します。
  2. 座標の単位が計算に使った単位と一致していることを確認します。
  3. X は 40 のままにして、Y に 40 を入力します。
  4. P2 だけを選択し、X は 60 のままにして Y = 50 を入力します。
  5. P3 だけを選択し、X は 80 のままにして Y = 60 を入力します。
  6. 記録した座標と照らし合わせて A と B を再確認します。

基準点を動かさずに、3つのノードをその線上に配置できました。この例で水平方向の間隔が等しいのは、例に使った座標によるものです。整列の計算自体が等間隔にするわけではありません。

Bx − Ax がゼロになるため、この式では垂直な目標線に沿って X を維持できません。垂直線の場合は、各目標ノードの X を Ax に設定してください。ほぼ垂直な線では、水平方向のわずかな差が垂直方向の大きな移動に対応することがあるため、Y を維持するほうが適している場合があります。

代わりに Y を維持するには、x = Ax + (y − Ay) × (Bx − Ax) / (By − Ay) を使います。この式を使うには By と Ay に差が必要です。ドキュメントの座標とスクリーンショットから読み取った値を混ぜず、すべての座標を同じエディターのフィールドと単位系から読み取ってください。

セクション 4

移動距離を最小限にしたい場合は垂直投影を使う

X も Y も固定する必要がない場合は、垂直投影によって、無限に延びる目標線上の最も近い点を求められます。ほぼ正しい傾斜部分の周囲で中間ノードが少しずれている場合に便利です。

既存のノード P = (Px, Py) について、まず線の方向を計算します。

dx = Bx − Ax

dy = By − Ay

次に線に沿った位置と、投影後の座標を計算します。

t = ((Px − Ax) × dx + (Py − Ay) × dy) / (dx² + dy²)

Qx = Ax + t × dx

Qy = Ay + t × dy

同じ仮の基準点と元のノードを使うと、次のようになります。

ノード 元の位置 垂直投影後の位置
P1 (40, 50) (44, 42)
P2 (60, 40) (56, 48)
P3 (80, 65) (82, 61)

各ノードについて、目標座標の両方を個別に入力します。これらの値は、小さな決定論的な Python 計算で確認済みです。ジオメトリの例として示したもので、特定のキャラクターファイルから測定した値ではありません。

2つの条件に注意してください。1つ目は、A と B が異なる点であることです。基準点が一致していると分母がゼロになり、線を定義できません。2つ目は、この計算では無限直線上に投影されることです。t が 0 と 1 の間なら結果は A と B の間に、範囲外なら端点を越えた位置になります。

投影後のノードが意図した範囲から外れる場合は、移動する前にそのノードを確認してください。最も近い端点に自動的に押し込むとノードが重なり、意図した配置が変わります。また、この式だけでは、既存のパスでノードが接続順に折り返している場合の問題は解決できません。

セクション 5

Affinity Designer 2 でノードを傾斜した基準パスにスナップする

ノードの数が少ない場合は、座標を計算するより一時的な基準パスを使うほうが便利なことがあります。Affinity Designer 2 のドキュメントには、移動中のノードを選択した曲線のパスまたはノードにスナップする、ノードツールの 選択した曲線のジオメトリにスナップ というオプションが記載されています。このノードのスナップ設定は、全体のスナップ設定とは独立して機能します。ノードツール — Affinity Designer 2 ヘルプ

この配置作業では、ドキュメントに記載された機能を次のように使います。

  1. 2つの基準位置を通るように、必要な傾斜の直線の基準カーブを別に作成します。
  2. ノードツールでアートワークのカーブと基準カーブを選択します。
  3. コンテキストツールバーで 選択した曲線のジオメトリにスナップ を有効にします。
  4. 移動するアートワークのノードを1つだけ選択し、基準カーブに向かってドラッグします。
  5. 意図した基準ジオメトリ上にスナップされたことを確認します。
  6. 2つの基準ノードは固定したまま、残りのノードについても同じ操作を繰り返します。
  7. 結果を確認してから一時的なカーブを削除します。

すべての移動先をカバーできる長さの基準線を用意してください。端点付近では、ノードがカーブ内部の目的の位置ではなく端点にスナップしていないか確認します。

パスに向かってドラッグすると、そのパス上の位置にスナップしますが、それだけでは垂直投影するのか、X または Y を維持するのかは決まりません。これらの条件が重要な場合は座標を計算してください。Affinity Designer 2 のドキュメントには、変形パネルで個々のノードを再配置する方法も記載されています。カーブとシェイプを編集する — Affinity Designer 2 ヘルプ

セクション 6

輪郭がまだ曲がって見える場合はベジェハンドルを確認する

ノードを整列しても、表示される輪郭が直線になるとは限りません。ベジェハンドルは接続セグメントの形状を制御するため、両端のノードが目標線上にあっても、セグメントがその線から弓なりに外れることがあります。ノードツールでパスを編集する — Inkscape 初心者ガイド

接続する各セグメントを個別に確認します。アンカーの位置だけを整列する作業なら、意図した曲線を保ってください。セクション自体を直線にする場合は、ハンドルも適切に調整する必要があります。直線セグメントを使うか、はみ出しが生じないように、関連する制御点を目標線上に配置します。

2つの基準ノードでは、ノードの種類を変更する前に、隣接する輪郭も考慮してください。Inkscape のカスプノードでは各ハンドルを個別に動かせますが、スムーズノードでは両方のハンドルがノードを通る一直線上に並びます。対称ノードでは、さらに両方のハンドルの長さも等しくなります。こうした制約は、直線部分と隣接する曲線とのつながり方に影響します。ノードの種類について — Inkscape 初心者ガイド

直線部分が曲線につながる角では、ハンドルを個別に操作できると便利です。滑らかにつなぐ場合は、必要な接線方向を保ちます。すべてのノードを同じ種類に変えると、周囲のキャラクターの細部まで不必要に変わることがあります。

セクション 7

基準線を削除する前に整列を確認する

最初に選んだ作業内容に照らして、結果を確認します。

  • 基準点: A と B の座標が記録した値のままである。
  • 配置ルール: ノードの X を維持する、Y を維持する、または計算した垂直投影先に配置する。
  • 範囲: すべての中間ノードが意図した部分の範囲内にある。
  • パスの順序: 接続されたノードが意図した順序でその部分を通っている。
  • セグメントの形状: 曲線やつなぎ目が目的の輪郭に合っている。
  • 精度: 座標の丸めによって目に見えるずれが生じていない。

この例では、整列した座標の組がすべて、入力時の精度の範囲内で y = 0.5x + 20 を満たす必要があります。見た目とは独立して数値で確認できます。また、編集した部分が周囲のデザインに収まっているか、キャラクターを実際の表示サイズでも確認してください。

2つの基準点を固定し、移動ルールを慎重に選び、ノードの配置後に接続セグメントを確認します。こうすることで、キャラクターのほかの輪郭を保ちながら、既存の傾斜部分を再現可能な手順で整列できます。

セクション 8

出典

関連記事

このテーマをさらに見る