コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線...

25
コンピュータグラフィクス論 モデリング (1) – 2017413高山 健志

Upload: others

Post on 15-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

コンピュータグラフィクス論

–モデリング (1) –

2017年4月13日

高山健志

Page 2: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

パラメトリック曲線

• X座標とY座標がパラメタ t (≒時刻) によって決まるもの• 例:サイクロイド

𝑥 𝑡 = 𝑡 − sin 𝑡𝑦 𝑡 = 1 − cos 𝑡

•接線ベクトル: 𝑥′ 𝑡 , 𝑦′ 𝑡

•多項式曲線: 𝑥 𝑡 = 𝑖 𝑎𝑖𝑡𝑖

2

Page 3: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

3次エルミート曲線

•両端での値と微分の制約を満たす(=エルミート補間) ような、多項式曲線

•制約が4つなので、4自由度が必要 4個の係数 3次多項式• 𝑥 𝑡 = 𝑎0 + 𝑎1𝑡 + 𝑎2𝑡

2 + 𝑎3𝑡3

• 𝑥′ 𝑡 = 𝑎1 + 2𝑎2𝑡 + 3𝑎3𝑡2

•制約値を代入すれば係数が求まる

3

𝑥 0 = 𝑥0𝑥 1 = 𝑥1𝑥′(0) = 𝑥0

𝑥′ 1 = 𝑥1′

𝑥 0 = 𝑎0 = 𝑥0𝑥 1 = 𝑎0 + 𝑎1 + 𝑎2 + 𝑎3 = 𝑥1𝑥′ 0 = 𝑎1 = 𝑥0

𝑥′ 1 = 𝑎1 + 2 𝑎2 + 3 𝑎3 = 𝑥1′

𝑎0 = 𝑥0𝑎1 = 𝑥0

𝑎2 = −3 𝑥0 + 3 𝑥1 − 2 𝑥0′ − 𝑥1

𝑎3 = 2 𝑥0 − 2 𝑥1 + 𝑥0′ + 𝑥1

t

x

0 1

Page 4: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

ベジェ (Bezier[ベズィエ]) 曲線

•入力:3点𝑃0, 𝑃1, 𝑃2 (制御点)

• 任意空間 (2D, 3D) の座標

•求めたいもの:曲線𝑃 𝑡 で𝑃 0 = 𝑃0𝑃 1 = 𝑃2

を満たしつつ、𝑃1に “引っ張られる” もの

4

𝑃 𝑡 = 1 − 𝑡 𝑃0 + 𝑡 𝑃2

𝑃 𝑡 = ?

𝑃1

𝑃2

𝑃0

t=0

t=1

線分を表す式

ベジェ曲線を表す式

Page 5: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

ベジェ曲線

• 𝑃01 𝑡 = 1 − 𝑡 𝑃0 + 𝑡 𝑃1

• 𝑃12 𝑡 = 1 − 𝑡 𝑃1 + 𝑡 𝑃2• 𝑃01 0 = 𝑃0• 𝑃12 1 = 𝑃2

• アイディア: ”補間を補間”𝑡 ∶ 0 → 1のとき 𝑃01 → 𝑃12 となるように線形補間

• 𝑃012 𝑡 = 1 − 𝑡 𝑃01 𝑡 + 𝑡 𝑃12 𝑡

= 1 − 𝑡 1 − 𝑡 𝑃0 + 𝑡 𝑃1 + 𝑡 1 − 𝑡 𝑃1 + 𝑡 𝑃2

= 1 − 𝑡 2𝑃0 + 2𝑡 1 − 𝑡 𝑃1 + 𝑡2𝑃2

5

𝑃1

𝑃2

𝑃0

𝑃12 𝑡

𝑡

𝑡

𝑡

1 − 𝑡

1 − 𝑡

𝑃01 𝑡𝑃012 𝑡

1 − 𝑡

2次ベジェ曲線

線分の式

線分の式

Page 6: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

ベジェ曲線

• 𝑃01 𝑡 = 1 − 𝑡 𝑃0 + 𝑡 𝑃1

• 𝑃12 𝑡 = 1 − 𝑡 𝑃1 + 𝑡 𝑃2• 𝑃01 0 = 𝑃0• 𝑃12 1 = 𝑃2

• アイディア: ”補間を補間”𝑡 ∶ 0 → 1のとき 𝑃01 → 𝑃12 となるように線形補間

• 𝑃012 𝑡 = 1 − 𝑡 𝑃01 𝑡 + 𝑡 𝑃12 𝑡

= 1 − 𝑡 1 − 𝑡 𝑃0 + 𝑡 𝑃1 + 𝑡 1 − 𝑡 𝑃1 + 𝑡 𝑃2

