Blender:Geometry Node 應用於營造法式生成大木作構件初探-卷殺折線標準化篇
摘要 本文探索了透過修改 Blender 原始碼來實作客製化的 Geometry Node。 前言 上一篇文提到計算卷殺的折線非常麻煩,需要計算各個等分點並計算交點。不過其實《營造法式》中提到的卷殺的折線其實十分固定,不同部位的折線只要等分的數字相同,皆可以被視作同樣的折線經過線性變換,也就是說我們只要計算一個折線後透過仿射變換就能套用到其他構件上的不同位置上,只要等分數相等。 另外我們也可以透過調整等分數來調整折線的柔化程度,例如實例中有些栱頭卷殺的等分點就不是 4 * 4,可能是 3 * 3,藉由簡單的線性變換也能控制卷殺曲線的長寬。 那麼不同等分的折線有沒有辦法找出各點的座標的公式呢?我發現其實可以。以下就用長寬相等的矩形,以二等分和三等分的卷殺為例。 二與三等分的卷殺推導公式 簡單繪製兩等分與三等分的卷殺如下圖: 若以 Start 為原點,矩形為 1 * 1 的正方形,Start 和 End 在圖中只有繪製在三等分的圖上,實際上二等分亦同樣位置。 Start 和 End 的點座標為: Start(0, 0) End (1, 1) 二等分的 D1 點座標為: D1(1/3, 2/3) 三等分的 T1、T2 點座標為: T1(1/6, 3/6) T2(3/6, 5/6) 此時還未看見規律,但是依照順序從 Start 到 End 逐一計算座標差值即可以發現規律: 二等分的座標差值: D1-Start(1/3, 2/3) End-D1 (2/3, 1/3) 三等分的座標差值: T1-Start(1/6, 3/6) T2-T1 (2/6, 2/6) End-T2 (3/6, 1/6) 從此可以發現各個點的座標會是等差級數。當有 N 等分,分母就是前 N 個自然數的和,而各個點由 Start 開始到 End 的 Index K 為 [0, N],共 N + 1 個點。 X 的分子便是前 K 個自然數的和,而 Y 的分子為反向,為由 N 開始 K 個的遞減自然數和,而這樣才能使得最後一個點座標為 (1, 1)。 折線點公式 N為自然數時,對於 N 等分的卷殺其產生的折線上, Index K 由 0 開始時,其第 K 點 P K 座標為: P K (S K /S N , T N /S N ) S K =...