オブジェクトの塗りつぶしを細い線に変換する方法は?


7

ソリッドオブジェクトの塗りつぶしを数百万(多かれ少なかれ)の線に変換する方法を見つけようとしていますか?例えば: オブジェクトを線で塗りつぶす

任意のツールを使用してもかまいませんが、理想的にはSVG形式での出力が必要です(必ずしも必要ではありません)。

拡大図: ここに画像の説明を入力してください

回答:


10

これはInkscapeの部分的なソリューションです。Illustratorのもう1つの答えは、落書きの効果をランダムでない方法で使用して、必要な直線のジグザグの塗りつぶしを得る方法であり、その結果、わずかな手動の修正(=形状が複雑な場合はギャップの塗りつぶし)のみが必要です

Inkscapeにはそのような効果はありません。粗いハッチ塗りつぶしを生成するパス効果がありますが、結果は非常に粗くなります。理論的には、Illustratorの落書きと同じにすることができますが、必要な調整機能と精度がありません。

質問者がコメントで1つのヒントを与えました:プロッターメーカー(= EggBot)によるサードパーティの拡張機能があり、類似した塗りつぶしパターンを生成できます。持っていないのでスキップします。それらを入手しようとしましたが、Inkscapeが標準的な方法でインストールされていないため、インストールが停止しました。

上半分をXY座標でY = f(x)として表すことができるように形状が垂直対称である場合、fはPython数学関数と演算子で記述された数式であり、InkscapeのFunction Plotter拡張機能でジグザグの塗りつぶしをプロットできます。例として、あなたのサークルをチェックします。

三角形のジグザグ曲線の正確な式は複雑なので、私は少しごまかさなければなりません。トリッキーなモジュロ演算が必要です。Pythonの関数でそれを書く方法がわかりません。有能なプログラマーなら、おそらくすぐにそれを言えるでしょう。

しかし、Pythonには、サイン、パイ、平方根などの一般的に知られている(= Excelと同じ)基本的な数学の要素があります。結果の曲線を後で直線に変換できるため、これらを使用します。

ここに画像の説明を入力してください

高ズームビューは、実際にはソフトカーブであることを示しています。

ここに画像の説明を入力してください

それは作るために四角形を描画し、goto文の拡張機能>>ファンクションプロッタをレンダリングします。私は正方形がxとyの両方を-1から+1の範囲で表すことを選択しました。

機能は電子機器から取得されます。振幅変調された正弦波です(キャリアなし!)。エンベロープ部分sqrt(1-x * x)は半円です。最後の数値40は、正弦曲線の完全なサイクルが40あることを定義します。概算で合計161ノードになるように定義されています。すべてのゼロクロッシングとピークにノードがあります。

さらに100サイクルにする場合は、40を100に、161を401に変更する必要があります。

すべてのノードをコーナーポイントに変換すると、計算せずに三角形の形になります。Extension Modify Path> Flatten Bezierがその仕事をします。以下はフラット化の例です。

ここに画像の説明を入力してください

Flattenを適用してから、noneツールで左端と右端を除くすべてのゼロラインノードを選択し、Delキーを押します。次に、再び平坦化して完了です。直線のみで、余分なノードはありません。

ここに画像の説明を入力してください

それをプレーンなSVGとして保存して、Inkscapeのすべての部分を削除します(結果はパスであるため、何もないはずです。関数はありません)。

関数のプロット方法は実用的ではないので、他の方法を試します。平行な直線が塗りつぶされている場合(=ジグザグなし)、一連の線を並べてクリッピングマスクを設定するか、線を形状で破壊的に分割できます。

Inkscapeには、一連の直線を作成する方法がいくつかあります

  • タイルクローニング(行を分割する場合は再リンクする必要があります)
  • パスエフェクトサブパスを補間
  • パスから生成された拡張子>補間

3番目の方法が最も簡単です。中間行をグループとして生成します。

ここに画像の説明を入力してください

線を1つのオブジェクトとして確実に保持するには、線をグループ化解除して結合する必要があります(パス>結合)。メンバーを個別に選択できるため、グループは簡単に破損します。さらに、多くのパス操作はグループでは機能せず、単一のパスまたは結合されたパスが必要です。

次の画像は、シェイプがライン上に配置され、オブジェクト>クリップ>セットが適用されたときの結果を示しています。

ここに画像の説明を入力してください

クリッピングはいつでも取り戻すことができます。元のパーツはそのままで、部分的にのみ非表示になっています。ノードがないため、行の見かけの端に何かをスナップする方法はありません。このため、線を破壊的に分割するか、クリッピングを行わないでください。パスの交点へのスナップは、Inkscapeでは非常にうまく機能します。

ペンで三角形のジグザグを描くことにより、スナップを利用できます。

ここに画像の説明を入力してください

青いジグザグは、1つの交差点ごとに1回クリックするだけで、ペンで作成されます。約1分かかりました。青いジグザグは独立した単一のパスです。

ここに画像の説明を入力してください

線分sの半分が垂直で残りの半分が傾いていることが邪魔な場合は、ジグザグを描く前に線を回転させることで修正されます。

「パス>カットパスなどを使用して線を分割する場合、ピースを1つずつではなく自動的にジグザグに組み合わせることができます。理論的にはYESです。しかし、結果が不確かになる困難があります。

最初に、同じ黒い曲線で線を分割します。上部の形状は、下にある線が結合されている場合、それらを実際に分割します(パス>結合)。「タッチした場合に選択」モード(= Alt +ドラッグ)で通常の選択ツールを使用することにより、残りを簡単に選択および削除できます。

ここに画像の説明を入力してください

次に、すべてのラインの下端ノードを選択し、ノード機能「選択したノードに参加」を試すことができます。残念ながら結果は予想外です:

ここに画像の説明を入力してください

終了接続操作に参加するすべてのノードは、束になっていると、予測できない順序を選択します。接続は1つずつ行う必要があります。上記のように、ペンでジグザグを描くのがはるかに簡単です。


驚くほど完璧、私は例のとおりに仕事をして、私が望んでいた完璧な出力だけを要求しました。
MV

イラストレーターで
フリーハンド

@ user287001ご清聴ありがとうございました。それは仕事をします!ただし、別のヒントを追加するためだけにEggBot >>ハッチ塗りつぶしも使用できますが、ジグザグの線をパッテンにするために線を結合する必要があります。
MV

@joojaa回答ありがとうございます。落書きの効果はランダムであり、必要な単一のパスはありません。
MVは

@MV設定を編集して、ランダムさを取り除くことができます。そして、あなたは誤ったギャップに加わることができます。
joojaa

5

イラストレーターの落書き効果はあなたが求めていることの多くをします

パスの塗りつぶしに落書きを適用するだけです。次に、落書きの設定が0になるように調整します。

ここに画像の説明を入力してください

次に、これはライブエフェクトなので、[オブジェクト]→[外観の展開]で展開する必要があります。

ここに画像の説明を入力してください

現在、Scribbleはシードポイント間の距離を、例とは少し異なる方法で測定します。これは問題である場合とそうでない場合があり、問題の設定でそれほど正確に説明されていません。


うわー、今だけ私は落書きの設定について学びました、ありがとう:-)
MV

0

形状のエンベロープを数学的に説明する方法を見つけることができれば、関数にsin短い周期を掛けることができます。ディスクの例でsin(100*x) * sqrt(1 - x**2)は、正常に動作するようです:

ここに画像の説明を入力してください

ここでは、Liveのあなたはスライダーでパラメータを変更することができているが、。

gnuplotmatplotlib、またはこのWebサイトから関数をSVGとしてプロットすることができます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.