= 1 − 𝑡 2𝑃0 + 2𝑡 1 − 𝑡 𝑃1 + 𝑡2𝑃2

6

𝑃1

𝑃2

𝑃0

2次ベジェ曲線

Page 7: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

• 全く同じ考え方を4点𝑃0, 𝑃1, 𝑃2 𝑃3に適用:

𝑡 ∶ 0 → 1のとき 𝑃012 → 𝑃123

となるように線形補間

• 𝑃0123 𝑡 = 1 − 𝑡 𝑃012 𝑡 + 𝑡 𝑃123 𝑡

= 1 − 𝑡 1 − 𝑡 2𝑃0 + 2𝑡 1 − 𝑡 𝑃1 + 𝑡2𝑃2 + 𝑡 1 − 𝑡

2𝑃1 + 2𝑡 1 − 𝑡 𝑃2 + 𝑡2𝑃3

= 1 − 𝑡 3𝑃0 + 3𝑡 1 − 𝑡2𝑃1 + 3𝑡

2 1 − 𝑡 𝑃2 + 𝑡3𝑃3

3次ベジェ曲線

7

𝑃123 𝑡

𝑃012 𝑡𝑃0123 𝑡𝑡

1 − 𝑡

𝑃1

𝑃3

𝑃0

𝑃2

3次ベジェ曲線

2次ベジェ曲線

2次ベジェ曲線

Page 8: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

• 全く同じ考え方を4点𝑃0, 𝑃1, 𝑃2 𝑃3に適用:

𝑡 ∶ 0 → 1のとき 𝑃012 → 𝑃123

となるように線形補間

• 𝑃0123 𝑡 = 1 − 𝑡 𝑃012 𝑡 + 𝑡 𝑃123 𝑡

= 1 − 𝑡 1 − 𝑡 2𝑃0 + 2𝑡 1 − 𝑡 𝑃1 + 𝑡2𝑃2 + 𝑡 1 − 𝑡

2𝑃1 + 2𝑡 1 − 𝑡 𝑃2 + 𝑡2𝑃3

= 1 − 𝑡 3𝑃0 + 3𝑡 1 − 𝑡2𝑃1 + 3𝑡

2 1 − 𝑡 𝑃2 + 𝑡3𝑃3

• 両端における接線の制御がしやすいCGで頻繁に使われる

3次ベジェ曲線

8

𝑃1

𝑃3

𝑃0

𝑃2

𝑃0123 𝑡

3次ベジェ曲線

Page 9: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

n次ベジェ曲線

•入力:n+1個の制御点𝑃0, ⋯ , 𝑃𝑛

𝑃 𝑡 =

𝑖=0

𝑛

𝑛C𝑖 𝑡𝑖 1 − 𝑡 𝑛−𝑖 𝑃𝑖

9

𝑏𝑖𝑛(𝑡)

バーンスタイン基底関数

1 − 𝑡 4𝑃0 +

4𝑡 1 − 𝑡 3𝑃1 +

6𝑡2 1 − 𝑡 2𝑃2 +

4𝑡3 1 − 𝑡 𝑃3 +

𝑡4𝑃4

1 − 𝑡 5𝑃0 +

5𝑡 1 − 𝑡 4𝑃1 +

10𝑡2 1 − 𝑡 3𝑃2 +

10𝑡3 1 − 𝑡 2𝑃3 +

5𝑡4 1 − 𝑡 𝑃4 +

𝑡5𝑃5

4次ベジェ曲線 5次ベジェ曲線

Page 10: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

3次ベジェ曲線と3次エルミート曲線の関係

• 3次ベジェ曲線とその微分:• 𝑃 𝑡 = 1 − 𝑡 3𝑃0 + 3𝑡 1 − 𝑡

2𝑃1 + 3𝑡2 1 − 𝑡 𝑃2 + 𝑡

3𝑃3• 𝑃′(𝑡) = −3 1 − 𝑡 2𝑃0 + 3 1 − 𝑡

2 − 2𝑡(1 − 𝑡) 𝑃1 + 3 2𝑡 1 − 𝑡 − 𝑡2 𝑃2 + 3𝑡

2𝑃3

•端点での微分値:

• 𝑃′ 0 = −3𝑃0 + 3𝑃1 𝑃1 = 𝑃0 +1

3𝑃′ 0

• 𝑃′ 1 = −3𝑃2 + 3𝑃3 𝑃2 = 𝑃3 −1

3𝑃′ 1

• 3次多項式曲線を定義する形式が違うだけで、本質的には同じもの

