mcpField
P
pixel-art-studio

pixel-art-studio

github.com/gamezxzクリエイティブ・メディア9864 回インストール16 週間前に更新
リポジトリ

pixel-art-studio について

pixel-art-studioは、ピクセルアート制作者やゲームアーティスト向けのスキルです。再生成可能なPythonスクリプトと、プレビュー・批評・修正の反復を軸に、アニメーションや画像のクリーニングにも対応します。

主な機能

  1. 01Pythonスクリプトでピクセルアートを描画
  2. 02作品をプレビューして反復確認
  3. 03パレット、レイヤー、フレームを管理
  4. 04PNG、GIF、スプライトシートを出力
  5. 05読み込んだ画像をクリーニング

活用シーン

  1. 01再生成可能なピクセルキャラクターの制作
  2. 02アニメーションフレームとゲーム用スプライトシートの作成
  3. 03生成画像や乱雑な画像の整理
  4. 04参考画像から画風を学習

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/gamezxz/pixel-art-studio --skill pixel-art-studio

インストール後、Claude Code で/pixel-art-studioを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
README.md
.gitignore
docs/
index.html
docs/assets/
knight_sheet.json
examples/
capybara-4dir.py
anime-cast.py
knight-walkcycle.py
knight-anim.py
slime-bounce.py
slime-build.py
tactical-verdant-oracle.py
tall-iron-man-repulsor.py
pixel-art/anime-cast/
build.py
pixel-art/capybara-4dir/
build.py
spritesheet.json
pixel-art/catmage-lpc/
build.py
catmage_lpc.json
pixel-art/knight-spear-lpc/
build.py
knight_spear_lpc.json
pixel-art/tactical-verdant-oracle/
tactical_oracle_validation.json
tactical_oracle_sheet.json
pixel-art/tall-iron-man-repulsor/
tall_iron_man_validation.json
tall_iron_man_beam_sheet.json
references/
animation.md
cleanup.md
export.md
references/learned/
001-chibi-jrpg-cast.md
002-dynamic-attack-canvas.md
003-dramatic-chibi-swordsman.md

詳細

ピクセルアートスタジオ

自己完結型のスタジオです。scripts/pixelstudio.py(Pillow のみ)を使ってすべてのピクセルを描くビルドスクリプトを作成し、プレビューをレンダリングして、自分の目で確認し、批評して修正する。これを繰り返します。この「確認→批評→修正」のループこそが、品質を高める仕組みのすべてです。決して省略しないでください。あなたがアーティストであり、ライブラリは単なる道具です。

要件:python3 -c "import PIL" — 見つからない場合は、pip3 install --user pillow を実行します。

ループ

  1. 概要 — キャンバスサイズ、パレット(色数の厳格な上限を設定)、スタイル、輪郭線のルール、光の方向を決めます。references/patterns.md と references/palettes.md を参照し、参考にしたスタイルが合うかどうか、references/learned/INDEX.md を確認します。

  2. ビルドスクリプト — 作業ディレクトリに pixel-art/<slug>/build.py を作成します。このスクリプトが作品の唯一の信頼できる情報源であり、実行するたびにすべてを再生成します。ピクセルを毎回すべてハードコードするのではなく、図形をパラメーター化(位置、つぶし具合、フレームのオフセット)します。アニメーションの各フレームは関数呼び出しにできます。

    import sys; sys.path.insert(0, "/Users/game/Projects/.claude/skills/pixel-art-studio/scripts")
    from pixelstudio import Sprite, PALETTES, ramp, mix
    
    BODY = ramp("#38b764", 5)            # hue-shifted 5-step ramp from a base color
    s = Sprite(32, 32, palette=BODY + ["#1a1c2c", "#f4f4f4"])
    
    def draw_slime(squash=0):            # parametric → reuse for every frame
        s.ellipse(6, 12 + squash, 25, 27, BODY[0])          # darkest first
        s.ellipse(6, 11 + squash, 24, 26, BODY[2], only="opaque")  # restack lighter, shifted to light
        s.outline(BODY[0], where="inside")                  # selout
    draw_slime()
    
    s.preview("preview.png", scale=10)   # LOOK at this file
    s.stats()                            # and read these numbers
    
  3. 実行 — cd pixel-art/<slug> && python3 build.py

  4. 確認 — preview.png を読み込みます(判断に迷ったら s.save_silhouette() や s.zoom() も使います)。references/validations.md のチェックリストに照らし合わせ、項目ごとに正直に批評します。

  5. 修正 — build.py を編集して、再実行します。ユーザーに見せる前に、最低でもループを 2~3 回繰り返します。

  6. 納品 — マスター PNG を 1x と表示用の倍率(4~8x)で書き出します。アニメーションの場合は GIF/スプライトシートも書き出し、その後、出力ファイルを open します(ユーザーの設定に従います)。

