Communitygithub.com

concept-to-pixel-assets

コンセプトアート(絵画、AI画像、スケッチ)からピクセルアートのゲームアセットへ変換します。背景やCGのループアニメーション、キャラクターのスプライトパック、法線マップ、スプライトシート、Unity用スクリプトを生成します。

concept-to-pixel-assets とは?

このスキルは、コンセプトアートを本格的なピクセルアートゲームアセットに変換するための本番ワークフローを提供します。シーントラックでは、入力画像からネイティブ解像度の静止画とその3倍コピーに加え、パレット固定でシームレスな48フレームループアニメーションや視差レイヤーを生成します。キャラクタートラックでは、1体の正面コンセプトアートから、表情、会話アニメーション、うなずきなどのクリップ、法線マップ、スプライトシート、JSONデータ、Unityインポート用スクリプトを含む完全なスプライトパックを作成します。すべての出力は、ゲームエンジンでそのまま使用できるよう、1xピクセル密度、パレット固定、フレーム0の互換性などの厳格なルールに従います。このスキルは、ユーザーが「スキル」や「パイプライン」という言葉を使わなくても、ピクセル風への変換、アニメーションループの作成、キャラクターの表情や会話アニメーションの生成、2Dライト用法線マップの作成、Unity用スプライトパッケージの作成を依頼したときに自動的に適用されるべきものです。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ForestSenYT/concept-to-pixel-assets/tree/main

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

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

ドキュメント

コンセプトアート → ピクセルアートシーン、ループ、キャラクターパック

このスキルは、ゲームチームとの何度ものレビューを経て洗練された制作ワークフローを実現します。スクリプトは機械的な部分を担当します。以下のルールの方が重要です。これらはレビュアーが繰り返し要求した内容なので、デフォルトでこれらに従い、ユーザーから明示的に依頼された場合のみルールを破ってください。

2つのトラックは共通のツールキット(scripts/pixkitとscripts/内のCLI)を共有します。

トラック入力出力
シーン(背景 / CG)ショットごとに1枚のコンセプト画像ネイティブ静止画 + 正確な3倍コピー、オプションの48フレームシームレスループ、オプションの視差レイヤー、レビュー用PDF、README
キャラクターキャラクターの正面コンセプト1枚1x正面スプライト、8~13の表情、表情ごとのIdle/Talk、To_/From_遷移、Nod/Nod_Slow/HeadShake(+ カスタムワンショット)、法線マップ、シート+json、プレビュー、Unityスクリプト、README

セットアップ:pip install -r requirements.txt(numpy、scipy、scikit-image、opencv-python-headless、Pillow、reportlab)、さらにレビュー動画用にffmpeg。python scripts/demo/run_demo.py /tmp/demo を一度実行してすべてが動作することを確認します(合成アートのみ使用)。

0. 開始前の確認

  1. プロジェクトの既存の規約を見つけて再利用する。 以前のパック(README、マニフェスト、スプライト)を探してください。新しいキャラクターは、キャストのキャンバス、足線、ピクセル単位、アウトラインの色、高さスケールを共有する必要があります。新しい背景は、ネイティブサイズ、パレットサイズ、グレード、ビネットを共有する必要があります。セット全体の一貫性は、個々のアセットが単独で良く見えることよりも重要です。何も存在しない場合は、以下のデフォルトを提案し、その旨を伝えてください。
  2. 範囲が本当に未確定の場合のみ、範囲を決定する。 キャラクターの場合、正面セットのみにするか、側面/背面/歩行も含めるかを尋ねてください。シーンの場合、リクエストが不明瞭ならアニメーション化するかどうかを尋ねてください(静止したままにすべきショットもあります)。それ以外の場合は作業を開始し、明らかな次のステップについて許可を求めないでください。
  3. ユーザーのアートを非公開に保つ。 ファイルを直接配布します(zip + 主要なプレビュー画像)。ユーザーのアートや派生スプライトを、ユーザーが明示的に依頼しない限り公開ページに公開しないでください。