10

𝑃1𝑃3

𝑃0

𝑃2

𝑃′(0)

𝑃′(1)

Page 11: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

ベジェ曲線の評価方法

•方法1:多項式をそのまま評価する• 単純で速いが、数値的に不安定になる場合も

•方法2:ド・カステリョ [de Casteljau ] のアルゴリズム• ベジェ曲線の再帰的な定義そのものに倣う

• 計算手順は増えるが、数値的に安定

• ベジェ曲線の分割にも使える

11

Page 12: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

ベジェ曲線の描画方法

• 最終的には折れ線で近似的に描く

• パラメタtをどうサンプリングするかが問題

• 方法1:一定間隔でサンプリング

• 実装が簡単

• サンプル点の密度が必要十分でなくなる?

• 方法2:適応的なサンプリング

• 制御点列が直線状でなければde Casteljau

の方法で分割する

12

Page 13: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

さらなる制御法:有理ベジェ曲線• ベジェ曲線は、制御点の “重み付き平均”

と見ることができる

• 𝑃012 𝑡 = 1 − 𝑡2𝑃0 + 2𝑡 1 − 𝑡 𝑃1 + 𝑡

2 𝑃2= 𝜆0 𝑡 𝑃0+ 𝜆1 𝑡 𝑃1+ 𝜆2 𝑡 𝑃2

• 重要な性質:partition of unity

𝜆0 𝑡 + 𝜆1 𝑡 + 𝜆2 𝑡 = 1 ∀𝑡

• 各制御点の重み𝜆𝑖 𝑡 に任意係数𝑤𝑖を掛ける:

𝜉𝑖 𝑡 = 𝑤𝑖 𝜆𝑖(𝑡)

• 正規化して新しい重みを得る:

𝜆𝑖′ 𝑡 =

𝜉𝑖 𝑡

𝑗 𝜉𝑗 𝑡

13

w0 = w2 = 1

多項式曲線ではない円弧なども表現可能

Page 14: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

3次スプライン

•複数の3次曲線を滑らかに繋げたもの• 区分的多項式

• 区分の境目で値と微分値が共通 (C1連続)

•パラメタ範囲は [0, 1]とは限らない• ただし 𝑡𝑘 < 𝑡𝑘+1

•値のみを入力として、微分値を適切に自動推定したい

14

t

x

t0 t1 t2 t3 t4 t5

x0(t) x1(t) x2(t) x3(t) x4(t)

PowerPointの曲線ツール

Page 15: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

3次Catmull-Romスプライン

•区間 𝑡𝑘 ≤ 𝑡 ≤ 𝑡𝑘+1における3次関数 𝑥𝑘(𝑡)を、前後の制約値 𝑥𝑘−1, 𝑥𝑘, 𝑥𝑘+1, 𝑥𝑘+2 から決定

15𝑡𝑘−1 𝑡𝑘 𝑡𝑘+1 𝑡𝑘+2 𝑡

𝑥

𝑥𝑘

𝑥𝑘−1𝑥𝑘+1

𝑥𝑘+2

𝑥𝑘(𝑡)

Page 16: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

3次Catmull-Romスプライン:ステップ1

• 𝑡𝑘 → 𝑡𝑘+1 のとき 𝑥𝑘 → 𝑥𝑘+1 となるように補間直線

𝑙𝑘(𝑡) = 1 −𝑡 − 𝑡𝑘𝑡𝑘+1 − 𝑡𝑘

𝑥𝑘 +𝑡 − 𝑡𝑘𝑡𝑘+1 − 𝑡𝑘

𝑥𝑘+1

16𝑡𝑘−1 𝑡𝑘 𝑡𝑘+1 𝑡𝑘+2 𝑡

𝑥

𝑙𝑘−1(𝑡) 𝑙𝑘(𝑡) 𝑙𝑘+1(𝑡)

Page 17: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

3次Catmull-Romスプライン:ステップ2

• 𝑡𝑘−1 → 𝑡𝑘+1 のとき 𝑙𝑘−1 → 𝑙𝑘 となるように補間 2次曲線

𝑞𝑘(𝑡) = 1 −𝑡 − 𝑡𝑘−1𝑡𝑘+1 − 𝑡𝑘−1

𝑙𝑘−1(𝑡) +𝑡 − 𝑡𝑘−1𝑡𝑘+1 − 𝑡𝑘−1

𝑙𝑘(𝑡)

• 3点 𝑡𝑘−1, 𝑥𝑘−1 , 𝑡𝑘 , 𝑥𝑘 , 𝑡𝑘+1, 𝑥𝑘+1 を通る

