Community画像github.com

draw-anything(なんでも描画)

数式を使ってあらゆる画像を描画または正確にトレースします。ベジェ曲線、フーリエ級数(エピサイクル)、符号付き距離関数(SDF)、陰関数・媒介変数・極方程式、Tupperの公式などの手法をサポート。Desmosの数式やGLSLも出力します。

draw-anything(なんでも描画) とは?

このスキルは、「数式で描く」「フーリエで」「回転する円で」「SDFで」「Desmosで」「Tupperの公式で」といったリクエストに応えて、画像を数式で描画またはトレースするためのものです。ユーザーは多くの場合、コンテンツクリエイターや動画編集者を想定しています。 対応プラットフォーム: Claude Code(コマンドライン)、Codex、CursorなどのAIエージェント。 仕組み: - `trace_image.py` で画像をベジェ曲線(Potrace)に変換し、必要に応じてフーリエ級数でアニメーション化します。 - `fourier_draw.py` でテキストやSVGパスをフーリエ級数(エピサイクル)に変換し、アニメーションを生成します。 - `sdf.py` ライブラリを使って符号付き距離関数で複雑な形状を合成します。 - `curves.py` で陰関数・媒介変数・極方程式をプロットします。 - `tupper.py` でTupperの公式を用いたビットマップのエンコード/デコードを行います。 出力形式: 静止画(PNG, SVG)、動画(MP4, MOV, WebM)、Desmos用数式、GLSLコード。透過動画(MOV ProRes 4444, WebM VP9)も生成可能で、Premiere Pro、DaVinci Resolve、After Effects、Final Cut Proなどの編集ソフトに直接取り込めます。 このスキルは、数学アート、ジェネラティブアート、ロゴ/サインのエピサイクル表示、画像の数式変換など、視覚的な数学コンテンツの制作に特化しています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/devgabrielmarcondes/draw-anything/tree/HEAD/skills/draw-anything

Installed? Explore more 画像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Draw Anything(なんでも描画)

リクエストを数学的な描画に変換し、その数式も一緒に提供します。ユーザーは多くの場合、コンテンツクリエイターや動画編集者です。正しい形式でファイルを提供し、手法をわかりやすく説明します。

手順

  1. 主題、出力先(Reels、投稿、YouTube、動画オーバーレイ)、静止画か動画か、色を確認します。情報が不足している場合はデフォルト(正方形、ダークテーマ)を使用します。デフォルト値はユーザーに伝えます。質問は最小限にしてください。
  2. 下の表から手法を選択します。ユーザーが手法を指定した場合はそれを使用します。
  3. ユーザーから画像が与えられた場合、trace_image.py でトレースします。トレースの方が新規描画よりも正確です。
  4. 画像がない場合は、自分でジオメトリを作成します(「画像なしで描画する」を参照)。
  5. 高速プレビュー(540px、フレーム数少なめ)を生成し、画像ビューアで確認します。プロポーション、フレーミング、色を調整し、満足のいく結果が得られるまで繰り返します。
  6. 要求されたサイズで最終ファイルを生成します。
  7. ファイルを出力フォルダに配置し、提示します。手法、主なパラメータ、すぐに使えるキャプションを含む短い返信を行います。

手法の選択

リクエスト手法スクリプト
画像のトレース(描画、ロゴ、文字、シルエット、イラスト、写真)ベジェ(Potrace)+輪郭ごとにフーリエでアニメーションtrace_image.py
名前、サイン、新しい輪郭、「円で描く」フーリエfourier_draw.py
塗りつぶし形状:アイコン、マスコット、ロゴ、シーン、パターン、曼荼羅SDFsdf.py(ライブラリ)
方程式そのものを主題に、有名な曲線、塗りつぶし領域陰関数curves.py
螺旋、バラ曲線、リサジュー図形、スピログラフ媒介変数/極方程式curves.py
ピクセルアート、「自分自身を描く公式」Tuppertupper.py
フラクタル、植物、フローフィールドその他自作コード(references/methods.md §7)

フーリエだけでは鋭い角を正確にコピーできません(ギブス現象)。正確なコピーにはベジェを使用し、アニメーションにはフーリエを使用します。

スクリプト

すべてのスクリプトは scripts/ にあります。スクリプトは --help で全オプションを表示します。共通オプション: --size(reels, post, square, youtube, thumb, 4k または WxH)、--theme(dark, light, neon, blueprint, paper)、--transparent。 依存パッケージ:numpy、matplotlib、Pillow、imageio/ffmpeg、OpenCV、scikit-image、potracer(スクリプトが不足していればpipでインストールします)。

画像をトレース:

