mcpField
I
illustration-line-interior

illustration-line-interior

github.com/mengtoクリエイティブ・メディア7.1k280 回インストール3 日前に更新
リポジトリ

illustration-line-interior について

人物のいる室内シーンを描くためのデザインスキルです。落ち着いた製品マーケティング向けに、細い藍色の輪郭、白い塗り、少量のフラットな差し色を定め、再利用可能なSVG描画部品を備えています。

主な機能

  1. 01細い藍色の輪郭と白い塗り
  2. 02影を使わない少量のフラットな差し色
  3. 03人物、ポーズ、手の描画ヘルパー
  4. 04室内の植物や家具の部品
  5. 05再利用可能なSVGイラストツールキット

活用シーン

  1. 01ホワイトボードで作業する人物の描画
  2. 02室内の製品マーケティングイラスト制作
  3. 03家具や機器を使う人物の表現

インストール

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

$npx skills add https://github.com/mengto/skills --skill illustration-line-interior

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

同梱ファイル

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

style.json
agents/
openai.yaml
demo/
index.html
PROMPT.md
examples/
books.svg
remote-work.svg
whiteboard.svg
references/
craft.md
scripts/
interior.mjs
lint.mjs
render.mjs

詳細

イラスト:線画の室内

落ち着いたエディトリアル調の線画スタイルです。小さなスケールで部屋全体を描き、人物の頭身は約7頭身にします。すべての形を細いインディゴの線で一度だけ縁取り、白で塗り、アクセントカラーを少し加えます。派手な色を使わずに「働く人々」を描きたいプロダクトマーケティングに適しています。 大きな頭のキャラクターを、黒に近い約2.4 px の線で縁取り、大胆な塗りを使う場合は illustration-outlined-cartoon を使用してください。シーンをパステルカラーのカード上の色付きパネル内に配置する場合は illustration-framed-panel を使用してください。輪郭線を一切使わない場合は illustration-flat を使用してください。

14種類のスタイルで制作された42点のオリジナルのデザイン・コーディングカードから抽出しました。examples/ にある3枚のカードは、このスタイルで公開されているカードです。

一文で表すスタイル

白で塗った形を均一な細いインディゴの線(1.4 px)で縁取り、広々として風通しのよい部屋に配置します。カード全体に占めるフラットな色の割合は7%未満です。

パレット

3つのサンプル(塗りと線、1x レンダリング)から測定しました。ピクセルの約85%を白とカードが占め、インディゴの線は約2%、アクセントカラーは4~7%です。

役割Hex使用箇所
インディゴの線#3a2d66すべての輪郭線、床の線、目の点、インディゴの髪(髪は線の色で塗った形)
壁の線#cfc9e0背景の装飾線のみ(レンガ、ランプ、ポスター、雲、鳥、スカイライン、手すり)。塗りには使いません
白#ffffffすべてのデフォルトの塗り:家具、シャツ、画面、鉢、本、スニーカー、マグカップ
ピーチウッド#f9c99a木材:はしごの横木と踏み板、柱、スツール、木箱、縞模様の鉢
マスタード#f5c35a本、アヒル、電球、スニーカー、付箋、ピアスのスタッド、トップス
オレンジ#f6a85e鉢、ズボン、アヒルのくちばし、茶色い髪のつや線、コードのダッシュ1つ
コーラル#ef5b5bスニーカーまたは靴底、ラベル、マーカーの先端、マグカップの帯、コードのダッシュ1つ、窓の点
ティール#3fa58a本、トップス、マグカップの帯、ハンモックの縞、チェックマーク
セージ/リーフ#8cc79b / #5fae7a明るい葉と濃い葉を交互に1枚ずつ
ラベンダー#ab9ee6本、トップス、ページの線、キーボードの線、スニーカーの靴底
パープル#7f6cc4本、ズボン、インディゴの髪のつや線、コードのダッシュ1つ
デニム#7f9fdcジーンズ
ブラウン#7b4b3a茶色い髪、カップの中のコーヒー
肌色#f3cdb0 #e2a57c #b47852 #7a4b33明るい、中間、濃い、暗い色。1枚のカードに2人描く場合は、異なる肌色を使います
  • 使用禁止:グラデーション、不透明度の変更、ドロップシャドウ、ハッチング、黒、グレーの塗り、壁の線の色を使った塗り、色付きの背景矩形。
  • 物体ごとにアクセントカラーは1色です。人物の服装に使うアクセントカラーは白を除いて最大2色です。トップス、ズボン、スニーカーのいずれかは、アッパーか靴底を白にします。
  • 同じ色相の大きなアクセント形状を接触させないでください(コーラルの靴とコーラルのラグなど)。棚、ボード、机、ハンモックなどの大きな形状は白かピーチにします。