常に本来のピクセルサイズで作業します。拡大縮小は書き出し時に行い、整数倍のみとします。

API — scripts/pixelstudio.py

色の指定方法:"#hex" | (r,g,b[,a]) | パレットのインデックス(int) | None = 消去。 ほとんどの操作では、only= を使って描画範囲を制限できます。色を指定するとその色の上だけに描画し、"opaque" は不透明部分のみ、"empty" は空の部分のみを対象にします。これはマスキングの仕組みです。references/techniques.md の、図形をずらして陰影を付ける方法もこれを利用しています。

領域呼び出し
キャンバスSprite(w, h, palette=None, snap=True) · s.layer(name) · s.frame(i) · s.use(frame=, layer=)
描画px line rect(fill=) circle(cx,cy,r,fill=)(ピクセルパーフェクト) ellipse polygon contour fill(x,y) clear get(x,y) paste_png
ピクセルアート操作outline(c, where="outside"/"inside") · mirror_x mirror_y · shift(dx,dy,wrap=) · replace(old,new) · dither(box,c1,c2,mix,pattern) · gradient_dither(box,colors) · noise(box,c,density,seed)
色ramp(base, steps, hue_shift) · mix(c1,c2,t) · PALETTES · s.set_palette(p, remap=) · s.to_palette(p, dither=) · s.quantize(n)
クリーンアップ(生成画像/乱雑なアート)s.harden_alpha(threshold, steps) · s.despeckle(min_cluster) · s.dedupe_colors(tol) · s.dehalo() · s.clean(palette=, max_colors=, ...) · s.before_after(path)
アニメーションs.add_frame(copy=True) · s.set_duration(ms, frames) · s.tag(name, from, to, direction) · s.copy_cel(layer, from_frame, to_frames, link=) · s.del_frame
確認s.preview(path, scale, grid=, labels=) · s.zoom(path, x0,y0,x1,y1) · s.save_silhouette(path) · s.stats() · s.save_swatch(path) · s.used_colors()
書き出しs.save_png(path, frame, scale, bg) · s.save_gif(path, scale, tag, bg) · s.save_spritesheet(path, layout, scale, padding)(+エンジン用 JSON) · s.save_project / Sprite.load_project / Sprite.from_png(path, scale="auto", strip_bg=)

ナレッジの参照先

タスク参照先
新しいアートワーク全般(サイズ、ちび/ヒロイック/縦長タクティカルのプロポーション、シルエット優先の順序、タイル)references/patterns.md
カラ―ランプ、シェーディング、ディザリング、AA、アウトライン、テクスチャreferences/techniques.md
アニメーション(フレーム数、タイミング、パペット操作、大型の攻撃セル、安定したピボット)references/animation.md
人型キャラクター(腕2本+脚2本)— 全移動セット(歩行/斬撃/突き/魔法詠唱/射撃/被ダメージ)references/lpc.md + scripts/lpc.py — フレームをLPCユニバーサルシート(エンジン対応レイアウト)に組み立てます
パレットの選択、予算、プリセット、学習したパレットreferences/palettes.md
エクスポート形式、エンジン(Unity/Godot/Phaser)references/export.md
AI生成アート/乱雑なアートのクリーニング、パレットの固定、ハイブリッドパイプラインreferences/cleanup.md
既知の失敗パターン — 仕上げる前に確認してくださいreferences/sharp_edges.md
反復ごとの批評チェックリストreferences/validations.md
ユーザー提供アートから学習したスタイルreferences/learned/INDEX.md

