プロシージャルなロープを作成します。
はじめにCircleとLineを作成します。
CircleのPrimitive TypeはPolygonにしてください。
Divisionを3にして、三角形をつくります。
CopytoPointを作成し、Line1をInput1にCircle1をInput2に接続します。
ビューポートで確認すると、ポリゴンのポイントにカーブが複製されていることがわかります。
ただし、このLineがY軸方向を向いてしまっています。
LineのDirectionを下記のように変更します。
これで、Z軸方向を向いたLineが複製されました。
更にLineのLengthを10に設定し、Pointを50に増やします。
PolyWireを追加します。伸ばしたLineにそってポリゴンが作成されます。
これがロープの元になります。
polyWireのWire Radiusがロープの太さ、Divisionsがロープの丸みになります。
値を調整してください。ここではRadiusが0.5、Divisionsが8となります。
このままでは1つ1つのロープが離れすぎていることがわかります。
ロープの元はCircleで作成した三角ポリゴンです。CircleのRadiusの文字の部分をマウスの中ボタンでドラッグすると、縦、横両方同時に変更できます。この値を小さくし、3つのロープを近づけます。
つぎにこのロープをTwistする必要があります。
CopytoPointsとpolyWireの間にTwistを追加します。
Twistを表示して、Primary AxisをZ軸に設定して、Strengthの値を上げることでロープがねじれていきます。
Z軸に設定するのは、LineがZ軸方向を向いているからです。
ロープがねじれました!
PolyWireを表示するとロープのような形ができています。
TwistのStrengthをあげることでどのくらい強く編まれたロープなのかを決めることができます。
LineのLengthを伸ばすと、ロープの長くなりますが、ポイント数を挙げままだとロープが不自然にのびてしまうことがわかります。
そこで、最初に決めたLengthとPointの比率を保ちつつ、長さを調整することができるようにします。
Lengthを参照して、Pointsを自動決定したいので、まずはLengthを右クリックして、Copy Parameterを選択します。
次にPointsを右クリックして、Paste Relative Referencesを選択します。
これにより、Pointsパラメーターにch("dist")というエクスプレッションが入力されます。
このchというエクスプレッション関数は、他のパラメーターを取得するという意味があります。つまり、このままの状態だとLengthの距離を取得して、そのままPointsに入力することになります。
エクスプレッションを設定する前にこのシーンでは、Lengthが10、Pointsが70が一番良い状態でした。
そこで、エクスプレッションに*7を追加し、ch("dist")*7となるようにします。
エクスプレッションが入力されたパラメーターを中ボタンでクリックすると、計算結果の値をみることもできます。
これでロープをどれだけのばしても、型崩れしないようになりました。
各パラメーターを調整することで、下記のようなワイヤーロープにすることも可能です。