STEPflow2.tcl :: for mac win unix:: R5
9/8 いままで、超謙遜した解説でしたが、改めます。
使い方を覚えれば、快適に使えます。


画像つきで、使用方法を説明しているので、読み込みが遅いです。。

形状を線形状にそって並べます。またそのときに、方向や拡大率を設定する線形状を用意することで、方向や、大きさを、コントロールすることが出来ます。
Shade6では、形状を整列させる機能がつきましたが、このスクリプトは、それどころではありません。
しかし、重い。

お使いになる前に必ずこちらを読んでください。

使用方法


まず、このような準備をします。コピーしたい形状と、ガイドラインとなる線形上を、同一の階層に、並べます。
このとき、線形状は、コピーする形状の真下に並べてください。また、後で出てくる、方向や拡大率のガイドラインも同様に並べます。



次に、コピーしたい形状を選択した状態で、スクリプトを実行します。
すると、ダイアログが現れますので、ここで設定を行って、OKボタンを押します。それだけです。

・形状の数---コピー後の形状の数を設定します。これは、元の形状は含みません。

・位置、方向、拡大---位置や、方向、拡大率を設定します。ここでは、コピーする形状の下に並べられている形状の名前が出てきますので、ガイドラインとする線形状には、あらかじめ、わかりやすい名前をつけておくといいでしょう。

・計算精度(分割数)---ベジエの距離を計算するときの精度です。高ければ高いほど正確ですが、さほど必要ありませんし、あまり高くしても、意味はありません。「5」あたりでいいです。場合によっては、「2」や「3」でも良い場合もあります。

計算精度(許容誤差)---これも、ベジエの距離を計算するときの精度です。1〜100の値を入力してください。高いほうがいいですが、これも、あまりたかくしても意味はありません。「50」ぐらい、場合によって、「10」とかでも十分です。

めんどくさいので、使用例を使って説明します。


さきほどのシーンです。(幻のキャラクター、くまさん登場;;いえ、犬じゃないです。。)
ガイドラインとなる線形状は、始点を、コピーする形状にあわせると、結果が予想しやすくなります。
(このスクリプトは、「形状を線形状に乗せる」のではなく、「形状を、線形状と同じように移動しながら増やす」のです)
また、線形状は、わかりやすいように、円_掃引をしてます。実際は、「線形状」を用意します。

スクリプトを実行して、「形状の数」を「7」に、「位置」に、足元の線形状を設定、「ベジエパラメータ」を選択して実行すると、こうなります。

コピー形状は、コントロールポイントを基準に並びます。


今度は、「ベジエパラメータ」ではなく、「距離」を選ぶとこうなります。

長さで、等分割された場所に並びます。
「距離」を選ぶと、膨大な時間がかかります。特に、形状の数を多くするとShadeごと固まるので気をつけてください。


こんどは、「ベジエパラメータ」に戻して、「接線方向を向かせる」をチェックします。


これを、「距離」で「接線方向」を向かせると、

こうなります。


「距離」で、たしか、70個だったか、。こんな意味不明なことはよしましょう。


次は、「方向」と「拡大」を試します。

こんなシーンを用意します。
球を貫いている形状を、「位置」にします。形状の数は、「20」にしてみました。それと、「距離」を選択しました。


こうなります。

球の下にある、斜めの線形状を、「方向」と「拡大」の両方に指定してみます。

こうなります。
「拡大」率は、「方向」で指定した方向にそった方向に適用されます。よって、「方向」ガイドラインを指定しないと、あんまり意味ありません。

「均等拡大縮小」をチェックすれば、こうなります。


次はこんなことを。。
下の丸い線形状を「位置」に。上の波打った線形状を「方向」と「拡大」に設定します。
さらに、「接線方向を向かせる」をチェックします。
「形状の数」は、確か80個だったか、、、

すると、


こうなります。

「均等拡大縮小」させると、

こうなります。
形状が、「拡大」で指定した線形状について、ぴったりフィットしていないのは、

9/8訂正
位置ガイドと、方向ガイドの両者で、パラメータの指定に、「距離」と、「ベジエパラメータ」を混ぜているからです。
どちらかに統一すれば、ぴったりになります。



また、それぞれのガイドラインは、ポイントがひとつからなる線形状を指定することも出来ます。
その場合、形状は、常に同位置にいたり、常に同じ方向を向いたりします。


また、別に、「方向」と、「拡大」は特に同じ線形状である必要はありません。
私の場合は、同じほうが直感的で嬉しいのでそうしてるだけで、「方向」と「拡大」に別の線形状を指定しても面白いです。

「位置」を、ポイントがひとつの線形状にして、「方向」と「拡大」は、このサイトにおいてある、「guruguru」で作った線形状を指定しました。


形状の数を調整するだけで、バリエーションいっぱい!!


これは、「均等拡大縮小」をしてみました。


そういえば、このサイトのトップページも、これのバリエーションね;;;(8/16現在)

注意!
「拡大」ガイドラインの始点と、「位置」ガイドラインの始点は、くっつけてはいけません。
初期拡大率が「0」となってしまいます。

注意!
「方向」ガイドラインと「位置」ガイドラインも、なるべく、くっつけないでください。


希望の結果を得るために・・・
・まずは、少ない形状で試してください。いきなり、100個とかやると固まります。
・「距離」よりも「ベジエパラメータ」で試してください。数百倍早いです。しかも、「ベジエパラメータ」でも、距離的に等間隔っぽいことはよくあります。
・マシンパワーが良いからといって、計算精度を上げないでください。精度をあげても、目ではわかりません。精度をめちゃ下げておいたほうがいいです。
・ガイドラインは、出来る限りハンドルを出してください。完全にアンスムーズなポイントでは、予測しない結果になることがあります。

・それぞれのガイドラインについて、「ベジエパラメータ」と「距離」を混ぜると、ずれがひどくなる傾向があります。どちらかに統一するといいでしょう。
・形状や、ガイドラインを含むパートや、それより上の階層に対して変換がかかっていると、かなり頻繁に、おかしな結果になります。明らかにおかしい(たとえば、方向ガイドラインとはまったく別の方向を向いていたり)する場合は、そのパートの変換をリセットしてください。R5では、隠しメニューのリセットオールマトリクスとかのコマンドで出来ます。


最悪、エラーになった場合、スクリプトウィンドウで、「allow_update」を打ち込んで、実行してください。(って、どこまでもいい加減だな・・)



実におもしろいスクリプトです。
作例だけあげときます。というか、疲れたので、並べるだけ。。。
それと、面白い作品が出来たら教えてねーーー;;







special thanks!!
スクリプトを作成するにあたって、
加藤氏の公開しておられる、「私家版Bezier講座」を参考にしています。
というより、元ネタから、ベジエの計算式まで、すべて、このベジエ講座あってこそです。。

tclスクリプト作成において、
もっとTcl/Tkというページを参考にしました。tcl初心者にとって、必読です。リファレンスとして、常にバックグラウンドで開いていました。


今回のバージョンは、コメントつきになっています。参考にしていただくのはかまいませんが、明らかな誤りなども含まれています。お気をつけください。