python scripts/trace_image.py drawing.jpg --svg d.svg --png d.png --desmos d.txt
python scripts/trace_image.py drawing.jpg --anim d.mp4 --anim-style fourier --centerline --size reels
python scripts/trace_image.py sketch.png --centerline --svg sketch.svg      # 編集可能なストローク
python scripts/trace_image.py logo.png --mode color --colors 5 --svg logo.svg
python scripts/trace_image.py photo.jpg --mode edges --anim lines.mp4
  • --mode ink(デフォルト):線画、ロゴ、文字、シルエット、スクリーンショットに適しています。明るい背景に暗い線画の画像を自動検出し、黒枠を除去します。
  • --mode color --colors N:イラスト、版画、絵画、アイコン、写真に適しています。アートワークや写真には12~16色を使用します。版画、漫画、インクアートには --lines を追加します:細い暗い輪郭と小さな明るいディテール(泡、星、ハイライト)のための最上位レイヤーが追加されます。--detail 1 でより小さなディテールを保持します。
  • --mode edges:写真を線画に変換します。
  • --centerline:線画、スケッチ、手書き文字、サインに適しています。各ストロークが、その線幅を持つ1つの編集可能なSVGパスになります(Illustrator/Figma/Inkscapeのペン線として)。接合部、交差部、鋭い角は修復され、直線部分は正確な線になり、ストロークの端(丸/角)はインクから検出されます。上書きするには --cap と --join を使用します。--centerline なしの場合、SVGは塗りつぶし輪郭になります(ロゴ、文字、シルエットに最適)。
  • --anim-style pen:ベジェ曲線を描画してから塗りつぶしを表示します。--anim-style fourier:各輪郭またはストロークに対して1つのエピサイクルチェーンを使用します。カラーモードでは、エピサイクルは最も長い領域の輪郭(--max-strokes、デフォルト800)を描画し、その後カラーベクトルがフェードインします。
  • --keep-colors:元の色を保持します(インクモード)。--detail N で小さな点を無視します。--smooth 0 で鋭い角を保持します。
  • スクリプトは精度(IoU)とエッジ偏差(ピクセル単位)を出力します。ストロークの場合、エッジ偏差の方が優れた指標です:平均が約0.8px未満なら非常に正確なコピーです。
  • スクリプトは精度を出力します。良好な値:シルエットとロゴで95%以上、細い輪郭で88~92%、--centerline で80~88%(各ストロークは1つの幅を持ちます)。エッジピクセルはIoUを低下させます。エッジモードではこの値は参考になりません。値が低い場合は、コピーを確認して --threshold または --detail を調整してください。
  • アニメーションを作成する前に、コピーをオリジナルと並べて表示してください。

フーリエ: 各輪郭は独立した級数を持つため、パーツ間に線はつながりません。--single-line で「1本のペンストローク」スタイルになります。

python scripts/fourier_draw.py --text "Ana" --terms 300 --anim ana.mp4 --size reels --png ana.png
python scripts/fourier_draw.py --svg-path "M100 30 C 160 -20 220 60 100 170 C -20 60 40 -20 100 30 Z" \
       --terms 40 --png heart.png --desmos heart.txt

入力:--svg-path、--svg-file、--text、--points(JSON)。出力:--png(--fill)、--anim、--svg、--desmos(tは0から1)、--json。

SDF: 短いスクリプト内でライブラリとしてインポートします。

import sys; sys.path.insert(0, "<skill-folder>/scripts")
from sdf import *
P = grid("square", scale=1.2)
body = ellipse(P, 0.6, 0.45)
ears = triangle(mirror_x(P), (0.15, 0.25), (0.5, 0.15), (0.45, 0.72))
cat = smooth_union(body, ears, 0.06)
eyes = circle(translate(mirror_x(P), 0.22, 0.05), 0.07)
render([(cat, "#2b2d42", {"shadow": (0.02, -0.03, 0.05)}), (eyes, "#ffd23f")], "cat.png", theme="paper")

sdf.py のdocstringには、プリミティブ、操作、レイヤーオプションの一覧があります。アニメーション:animate(lambda t: [layers], "out.mp4", frames=120)。Shadertoy/GLSLについては references/glsl.md を参照してください。

曲線: 変数 a はアニメーション中に0から1まで変化します。色を設定するには ::#hex を使用します。

python scripts/curves.py --region "(x**2+y**2-1)**3 - x**2*y**3::#e63946" \
       --range -1.6,1.6,-1.3,1.5 --caption '$(x^2+y^2-1)^3 = x^2y^3$' --png heart.png
python scripts/curves.py --polar "1+0.3*cos(7*th+6.283*a)" --anim flower.mp4 --size reels

Tupper:

python scripts/tupper.py encode --text "HELLO" --png tupper.png --out k.txt
python scripts/tupper.py encode --ascii drawing.txt --png art.png --out k.txt   # '#' と '.'
python scripts/tupper.py classic --png formula.png

エンコードは実際の数式で自身を検証します。完全なkの値は .txt ファイルで提供します。

動画編集者向け出力

  • ソーシャルメディア:.mp4(H.264)。Slack、メール、README:.gif(最大540px)。
  • 映像へのオーバーレイ:--transparent を .mov(アルファ付きProRes 4444)、.webm(アルファ付きVP9)、またはフォルダ名(PNGシーケンス)と一緒に使用します。Premiere Pro、DaVinci Resolve、After Effects、Final Cut Proは .mov に対応しています。編集ソフトがアルファ動画に対応していない場合はPNGシーケンスを使用してください。
  • アニメーションが a を sin/cos(2π·a) の中でのみ使用する場合、ループはシームレスになります。
  • 詳しいヒント(安全領域、尺、シリーズのアイデア)については references/creator-playbook.md を参照してください。

画像なしで描画する

  • 主題を3~8個の単純な形状に分割します(猫=楕円+2つの三角形+円)。
  • 対称な主題には mirror_x を使用します。
  • フーリエの場合は、0~200のボックス内でC曲線を使った閉じたSVGパスを記述します。
  • Tupperの場合は、ASCIIでビットマップを描画します(最大17行、106列)。
  • 各プレビューで誰が見てもすぐに主題が識別できるようにしてください。

制限事項

オリジナルのデザイン、ユーザー自身のアートやロゴ、一般的な形状、パブリックドメインの作品を描画します。他人に帰属するキャラクター、マスコット、ロゴ、アート作品を、ユーザーが画像を提供した場合でも、トレースまたはコピーしないでください。それらの「類似」バージョンも作成しないでください。オリジナルのデザインを提案してください。実在の人物の写真は、ユーザーがその写真を所有しているか許可を得ている場合にのみコピーしてください。

返信

返信は簡潔に:何を描いたか、手法とその理由(1文)、主なパラメータ(項数、方程式、短いkの値)、すぐに使えるキャプション。有用なバリエーションを1行で1つ提案します。

関連スキル