はじめに
面白そうなノードを発見したので早速ドキュメントを読む
Bevel Curve and section
from 2d scene object
/ blender sverchok pic.twitter.com/ur2zJNLSdG— rwny (@3drwny) 2020年4月27日
参照元
Bevel a Curve
機能
このノードはBlenderの標準的な”Bevel Curve”機能に似た機能を提供します。より正確にはフラットな曲線(Bevel Objectと呼ばれる)を別の曲線のパスに沿って押し出します。
Bevel Object のスケールは第3の曲線(taper objectと呼ばれる)によって制御されるため曲線に沿って変化します。
taper objectと同様に、押し出すための曲線は曲線でも直線でも良い。
一般的にベクトルに沿って3Dオブジェクトを回転させるタスクは些細ではありません、なぜなら常にオブジェクトの他の2つの軸があり、それらがどこを向くべきかは明確ではないからです。
そこでこのノードはオブジェクトの回転計算に3つの異なったアルゴリズムをサポートしています。多くの単純なケースでは、これらのアルゴリズムは同じ結果になります。しかし複雑な状況の場合、またはいくつかの角のケースでは結果はぜんぜん違うものになります。なのですべてのアルゴリズムを試してあなたの望むものを探してください。
Note1 Bevel objectは開いていも閉じていても良いです。いくつかの別々の断片から構成される場合もあります。しかしそれは座標平面(XY,YZまたはXZ)のいずれかのフラットなオブジェクトとして捉えます。この平面はいわゆる”方位軸”、つまり”Bevel Object”に垂直な座標軸を定義し、”Bevel Object”は方位軸に沿って動きます。
Note2 Taper object は開いた曲線で、座標軸(X,Y,Z)のいずれかに沿って伸びる開放曲線です。これは方位軸でなければならず、すなわち”Bevel object”の平面に垂直な軸である必要があります。
多くの共通したケースで”Bevel object”はXY平面です。なので方位軸はZです。
入力
- Curve 必須 曲線を定義する頂点のリストでこれに沿って面取りする。この入力の頂点の順序は曲線が定義された頂点の順番と同じでなければならない。”Object In”ノードを使って曲線を入力している場合、”Vector Sort”ノードを使って頂点を適切に並べ替えましょう。
- BevelVerts 必須 “Bevel object”を定義する頂点のリスト
- BevelEdges “Bevel object”の辺のリスト。BevelFacesに入力している場合はこちらは接続しないでしょう。そのようなケースの場合、辺は面から自動的に導出される。
- BevelFaces “Bevel object”の面のリスト。この入力は任意ですが、Cap StartやCap Endオプションを使っている場合、非常に重要になります。
- TaperVerts taper曲線を定義する頂点のリスト。この入力は任意。入力がない場合Bevel objectのスケールは定数になります。
- Twist 押し出し中に方位軸回りにBevel objectの回転を定義する。下記のタイプがサポートされています
- t と twist ペアのリストで t は 0から1の数値で、twistはradian角度で時計回りに進みます。これらのペアは点tにおいてBevel objectを回転させる角度を定義しています。t = 0 が意味するのは曲線の開始で t = 1 は曲線の終わりを示します。例えば
[(0, 0), (1, 6.28)]
が入力で渡されたら、曲線の開始では”Bevel object”は回転させず、曲線の終了で 2*pi の回転を行います。 - 数値のリスト。数値はツイストする角度と解釈し、t は 0 から 1 まで均等に成長すると捉えます。例えば
[0, 3.14, 0]
を渡した場合、[(0, 0), (0.5, 6.28), (1.0, 0)]
と全く同じ意味になります。
- t と twist ペアのリストで t は 0から1の数値で、twistはradian角度で時計回りに進みます。これらのペアは点tにおいてBevel objectを回転させる角度を定義しています。t = 0 が意味するのは曲線の開始で t = 1 は曲線の終わりを示します。例えば
この入力によって定義されたポイントのtwistは線形か立方体スプラインで補間されます。もしこの入力がなければ、それはツイストが無いことを意味します。Note: ツイストは回転計算アルゴリズムによって回転に加えられます(下記参照)
- Steps 曲線が細分化の数でそれによって曲線が評価されます。デフォルト値は10です
パラメータ
- Orientation “Bevel object”の軸でパスに沿った方向を向いている必要があります。デフォルト値はZです(この意味はBevel objectがXY平面に配置されている事を意味します)
- Algorithm 回転計算アルゴリズム。利用可能な値は
- Householder : Householderの反射行列を用いて回転を計算しますQR decomposition – Wikipedia
- Tracking: Blenderの”TrackTo”キネマティック制約と同じアルゴリズムを使います。このアルゴリズムは上を選択する事を可能にする事で、他のアルゴリズムと比較してより柔軟性をもたせています。
- Rotation difference: 2つのベクトル間の差分として回転を計算します。
初期値は Householder です
- Up axis 結果で上を向くべきドナーオブジェクトの軸。このパラメータはTracking algorithmが選択されたときのみ利用可能。このパラメータの値は Orientationパラメータと異なっている必要があります、同じ場合はエラーになります。デフォルト値はX
- Curve Mode パス補間モード。利用可能な値は Linear と Cubicです。初期値はCubic です
- Taper Mode Taper曲線補間モード。利用可能な値は Linear と Cubicです。初期値はCubicです。
- Twist Mode Twist角度補間モード。利用可能な値は Linear と Cubicです。初期値はLinearです。
- Cyclic パスが周期的であるかどうかを示します。初期値は false です
- Separate Scale taperオブジェクトで定義されたbevel objectのスケールが両軸に沿って同じであることが望ましいか、あるいは異なる場合があるか
(ここの解説は方位軸がZの前提が、他の方位軸も同様です)
このパラメータはTaperVertsが接続されていないということを意味していません。
チェックなしがデフォルトです。
- Cap start 曲線の開始部分でCap面を作るかどうかです。チェックなしがデフォルトです。
- Cap start 曲線の終了部分でCap面を作るかどうかです。チェックなしがデフォルトです。
- Flip curve Nパネルからのみ利用可能です。もしチェックが入っているならTaper曲線の方向は提供されている頂点パスの順序と比較して反転します。チェックなしがデフォルトです。
- Flip Twist Nパネルからのみ利用可能です。もしチェックが入っているならツイストデータの方向は提供されている頂点パスの順序と比較して反転します。チェックなしがデフォルトです。
- Metric 提供されたパス頂点に対応するスプラインの引数値を計算するために利用されるメトリック。利用可能な値は下記のとおりです。
- Euclidean
- Manhattan
- Chebyshev
- Points
初期値はEuclideanです。デフォルトmetricは通常は良い結果となります。思った結果ではなかった場合に他のオプションを試してみてください。このパラメータはNパネルからのみ利用可能です
- Taper Metric Taper objectのスプラインを計算するために使用するメトリックを定義します。利用可能な値は Same as curveで、主曲線と同じメトリックを使用します。
このアルゴリズムは非常に不正確かもしれません
- Orientation Axis 方位軸に沿ったtaperオブジェクトの頂点の座標を使う。これは通常正確な結果を生みます。このモードはtaper objectが方位軸に沿った方向である事を仮定しています: 例えば、方位軸がZの場合、taper object の後続の頂点はZ座標が前の頂点より大きくなければなりません。初期値は1です。
- Tangent precision スプラインの接線を計算するために使用されるステップ。値が小さいほど精度が高い。多くの場合初期値を変える必要はありません。このパラメータはNパネルからのみ利用可能
出力
- Vertices 出力オブジェクトの頂点
- Edges
- Faces
使用例
- Curve に沿って Bevelオブジェクトが出来ている
- Step10 = 細分化10
Taper 曲線使用例