17𝑡𝑘−1 𝑡𝑘 𝑡𝑘+1 𝑡𝑘+2 𝑡

𝑥

𝑞𝑘(𝑡)

𝑞𝑘+1(𝑡)

Page 18: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

3次Catmull-Romスプライン:ステップ3

• 𝑡𝑘 → 𝑡𝑘+1 のとき 𝑞𝑘 → 𝑞𝑘+1 となるように補間 3次曲線

𝑥𝑘 𝑡 = 1 −𝑡 − 𝑡𝑘𝑡𝑘+1 − 𝑡𝑘

𝑞𝑘 𝑡 +𝑡 − 𝑡𝑘𝑡𝑘+1 − 𝑡𝑘

𝑞𝑘+1(𝑡)

18𝑡𝑘−1 𝑡𝑘 𝑡𝑘+1 𝑡𝑘+2 𝑡

𝑥

𝑥𝑘(𝑡)

まとめ:• 各制御点における微分値が、それ自身とその前後の3つの制御点を通る2次曲線から定まる

• 各区間は端点の微分値を満たす3次曲線

Page 19: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

3次Catmull-Romスプラインの計算方法

19A recursive evaluation algorithm for a class of Catmull-Rom splines [Barry,Colgman,SIGGRAPH88]

𝑃 𝑡0 = 𝑃0

𝑃 𝑡1 = 𝑃1

𝑃 𝑡2 = 𝑃2

𝑃 𝑡3 = 𝑃3

𝑃 𝑡𝑡1 ≤ 𝑡 ≤ 𝑡2

Page 20: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

パラメタ区分 𝑡𝑘 (ノット列)の決め方

• 前提:𝑡0 = 0

• Uniform (一様)

𝑡𝑘 = 𝑡𝑘−1 + 1

• Chordal (弧長に基づく)

𝑡𝑘 = 𝑡𝑘−1 + 𝑃𝑘−1 − 𝑃𝑘

• Centripetal (求心性?)

𝑡𝑘 = 𝑡𝑘−1 + 𝑃𝑘−1 − 𝑃𝑘

20Parameterization of Catmull-Rom Curves [Yuksel,Schaefer,Keyser,CAD11]

Page 21: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

3次Catmull-Romスプラインの応用

21Parameterization of Catmull-Rom Curves [Yuksel,Schaefer,Keyser,CAD11]

Page 22: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

Bスプライン曲線•多項式スプラインを表すもう一つの方法

• 曲線を基底関数 (basis)の重ね合わせで表す• 3次の基底関数が実用上一般的

• サブディビジョンサーフェスと深い関係次回講義で説明

• Non-Uniform Rational B-Spline• Non-Uniform = ノット列 (𝑡𝑘)の間隔が一様でない• Rational = 制御点が重みを持つ (有理式曲線)

• (ややこしいので本講義では説明しない)

•秀逸なFlashデモ:http://geometrie.foretnik.net/files/NURBS-en.swf

22

Page 23: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

パラメトリック曲面

•パラメタが1個曲線 𝑃(𝑡)

•パラメタが2個曲面 𝑃 𝑠, 𝑡

• 3次ベジェ曲面:• 入力:4×4=16個の制御点 𝑃𝑖𝑗

𝑃 𝑠, 𝑡 =

𝑖=0

3

𝑗=0

3

𝑏𝑖3 𝑠 𝑏𝑗

3 𝑡 𝑃𝑖𝑗

23

バーンスタイン基底関数

𝑏03 𝑡 = 1 − 𝑡 3

𝑏13 𝑡 = 3𝑡 1 − 𝑡 2

𝑏23 𝑡 = 3𝑡2(1 − 𝑡)

𝑏33 𝑡 = 𝑡3

Page 24: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

パラメトリック曲面を用いた3Dモデリング

•長所• 滑らかな曲面をコンパクトに表現できる

• 球や円錐面などを正確に表現できる

•短所• 複数のパッチをうまく配置するのが難しい

• 複数のパッチ間の連続性を保つのが難しい

•シンプルなパーツの組み合わせで人工物をデザインするのによく使われる

24

Page 25: コンピュータグラフィクス論research.nii.ac.jp/.../slides/iscg-2017-02-modeling1.pdfパラメトリック曲線 •X座標とY座標がパラメタt (≒時刻) によって決まるもの

参考

• http://en.wikipedia.org/wiki/Bezier_curve

• http://antigrain.com/research/adaptive_bezier/

• https://groups.google.com/forum/#!topic/comp.graphics.algorithms/2FypAv29dG4

• http://en.wikipedia.org/wiki/Cubic_Hermite_spline

• http://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline

25