デフォルト(プロジェクトに合わせて変更してください):

シーンキャラクター
サイズ640×360 ネイティブ; 1920×1080 = 正確な3倍最近傍補間96×160 キャンバス、足線 y=155、足の中心 x=48
色数画像あたり24色(パレット固定)マテリアルごとに少数の色ランプ、パック全体で約10~30色
線アートから1 pxのアウトライン、キャスト全体で1つのアウトライン色
モーション48フレーム、12 fps、4秒、シームレスフレームごとの持続時間(ms)(60 fpsグリッド準拠)
UnityPointフィルター、圧縮なし、Max Size 4096、PPU 32同上; ピボット (0.5, 0.025)

1. ハウスルール

各ルールは、レビュアーが行った修正に由来します。これらは好みではありません。

  • 1xピクセル密度。 1つのアートピクセルは1つのゲームピクセルに相当するため、詳細密度を2倍にしないでください。シーンはネイティブサイズで構築され、整数倍でのみ拡大縮小されます。
  • すべてをパレット固定に。 アニメーションフレームは、静止画自体の色のみを使用できます。loopfx 内のすべてのエフェクトはパレットインデックスで動作するため、新しい色は出現できません。
  • フレーム0 = 静止画、ループはシームレス。 すべてのモーションは周期の関数であり、周期は整数です。ループのフレーム0を静止画(*_STILL_frame0.png)として同梱し、2つをジャンプなく交換できるようにします。
  • 目はまばたくだけ。 ユーザーが特定の視線を要求しない限り、一瞥、目玉の動き、見回す動作は禁止です。要求された場合は、その1つの視線のみを作成し、それ以上は作りません(例:「1秒間下を向く」というリクエスト)。
  • 髪は、物理的に動かすもの(頭のうなずき、体の歩行や回転)がある場合のみ動く。 風や呼吸によるゆらぎは禁止です。1pxの呼吸による痙攣はグリッチと認識されるためです。
  • 剛体は決して揺れない。 道路、ガードレール、柱、ドック、岩、家具、車内はすべてのフレームでピクセル固定(static マスク)にします。水の波紋は、岸、柱、葦から2~3 px離してください。
  • 単一ピクセルの点滅は禁止。 孤立したピクセルの点滅はデッドピクセルと認識されます。埃は漂うものであり、きらめくものではありません。きらめきはまばらに保ちます。
  • ブロック全体をピクセル単位で動かす。 呼吸は胸部より上のすべてを1 px持ち上げます。うなずきは頭部ブロックを1 px動かします。行を独立してずらさないでください。それはアウトラインを引き裂きます(「撕裂」)。
  • 表情はまばたきの中で入れ替える。 顔は目が閉じている間に変化します。すべてのワンショットクリップはIdleフレーム0で開始し、ターゲットのIdleフレーム0で正確に終了します。
  • AIが間違えた部分を修正し、ストーリーはそのままにする。 AIアーティファクト(まだらな表面、疑似テキスト、不定形な塊、欠けた手、ありえない光、ありえない装飾)を削除します。ストーリーに関連するコンテンツ(キャラクター、手がかり、文字)を自分で追加または移動しないでください。それらのケースは「確認が必要」としてリストアップします。
  • 同じカメラ、同じピクセル。 2つのショットがカメラまたは場所を共有する場合、確立されたピクセルを再利用します。これは、部屋、車内、ランプのちらつきのタイミング、パレットに適用されます。それらの間のカットはジャンプしてはいけません。
  • 「Xをアニメーション化しない」を尊重する。 ユーザーが静止画のみを要求した場合、または何かを動かさないように要求した場合、それをロックし、他は何も変更しません。

2. シーントラック