ユーザー提供アートから学習する

ユーザーが学習用のピクセルアートファイル(เรียนรู้/ศึกษาไฟล์นี้)を送った場合:

永続化ルール: 学習内容はスキルプロジェクト自体を変更します。<skill> はこの SKILL.md を含むディレクトリに解決し、永続的な知識はそのディレクトリ内だけに書き込んでください。呼び出し元の作業ディレクトリ、./pixel-art/、クリップボードのパス、<file>_study/ はソースまたは一時的な分析場所であり、ナレッジベースではありません。完了した調査をこれらの場所だけに残さないでください。

  1. python3 <skill>/scripts/study.py <file> [--save-palette <name>] → <file>_study/ に zoom.png、swatch.png、silhouette.png、report.json が生成されます。
  2. zoom.png と swatch.png を読んでください — レポートには数値(実際のサイズ、パレット、ランプ、ディザリング率、アウトラインの暗さ)が示されます。目視で抽出するのは技法です。クラスターの形、AAの配置、ディザリングの位置、ランプが形状にどう対応しているか、明るい側でのアウトラインの挙動を確認してください。
  3. <skill>/references/learned/TEMPLATE.md をもとに、学習カード <skill>/references/learned/NNN-<slug>.md を作成します — ピクセル単位の観察と命令形のルールを記録し、感覚的な印象は記録しないでください。
  4. 同じ変更で、<skill>/references/learned/INDEX.md に1行追加します。
  5. 学びが1つのビジュアルスタイルを超えて応用できる場合(アニメーション、エクスポート、検証、クリーニングなど)、関連する <skill>/references/*.md のルールファイルとナレッジの参照先も更新してください。
  6. --save-palette <name> を指定すると、パレットを Sprite(palette="<name>") としていつでも使えるようになります。保存したパレットデータも入力ファイルの隣ではなく、<skill> 内にあることを確認してください。
  7. 完了前に、新しく学習した永続ファイルがすべて <skill> 内にあることを確認してください。

後で学習したスタイルのアートを作成するときは、該当するカードを開いて、そのルールに従ってください。

ハイブリッドパイプライン — 生成アート/乱雑なアートからの作成(「B」パス)

ユーザーが画像モデル(codex-imagegen、SD+LoRA、FLUX、PixelLabのエクスポート、スクリーンショット、または乱雑なPNG)からのピクセルアートを求めている場合、このスキルは決定論的なクリーニング+固定+アニメーションのレイヤーとして機能します。手順の全容は references/cleanup.md を参照してください。次の1コマンドでインポートからクリーニングまでを一括実行できます。

python3 <skill>/scripts/pixelpipe.py <gen.png> --strip-checker --max-colors 24 --display 6
# lock to a shared game palette for cross-asset consistency:
python3 <skill>/scripts/pixelpipe.py <gen.png> --palette my_game
# learn the style while cleaning:
python3 <skill>/scripts/pixelpipe.py <gen.png> --strip-checker --study knight_style

元のグリッドを復元し(粗雑な拡大にはブロックサンプリングを使用)、画像に焼き込まれたチェッカーボードを除去し、アルファを強化し、孤立ピクセルを除去し、色を重複排除して、パレットを固定し、clean.png と、引き続き編集する再生成可能な build.py を出力します。クリーニング後は通常のループ(編集/アニメーション化/パレットの入れ替えを決定論的に実行)に戻ってください。ここでスキルの能力がジェネレーターを上回ります。

規約

  • アートワークは ./pixel-art/<slug>/ に保存します(build.py とすべての出力をまとめます)。
  • エクスポートしたPNGを手動で編集しないでください。build.py を編集して再実行します。
  • ランダム性を使う場合は noise(seed=) のみ使用します。レンダリングは決定論的でなければなりません。
  • 成果物は完成時に open し、レポートには1xマスターのパスを含めます。

コメント