線と塗り

  • 2 つのレイヤーを使用します。背景:<g id="xx-bg" fill="none" stroke="#cfc9e0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round">。前景:<g id="xx-fg" stroke="#3a2d66" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round">。図形はストロークを継承し、それぞれ独自の fill を設定します。
  • 輪郭は塗りつぶした図形にストロークを適用して描き、塗りつぶした輪郭図形は使いません。すべての前景図形には塗りを指定します(ほかに指定がなければ白)。これにより、重なった部分では背後が隠れます。奥行きは重ねる順序だけで表現します。奥から手前に、胴体より先に遠い側の手足を描きます。
  • 幅 480 px の場合の線幅:すべての輪郭は 1.4、細部の線(布のしわ、葉脈、本の帯、レースの刻み、耳の内側、眉、鼻、口、湯気、x 印、髪のツヤ)は 1、指の境目は 0.9、ホワイトボードの図の線は 1.2、画面上のコードを表す色付きのダッシュは 1.7~1.8、箇条書きの点は 2.2(M190 146h0.1)。
  • 影:なし。トーンの段階、ハッチング、ハイライトは使いません。しわは 1 px の曲線を 1 本、長さ 4~8 px とし、衣服 1 着につき 2~3 本にします。
  • テクスチャ:小さな x 印(xm()、3 px、ストローク 1)を、鉢または箱 1 つにつき 2~4 個付けます。衣服には付けません。
  • 文字:font-family="ui-monospace, monospace" font-weight="700"、4.4~5.2 px、2~5 文字(JS、CSS、UX、API、CACHE)を小さなラベルの矩形に配置し、stroke="none" にします。
  • 角丸:本やレンガは rx 0.6~1、家具の天板やフレームは 1.5~2.5 にします。