最初のシーンの前に references/scene-pipeline.md を読んでください。アニメーション化する前に references/scene-loops.md を、そしてレイヤリングの前にその視差セクションを読んでください。

  1. 2段階でピクセル化し、その間に手動修正を挟めるようにする。

    python scripts/scene_to_pixel.py concept.png OUT --name BG02 [--smooth 8,16] [--keep x0,y0,x1,y1]
    # -> OUT/BG02_stylized.png (未グレーディング) + OUT/BG02_compare.png
    

    stylize は「手描き風の簡略化」を行います:

    • ソースから取った約22色に削減;
    • 各オブジェクトを最大3トーンにフラット化;
    • 斑点を吸収;
    • 小さな明るい特徴(ランプ、窓)や細い線(レール、道路標示)を保護。

    --keep は、シーンのロジックを伝える正確な形状を持つ小道具に使用します。--smooth は、ざらついた、GIF、またはJPEGソースに使用します。ステージ1はまた、BG02_native.png(ライトとマスク用にリサイズされたソース)と BG02_protected.png を書き出します。保護マスクに不要な線がないか確認します。

  2. 拡大して検査し、手動で修正する pixkit.scene を使用:

    • ramp_paint はまだらな床、机、壁をフラットな照明バンドに変えます;
    • inpaint は物を削除します;
    • line_mask_src は継ぎ目を描き戻します;
    • 同じカメラを共有する以前のショットからペースト。

    光源の方向、到達可能性、連続性を確認します(リファレンスのロジックチェックリストを参照)。

  3. 仕上げ:python scripts/scene_to_pixel.py OUT/BG02_fixed.png OUT --name BG02 --finish --grade cold_dusk。 これによりパレットにグレーディングが適用され、4レベルのディザリングされたビネットが追加され、結果が24色にロックされます。カットが連続するショットはパレットを共有する必要があります:scene.finish(a, extra=[b]) を使用します。

  4. ループ(必要な場合):

    • マスクをPNGとして作成します。色を選ぶか、numpyでポリゴンを描画し、静止画に重ねて確認します。
    • スペック(assets/examples/loop_spec.example.json)を書き、python scripts/make_loop.py spec.json を実行します。
    • 監査結果を読みます。new_colours: 0、隣接フレーム間の平均変化と同程度の継ぎ目変化、8回以上切り替わるピクセルが少ないことを期待します。
    • レビューmp4を確認します。数値だけではすべてを捕捉できません。
  5. 視差(カメラがスクロールする場合):リファレンスを参照してください。簡潔に:

    • 歩行可能な地面とその上のすべてを1つのレイヤーに保ちます;
    • 約0.3 / 0.45 / 0.6 / 1.0の速度係数を使用します;
    • 背面レイヤーの隠れた部分を、完全でシームレスにタイリング可能なパノラマとして埋めます;
    • アニメーション化された行バンドのみをシートとして出力します(pixkit.parallax)。
  6. パッケージ化 references/packaging.md を使用:

    • still/、loop/<name>/frames_native/、_1920 コピー、レビューmp4;
    • すべてのシーンパックのレビューPDF(scripts/make_review_pdf.py);
    • ユーザーの言語でのREADME。

3. キャラクタートラック

最初に references/character-pipeline.md を、次に references/character-animation.md を読んでください。

  1. 初稿:

    python scripts/sprite_from_concept.py concept.png WORK --height 148 [--materials materials.json]
    

    キャストの他のメンバーと同じ --height を使用して、全員が1つのスケールを共有するようにします。スクリプトは以下を書き出します:

    • キャンバス上の生のスプライト;
    • コンセプトとの比較;
    • ASCIIダンプ;
    • info.json(コンセプトの座標をキャンバスにマッピング)。

    --materials は各マテリアルを固定ランプにスナップします。領域を使用して、同じ色のマテリアル(襟の上の髪、エプロンの下)を分離します。内部のストロークはマテリアルの最も暗いトーンになります。

  2. 手作業でベースを仕上げる。 これが実際の作業であり、特に顔は必ず必要です。なぜなら、ダウンスケールは目と口を破壊するからです。

    • pixkit.sprite.Symbols を使用して領域をテキストとしてダンプおよびペイントし、grid_zoom で表示します。
    • 顔を再描画し、コンセプトの目のスタイルを維持します。
    • 手と小道具をクリーンアップし、ニアデュープリカラーマージ、fill_enclosed_holes。
    • 5倍でコンセプトと、同じスケールでキャストと比較します。
  3. 無表情の顔ベースを作成する:目、口、眉を肌色で塗りつぶした同じスプライト。鼻やその他の永久的な特徴は残します。

  4. キャラクター設定を書く(assets/examples/character.example.json):

    • 顔のリグ:各特徴はボックス、各状態は小さなキャラクターグリッド;
    • 表情;
    • 会話口のオーバーライド;
    • 追加のパフォーマンス;
    • ユーザーの言語でのプレビューラベル;
    • 法線マップパートルール;
    • Unity名。

    構築前に、表情を互いに比較しながら4~8倍のズームでデザインします。前髪が眉を隠す場合、目と口が表情を伝えます。

  5. 構築+監査:python scripts/build_character.py character.json。

    • リグの中立な顔がベースをピクセル単位で再現しない場合、スクリプトは実行を拒否します。不一致があるとすべての遷移がジャンプするためです。
    • パック全体と audit.json を書き出し、問題(パレット、浮遊ピクセル、穴、連続性、口の外の会話フレーム、目の外のまばたきフレーム、法線マップの決定性)がある場合は非ゼロで終了します。
  6. 目視確認する。

    • previews/expressions_2x.png、previews/frames/*、previews/scale_with_cast_3x.png、previews/normals_lit_3x.png を開きます。
    • Playwrightで previews/interactive_preview.html を再生するか、ユーザーに開くよう依頼します。
    • 見た目がおかしい部分を修正し、再構築します。

4. 納品と反復

  • すべての納品は新しいバージョン:name_V01、次に V02、といった具合です。以前のバージョンを上書きしないでください。READMEの先頭に変更ログを置きます:

    • 何が変わったか;
    • なぜか(対応するフィードバックを引用);
    • 何がチェックされたか。

    変更するつもりのなかった部分はピクセル単位で同一に保ち、それを確認し、その旨を記述します。

  • ユーザーの言語でREADME。 references/packaging.md のセクションパターンを使用します:仕様、ファイル、動くもの、修正されたAIアーティファクト、見つかったロジックの問題、確認が必要な事項、Unityの手順、チェック項目。具体的な数値を使用します(「264フレームスキャン、13色、0浮遊ピクセル」)。Unity内で実行されなかったスクリプトは「未テスト」とマークします。

  • 推測ではなく、未解決の質問を提起する。 例:コンセプトになかった口が追加された場合;同じカメラで撮影された2つのショット間で移動したキャラクターや小道具;ストーリーの時間帯と矛盾する装飾要素。選択肢を提示します。

  • zipと1~3枚の主要なプレビュー画像を送信し、短い概要を伝えます。すべてのステップを説明する必要はありません。

5. QA

納品のたびに references/qa-checklist.md を実行します。監査でほとんどの部分が自動化されます。拡大でのビジュアルパスが残りを捕捉します:テアリング、這うディザリング、揺れながら厚みが変わる形状、地面と一緒に動かない霧、あごのラインに触れる口、ジャンプする半まばたき。

リファレンスファイル

ファイル読むタイミング
references/scene-pipeline.mdシーンをピクセル化するとき:スタイライズパラメータ、AIアーティファクトとロジックの修正、グレード、共有パレット
references/scene-loops.md静止画をアニメーション化するとき:エフェクトカタログとパラメータ、既知の失敗モード、ランプのちらつき、CG人物、画像から動画へのクリップ、プロシージャルカメラムーブ、視差
references/character-pipeline.mdコンセプト → 1xベーススプライト、顔の再描画、ASCII編集
references/character-animation.md顔のリグ、表情デザイン、クリップセットとタイミング、モーションルール、側面/背面/歩行の拡張
references/normal-maps.md法線マップ手法、パートルール、Unityライティング設定
references/packaging.mdフォルダレイアウト、json/マニフェスト形式、READMEテンプレート、レビューPDF
references/qa-checklist.mdすべての納品前

関連スキル