キャラクター

  • 比率:立ち姿は頭頂から足先まで229~235 px、頭(顎から頭頂まで)は33~36 pxで、比率は1:7です。細身で、肩幅は約30、脚の腰部分の半幅は9.6~11、裾に向かって5.6~5.8まで細くなります。
  • 頭:ツールキットのhead()で描画します。左向きまたは右向きの3/4プロフィールを描きます。鼻と顎を輪郭に含む顔のパスが1つ、後ろ側に耳、近い側の目の点(半径1.15)と遠い側の目の点(半径1.0)が4.9離れて配置され、眉が2本(各1 px)、鼻孔の短い線、短い口の弧があります。頬に色は付けず、瞳や開いた口も描きません。穏やかで、わずかに微笑んだ表情です。
  • 髪:インディゴ#3a2d66(紫#7f6cc4の光沢の弧を1~4本)または茶色#7b4b3a(オレンジ#f6a85eの光沢)のベタ塗りの形を1つ使います。プリセット:afro、bun、side、crop(+beard、glasses、earring)。アフロの後ろ側の毛束はbehindとして返されます。胴体より先に描画してください。
  • head(x, y, rot, opts)は画面上の度数で回転します(+は時計回り)。右向きの頭は下向きに、左向きの頭は上向きにうなずく形になります。人物の視線の方向へ4~9°傾けます。
  • 首と胴体:torso(hx, hy, { style: 'tee' | 'top', facing, fill, skin })は、首、幅30~34の柔らかなシャツの形(クルーネックのTシャツ、または小さなV字の襟が付いたフィット感のあるトップス)、1 pxの折り目を2本描きます。すべて頭の中心を基準に配置されます。TORSO_ANCHORS[style]は、頭の中心からの相対位置で肩、腰、ウエストバンドの各点を返します。左向きの人物ではx座標を反転させます。トップスは白またはアクセントカラー1色にします。
  • 袖:sleeve(S, arm.u, 13, 5.8)で上腕に袖を付けます。腕の後に描画します。半幅を6未満にして袖を平らにすると、肩パッドのように見えません。
  • 腕:半幅を肩で4.4~5、肘で4~4.4、手首で3.2~3.4にしてbentArm()を使います。外側の肘が尖った形になります。arm.Iから3 pxの折り目線を追加します。上腕は27~40、前腕は24~33です。solveElbow(S, wrist, 35, 30, flip)を使い、flipの両方の値を試します。適切な値では、肘が肩と手首を結ぶ線より下に垂れます。手首は肩から45~60 px離します。それより近いと、腕がチキンウィングのように折れ曲がります。
  • wristFor(HANDS[name].tip, target, angle, scale, flip)を使って指先を対象に合わせます。腕の位置を求めるための手首の点が返されます。
  • 横向きの人物でも、遠い側の腕を描きます。腰の後ろ(または持っている物の後ろ側に前方へ)振り、胴体より先に描画します。前腕とrestの手が胴体の下に見えるようにします。腕が片方しかないと、「腕が片方ない」ように見えます。
  • 手(ツールキットのHANDS):スケール1.05~1.15でローカル座標上の17単位、つまり長さ18~20 pxほどで、顎から眉までの顔の長さとほぼ同じです。指は丸みのある帯状の形が3~4本で、間に0.9の線があります。中指が最も長く、小指が最も短くなります。形状:type(キーの上に手のひらを下向きに置く)、cup(マグカップを包み、親指を縁にかける)、wrap(同様に包むが、親指は物の後ろに隠す)、marker(ペンを握る拳。HANDS.marker.pen()を使う)、point(人差し指を伸ばし、親指を畳む)、rest(力を抜いた手)。
  • すべての手の形では、親指はローカル座標の−y側にあります。references/craft.mdの表を使ってLEFTまたはRIGHT、PALMまたはBACKを決め、親指を+y側に置く場合はflip = trueを渡します。
  • 脚と足:立ち姿の脚にはtrouserLeg()を使います(裾が細く、裾は平らで、5.2 pxの折り返しカフ、足首の肌が4~10 px見える)。座る、または歩く姿勢にはbentLeg()とcuffAndAnkle()を使います。sneaker()は25 × 10.6で、3 pxのソール帯と靴ひもを示す線が2本あります。かかとを床の位置に置き、scale(-1 1)で反転させます。各ズボンの脚は、靴のshoeOpening(heel, rot, mirror)の位置で終わらせます。
  • つま先立ちの後ろ足:heel = liftedHeel(toeX, 22–28, mirror)としてから、sneaker(\translate(heel) rotate(deg)`)を使います。靴を反転する場合は、rotate(-deg) scale(-1 1)とshoeOpening(heel, -deg, true)`を使います。
  • うまくいくポーズ:棚やボードに手を伸ばす、またはボタンを押す姿勢では、上半身を4~9°傾けます(腰を中心に上半身のグループと肩の点をrotAbout()で回転させます)。後ろのかかとを上げ、つま先だけを床に接地させます。太ももにノートパソコンを載せてハンモックに横たわる姿勢。腰掛けに座り、片足を横木に乗せ、カップを持つ姿勢。

装飾と小道具

  • 背景レイヤー(壁の線、塗りつぶしなし)は全体的に淡く、控えめにします。レンガのまとまりを2~3個(1つにつきレンガ3~5個。bricks()、14 × 6、行間は7)、カードの上端から吊るしたペンダントライトを1~2個(lampDome()、lampCone())、釘に掛けた額入りポスターを1枚(poster()。中にはシンプルなアイコンを入れます)。屋外の場合は、輪郭線だけの雲を2~3個、鳥を2~3羽、レンガの代わりにスカイラインと手すりを配置します。
  • 前景はカードごとに、主題を表すメインの小道具を中央に1つ(はしご型の棚 98 × 203、キャスター付きホワイトボード 160 × 256、支柱の間に掛けたハンモック 幅260)。端の一方に背の高い鉢植えを1つ(幅60~68、高さ150~185)、反対側にサブアイテムを1つ(モニターとマグカップのあるデスク、小型のサンスベリア、同僚が座るスツール)。小さな小道具を2~4個(1 px の湯気のカールを2本添えたマグカップ、罫線とラベルの付いた本、ラバーダック、付箋、ウィンドウの点と色付きのコードの短い線を表示したモニター)配置します。
  • 植物:leaf()(葉脈のある細長い葉)、figLeaf()(フィドルリーフ・フィグ)、blade()(サンスベリア)を使用します。茎は鉢から伸びる1.4 px の開いた曲線とし、葉はセージグリーンとリーフグリーンを交互に使います。鉢はpot()を使用し、x印のある白、1 px の帯模様が入ったピーチ色、またはオレンジにします。
  • 禁止事項:きらめき、紙吹雪、浮遊するアイコン、吹き出し、オブジェクトの下の影、ラグ、メインの小道具の横に置く床上のアイテムが3個以上。

構図

  • 背景の矩形は使いません。カードは白です(例では背景を使っていません)。表示先のページが白でない場合は、最初に全面を覆う正方形の#ffffffの矩形を追加します。
  • 床の線は y 308 に配置します:M56 308H424M40 308h10M430 308h10。足、鉢、脚、キャスターはすべてこの線上に置きます。下の帯(y 308~360)は空けておきます。
  • コンテンツは x 33~445 の範囲に収めます。端に触れてよいのはランプのコード(上端)のみです。それ以外はすべて y ≥ 25 に配置します。
  • 左から右へ:背の高い植物(x 33~121)|人物が使っているメインの小道具(x 115~335)|サブの家具または植物(x 330~445)。左右反転は自由ですが、メインの小道具は中央に保ちます。
  • 人物の幅は94~190 px、立ち姿の高さは235 px にします。焦点となる動作は1つに絞り、人物の手元で表現します。
  • 密度:前景オブジェクトは植物の葉を含めて約10~14個にします。グループ間には十分な余白を設けます。ここでは、ごちゃごちゃした構成は不適切です。
  • 例で使われているグループの変形:人物全体を少しずらすにはtranslate(-8 0)を使います。腰に対して上半身を前傾させるには、上半身のグループ(首、胴体、頭、袖)にrotate(-7 284 180)を使います。

テクニック

1. パーツツールキット。 scripts/interior.mjs(依存関係なし)には、例で使われている数値を含む、繰り返し使用するすべてのパーツが用意されています。レイヤー、床、レンガ、ランプ、ポスター、雲、葉、植木鉢、limb、bentArm、solveElbow、sleeve、torso、trouserLeg、bentLeg、cuffAndAnkle、sneaker、shoeOpening、liftedHeel、rotAbout、HANDS + hand() + place() + wristFor()、head()、mirrorPath()が含まれます。スキルフォルダーから node scripts/interior.mjs --demo /abs/work/demo.svg を実行します(スキルフォルダーではなく、作業フォルダーに出力します)。レンダリングすると、すべてのパーツを確認できます。デモ出力はパーツシートです。頭が4つ、親指を立てた手が6つ、植物が2つ、ランプ、レンガ、そしてパーツで組み立てた立ち姿の人物が並びます。

完成した人物の作例です。左を向いた女性が、図表を指しています。カードの隣に card.mjs として保存し、インポートパスを修正してから node card.mjs を実行します。

import fs from 'node:fs';
import * as LI from '/abs/path/to/illustration-line-interior/scripts/interior.mjs';
const { W, C, SKIN, FL, P, f } = LI, id = 'sn-', sk = SKIN.medium;
const HC = [300, 102], A = LI.TORSO_ANCHORS.top, rel = q => [HC[0] - q[0], HC[1] + q[1]];  // facing left: mirror x
const LEAN = -5, PV = [300, 188];                                   // lean toward the left, about the hips
const h = LI.head(HC[0], HC[1], -4, { hair: 'bun', facing: 'left', skin: sk, hairColor: C.brown, earring: true });
const heelB = LI.liftedHeel(300, 24, true);                         // rear heel up, toe on the floor
const legF = LI.trouserLeg([[296, 188], [293, 230], [291, 270], [290, 291]], [10, 8, 6.2, 5.8], LI.shoeOpening([297, FL], 0, true), C.denim, sk);
const legB = LI.trouserLeg([[306, 188], [309, 230], [313, 262], [316, 282]], [10.6, 8.4, 6.4, 5.8], LI.shoeOpening(heelB, -24, true), C.denim, sk);
let fg = LI.floor(id);
fg += `<rect x="150" y="96" width="70" height="54" rx="2" fill="${W}"/><path d="M158 138l14-16 10 9 12-15 16 12" fill="none" stroke="${C.teal}" stroke-width="1.8"/>`;
fg += legB.skin + LI.sneaker(`translate(${P(heelB)}) rotate(-24) scale(-1 1)`, C.coral, W) + legB.leg;
fg += legF.skin + LI.sneaker(`translate(297 ${FL}) scale(-1 1)`, C.coral, W) + legF.leg;
fg += `<rect x="284" y="${HC[1] + A.waistTop}" width="33" height="5" rx="0.8" fill="${C.denim}"/>`;
fg += `<g transform="rotate(${LEAN} ${P(PV)})">${LI.torso(HC[0], HC[1], { style: 'top', facing: 'left', fill: C.lav, skin: sk })}${h.front}</g>`;
// near arm = LEFT (she faces left); back of the hand visible, index pointing left -> thumb UP.
// HANDS.point keeps its thumb on local -y; at 186 deg local -y points DOWN, so flip = true.
const S = LI.rotAbout(rel(A.nearShoulder), LEAN, PV), ang = 186, tip = [221, 124];
const Wr = LI.wristFor(LI.HANDS.point.tip, tip, ang, 1.1, true);
const arm = LI.bentArm(S, LI.solveElbow(S, Wr, 36, 30), Wr, 4.6, 4.2, 3.3);
fg += `<path d="${arm.d}" fill="${sk}"/><path d="M${P(arm.I)}l${f(-arm.u[0] * 3)} ${f(-arm.u[1] * 3)}" fill="none" stroke-width="1"/>`;
fg += `<path d="${LI.sleeve(S, arm.u, 13, 5.8)}" fill="${C.lav}"/>` + LI.place(LI.hand('point', sk), Wr[0], Wr[1], ang, true, id + 'hand', 1.1);
const bg = LI.bgLayer(id, LI.bricks(60, 80, [[0, 0], [15, 0], [7, 7]]) + LI.lampDome(380, 40));
fs.writeFileSync('card.svg', LI.svgWrap(bg + LI.fgLayer(id, fg), 'Snippet test, Line interior style'));

反対側の腕、植物、主役となる小道具、部屋はまだ必要です。作成順序は、脚 → ウエストバンド → 傾けた胴体と頭 → 手前側の腕 → 袖 → 手、となっています。

2. 手首のくさびを作らない手。 手の輪郭を2回描きます。1回目は stroke="none" で塗りつぶし、2回目は開いたパス(Zを削除)にします。次に幅0.9の指の線を描き、その後に親指を描きます。hand() はこの処理を行います。手首を横切る閉じた線を描くと、前腕と手の接続部分に暗いくさびができます。

3. グループの回転で傾きをつける。 胴体(首を含む)、バックパックやストラップ、頭をまとめて、1つの <g transform="rotate(-7 hipX hipY)"> に入れます。腕は rotAbout(shoulder, -7, [hipX, hipY]) を使ってカード座標上で計算します。こうすると、手をオブジェクトに届かせたまま、腕、袖、手をグループの外側に描画できます。

4. 画面やボードの内容は、インクではなく色で描きます。 モニター上のコードは、角を丸めたダッシュを4~6行並べます。stroke-width="1.8"とし、各ダッシュにはアクセントカラー(紫、ティール、コーラル、ラベンダー、オレンジ)を使います。背景は白い画面にし、ウィンドウの点を3つ(コーラル、マスタード、ティール、r 0.9)配置します。図はインク色の1.2 pxのボックスと矢印で描き、ボックスの1つをコーラル、もう1つをティールにします。

失敗しやすい点

  • 色を使いすぎる。 最初の「Books」の下書き(スコア 6)では、マスタード色の上部、茶色の棚、オレンジ色の植木鉢、服の X 印が使われていました。スコア 8 に達した描き直しでは、色をより控えめに使っています。大きな形は白かピーチ色にし、アクセントは 7% 未満にしてください(白 ≥ 83%)。
  • 題材が別のものに見える。 机の前に立つ開発者は「Books」ではなく「スタンディングデスク」と受け取られました。人物の動作で題材を表現してください。本棚から本を抜き取る、ボードに描く、といった動作です。
  • 直立しすぎたクリップアート風の人物。 上半身を 4–9° 傾け、片脚に体重をかけ、後ろ側のかかとを上げてください。正面を向いた左右対称のポーズは、スコアが 1 点下がります。
  • 手首にできる暗いくさび形。 手首を横切る閉じた輪郭が原因です。hand() を使ってください(塗りつぶしのパスと開いた輪郭)。
  • 親指が逆側にある。 リリースした 2 つの手は、左腕に右手のテンプレートをそのまま使っていました(「Remote Work」の奥側のタイピングする手と、「Whiteboard」のマグカップを持つ手)。どちらも左右反転が必要でした。手ごとに左右を判断してから、flip してください。
  • ミトンや熊手のような手。 指は、長さが異なる、丸みのある先端の帯状のまとまりとして描き、長さは 18–20 px にしてください。それ以上大きいと手袋のように見えます。
  • 肘のない腕。 肩から物体まで伸びるまっすぐな筒状の腕は、義手のように見えます。bentArm() としわの線を使ってください。
  • 鶏の翼のような腕。 目標物が肩から 33 px の位置にあったため、66 px の腕を肘を外に突き出して折り曲げる形になりました。手首が肩から 45–60 px 離れるように、小道具か人物を動かし、もう一方の flip も試してください。
  • 片腕だけの人物。 奥側の腕が隠れた横向きの人物は、腕が片方ないように見えます。奥側の腕を後ろに振り、前腕と手が腰の後ろに見えるようにしてください。
  • 余計な線。 手足の縁から 4 px 以内にある 1 px の折り目線や、袖の下から 2 px はみ出したストラップの端は、描画ミスに見えます。覆われる形の端は、覆う形の内側に少なくとも 3 px 入れてください。また、折り目はほかの輪郭から離してください。
  • 浮いて見える足や植木鉢。 スニーカーのかかとの y 座標は、ぴったり 308 です。後ろ側の靴を回転させた場合は、つま先が床に触れるようにしてください。すべての接地点を 8 倍に拡大して確認してください。
  • 服の X 印。 汚れに見えます。植木鉢や箱にだけ使ってください。
  • 背景が人物より目立つ。 インディゴ色で描いた装飾や塗りつぶした装飾は、手前の雑然とした要素のように見えます。壁の線 #cfc9e0 は 1 px で塗りつぶさず、人物の頭から少なくとも 8 px 離してください。
  • 線の太さがぶれる。 2 px の輪郭線や 0.6 px の細部を使うと、すぐにスタイルが崩れます。必ず 1.4、1、0.9 を使ってください。

例

  • examples/books.svg:「Books」。−7° 傾き、手前側の腕を曲げて親指を上にして本棚の本をつかむ、手を伸ばしたポーズです。奥側の手は腰の位置で開いた本を持っています。アフロヘアの後ろ髪は胴体の背後に描かれています。ラベル付きの本、アヒル、モニターのある机、細長い葉の植物を備えたはしご型の棚です。
  • examples/remote-work.svg:「Remote Work」。ハンモックに横たわり、両手でノートパソコンを操作しています(type の手を使用し、左右の手でそれぞれ反転)。屋外向けの背景(雲、鳥、スカイライン、手すり)、ストリングライト、マグカップのある木箱、モンステラの葉、サンスベリアを備えています。clipPath でハンモックの縁の背後に脚を隠しています。
  • examples/whiteboard.svg:「Whiteboard」。人物が 2 人います。1 人は marker の拳を上に伸ばし、wrap の手でマグカップを持っています。もう 1 人はスツールに座り、cup の手をしています。ひげと眼鏡も描かれています。図の内容には 1.2 px のインク線とアクセントの線を使用し、付箋、床の線上にあるキャスター、イチジクの木も描かれています。

ワークフロー

このスキルのフォルダーからすべてのコマンドを実行します。カードのパスは絶対パスでも構いません。

  1. 概要。 テーマを数語で示し、それを表す1つの動作(誰がどの小道具に何をするか)を書きます。主役の小道具とポーズを選びます。
  2. レイアウトを計画します。 480 × 360 のグリッド上で、床を y 308 に配置し、片端に植物、中央に主役の小道具、もう片端に二次的なアイテムを配置します。肌の色、髪のプリセット、各人物が身に着けるアクセントを2つ選びます。ID の接頭辞(ob-)を選びます。
  3. ジェネレーターを作成します。 絶対パスで scripts/interior.mjs をインポートし、card.svg を書き出す card.mjs を作成します。Techniques のスニペットを出発点にします。--demo のパーツシートを一度確認します。人物と主役の小道具は手動で配置し、繰り返し使うものはすべてツールキットから取得します。ズームしたときに見つけられるよう、計算された肩、肘、手首の位置を出力します。
  4. まず手を紙に描きます。 それぞれの手について、LEFT または RIGHT、PALM または BACK、指の向きを書き、続けて親指の側を記します(references/craft.md を参照)。HANDS の形状と flip を選びます。
  5. レンダリングします。 node scripts/render.mjs card.svg card.png。
  6. サンプルと一緒にシートにします。 node scripts/render.mjs --sheet sheet.png examples/books.svg examples/remote-work.svg examples/whiteboard.svg card.svg。「同じ手、同じセットか?」を確認します。線の太さ、白の割合、密度、床、装飾を見ます。
  7. ズームします。 すべての手、顔、足、接触箇所を確認します。node scripts/render.mjs card.svg z-hand.png --zoom x,y,w,h --scale 8。すべての手について、references/craft.md にある親指の検証を行います。
  8. 評価します。 references/craft.md の5つの基準と、以下の確認リストに照らして評価します。修正し、再レンダリングして、再度シートにします。4回以上の反復を想定してください。
  9. Lint を実行します。 node scripts/lint.mjs card.svg --prefix ob- --palette style.json。すべての ERROR を修正します。各 WARN は意図的な色合いである必要があります。

確認

  • 前景の輪郭線はすべて #3a2d66、太さは1.4です。ディテールは1、指の線は0.9です。コードの破線(1.8)と図の線(1.2)以外に、異なる線幅はありません。
  • 背景の装飾は #cfc9e0、1 px、塗りつぶしなしで、頭に重なっていません。
  • シート上で、色の主張がサンプルより強く見えません(白いピクセルは84–86%、アクセントは4–7%です)。大きな形は白または桃色で、グラデーション、opacity、影は使っていません。
  • 床の線は y 308 にあり、両端に破線があります。足、植木鉢、脚、キャスターはすべて床に接しています。
  • ランプは y 0 から吊り下がっています。それ以外はカードの端に触れておらず、y 308–360 の帯には何もありません。
  • 立っている人物の身長は約230 px、頭の大きさは約34 pxです(1:7)。
  • 各人物が身に着けるアクセントは白以外で最大2つです。人物が2人いる場合、肌の色は異なります。
  • すべての手の長さは18–20 pxで、指は3–4本がまとまっており、指の間の線は0.9です。親指は craft の表に示された側にあります(親指の検証済み)。
  • すべての腕に肩があり、折り目のある尖った肘があり、手首は手より細くなっています。横向きでも両腕が見えています。
  • 上半身が傾くか、ひねられています。体重は片脚または座席にかかっています。
  • ラベルがなくても、人物の動作だけでテーマが1xで伝わります。
  • 衣服に x 印はありません。植木鉢や箱の x 印は最大2–4個です。
  • lint.mjs --palette style.json が、説明のつかない WARN なしで通過します。

コメント