scenario-blender-sculpting について
頭部やキャラクターを制作するBlender制作者向けのスキルです。低解像度のブロックアウトから表面の仕上げまで段階的に進め、最終的な表面作業にはGUI上のブラシを使います。
主な機能
- 01低解像度で頭部をブロックアウト
- 02明示した平面で主要形状を形成
- 03各段階で比率とメッシュを確認
- 04GUIブラシで表面を仕上げ
- 05表情シェイプキーを作成してレンダー確認
活用シーン
- 01頭部やキャラクターの形状を構築
- 02顎や頬骨の輪郭を確認
- 03ニュートラルな顔に笑顔の表情を作成
- 04複数の視点からスカルプトを確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ scenario-labs/ skills --skill scenario-blender-sculptingインストール後、Claude Code で/scenario-blender-sculptingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/critique.mdexpert-notes.mdprocedures.mdsources.mdscripts/bx_sculpt.py詳細
スカルプト(頭部とキャラクター、Blender 5.2)
熟練したスカルプトでは、構造が最初で、表面は最後です。明確な面と角で大きな形を作り、低解像度のうちにプロポーションを確定し、長いレンズを通してすべての段階を目で評価し、メッシュの数値ではなく、最終的に魅力があるかどうかで判断します。エージェントはヘッドレスでブロックアウトと一次形状を作成し(scripts/bx_sculpt.py:スムーズブレンドの Clay、平面カット、numpy ブラシ)、ライブ GUI セッション(bx_gui)で Blender の実ブラシを使ってクライアント品質の表面仕上げを行います。ここに記載された関連スキルが利用可能なスキルにない場合は、ユーザーにインストールを依頼してください(npx skills add scenario-labs/skills --skill <name>)。無人実行の場合は、ツールのスキーマに基づいて進め、不足している点を明示してください。
必須の背景知識: scenario-blender-expert(実行チャネル、レビューループ、5.2 API の変更点)。
基本姿勢(エキスパートとの差)
- 平面は見つけるのではなく、明確に定めます。 Thelen は Draw Sharp で平面の境界を切り、面の「見え方がおかしい」と感じるたびに切り直します。Naydenov は単純化して平面にし、その後スムーズにします。Reinhardt は Scrape、Trim、Line Project を使ってきれいにカットします。実行可能な形では、点と法線で平面を定義し、
Clayの半空間クリップまたはplane_cut/corner_cutに渡します。flattenやscrapeの一打は、その下にある球体に平面を合わせるため、球体に沿ってしまいます。 - あごはオトガイ角を持つブロックで、頬骨は独自の下側の平面を持つ塊です。 Zarins によれば、オトガイ角は年齢と性別を示す調整軸で、成人男性では急になります。顔の最も幅広い点は頬骨弓の上端です。Naydenov によれば、頬骨は耳から下向きかつ前方へ伸び、下縁だけが見えます。Thelen は、骨に組織を加え、決して刃物のように鋭くしないようにします。
- 塊を上流工程で修正し、平面で形を言い直すだけにします。 平面を切り直しても見え方が改善しないなら、問題は塊またはプロポーションにあります(Thelen の診断法)。実測では、風船のようなあごに平面カットを施すと形状の指標は反転しましたが、レンダリングでは宝石のファセットのように見えました。あごのブロックを作り直すことで解決しました。
- できる限り長く低解像度を保ちます。 Abbitt によれば、スムージングが強く作用するのは大きなポリゴンだけです。Thelen はプロポーションを粗い段階で確定します。リメッシュのたびに対称化し(Keelan Jon)、その後、全体をリラックスさせます(Kaspar FDscc66fC90 00:11:55)。
- 小さなランドマーク(鼻孔、眉、目)は早い段階で示します。 Yan は、幅が広すぎる鼻が鼻孔から分かったと述べています(vB7kPWjBgQI 00:05:11)。
- 一貫した誇張で様式化します。 Yan によれば、最初の1分で方向性を決め、周囲の要素もそれに合わせます。顔が長い場合は、引き伸ばすのではなく頭蓋を小さくします。
- コンセプト上の頭部には、それらしさを伝える要素が必要です。 Thelen は、髪があると男性の頭部らしさがより伝わると述べています(00:48:58)。Naydenov によれば、髪は印象を大きく変えます(00:53:05)。髪も衣装もない「冒険者」は、髪のないマネキンに見えてしまいます。
- 非対称性と表情はシェイプキーで表現し、ベースはニュートラルで対称な状態に保ちます(Kaspar f-mx-Jfx9lA 00:09:44;Thelen 00:38:27)。表情のテストでプロポーションの誤りが明らかになるため、ニュートラルの状態で修正します(Kaspar 00:10:49)。
最初に決めること
| 入力 | 変更内容 | 指定がない場合のデフォルト |
|---|---|---|
| 誰か(性別、年齢、タイプ、態度) | 顎角、眉、顎の幅、形状表現 | 成人男性、ニュートラルなベース、明記された内容を反映[追加] |
| スタイル | スタイライズ:誇張の表;リアル:正典+参考資料 | スタイライズ、「不気味に感じない程度に抽象化」(Kaspar) |
| キャラクターの手がかり | タイプを印象づける髪、衣装、小道具 | 少なくとも髪と、衣装の特徴を示す要素を1つ[追加] |
| 目的 | 静止画(頂点ペイント、デシメート)か、ゲームまたは映画(リトポロジー) | 静止画;アニメーション付きの場合はscenario-blender-retopology |
| 納品時のフレーミング | ディテールの頻度、表情の大きさ | 1080 pxのフレームをバストアップで埋める[追加] |
| スケール | サイズが頭の高さHに対する比率なら不要 | H = 0.24 m[追加] |
| チャネル | ヘッドレスのnumpy / Clay、またはGUIのライブブラシ | ヘッドレスのブロックアウト;ブリッジ接続時はGUIで表面を作成 |
ワークフロー
- デザイン表。
G = S.head_guides(H)、STYLE 辞書(誇張する箇所を1つか2つ)、手がかりのリスト、平面のランドマーク点:ゴニオン、顎の底、頬骨。GATE:書き留めてあること。 - ブロックアウト(ボクセル H/40)。 頭部のデフォルトは
Clayです。頭蓋は、頭蓋側面と前方へのテーパーを定める半空間でクリップした楕円体にします。顎は、口元の盛り上がりのBEHINDに配置したsd_round_boxとし、ゴニオンを通る側面、下面、下顎枝の各平面でクリップします。四角い顎先のブロック、下方の平面を添えた耳から頬へのラインに沿う頬骨の楕円体、口元の盛り上がり、眉の隆起、鼻、約15度傾けた首、耳、目の周囲の前面ボックスを配置します。大きな塊は0.08~0.15 Hでブレンドし、縁は0.02~0.03 Hでクリップします。選択肢:プリミティブをunion_remeshで結合します(rounded_boxは球体のように見えるCatmull-Clarkの塊です。顎には絶対に使わないでください)。GATE:コンポーネントが1つであること、lower_face_report(head, H)["ball"]がFalseであること、シルエットと90 mmのレンダーで、横顔と斜め前から見た輪郭に顎のラインとゴニオンの角が現れ、誇張が見て取れること。 - 主要フォーム(H/100~H/110)。 ランドマークを使って、より細かいボクセルでClayを作り直します。眼窩(眼球の1.1倍の球で、まぶたより小さくする)、別々の眼球を囲む薄い殻状のまぶた(眼球から作るKeelan Jonのまぶた、amVAlpxHp8k 00:37:05)、内側に収めた鼻翼、耳のくぼみ、首の筋肉を作ります。髪と衣装は別々のClayオブジェクトにします(非対称なものには
to_object(name, symmetric=False)を使用)。GATE:横顔の形が際立っていること、目がビー玉や袋のように見えないこと、髪が顔を縁取っていること、stage_reportがクリーンであること。 - セカンダリ(H/130~H/150、
remesh_stage)。 投影方向を向いた面にcrease_lineでラインを入れます(口元、下唇の下、まぶたの縁)。鼻孔は下側から作ります。塊の形状が適切で、移動量を小さく保てる箇所に限り、corner_cut/plane_cutで平面を強調し直します。GATE:10万未満の面数(Abbitt)、90 mmのレンダーに引っかき傷、ひび割れ、縁がないこと。 - 表面仕上げ(クライアント品質):ライブGUI。
bx_guiで本物のClay Strips、Scrape、Crease Polish、Smooth 0.2を使用します(固定して検証済み:ストロークがメッシュにレイキャストされ、オブジェクト空間の位置を渡します。最初にset_view(frame=obj)を設定し、view_distanceは頭部の高さの数倍にします)。ヘッドレスのnumpyストロークはブロックアウトと主要フォームには適していますが、仕上げには向きません。Multiresは、安定したクリーンなベースにのみ使用します(Henning Cmi0KoFtc-4 00:16:04)。 - 表情。 対称なニュートラルのベースを用意します。
sc = S.Sculptor(head, symmetry_x=False)とし、move_featureで口角、頬、下まぶた、反対側の眉を動かします。S.write_shape_key(head, "Smirk", sc.co)。口角の移動量は納品時のフレーミングに合わせます(Numbers)。ボクセルリメッシュを行うとキーが失われます。最後の工程にしてください。 - 最終レンダー。
S.final_render(objs, path, direction, lens=90, res=1600)(キャビティ、実際の頂点を基準にフレーミング)を、正面、横顔、斜め前から、ニュートラルと表情の両方で作成し、すべての画像を開きます。
各ステージで、レンダーし、最も弱い箇所を1つ挙げ、それを修正してから再レンダーします(Yan)。レンダーが間違って見えるのに指標を満たしている場合は、レンダーを優先します。
数値
| 値 | 数値 | 出典 |
|---|---|---|
| ボクセルの段階 | ブロックアウトはH/40、主要部はH/65〜H/110、二次部はH/130〜H/235、ディテールは約H/330 | Morren、Abbitt;例 |
| ボクセルから算出した面数 | ボクセルあたりの面積のおよそ1.5倍(voxel_for_faces) | 実測、3 % |
| バストの面数の例 | H/40は8k、H/110は64k、H/150は103k(首を含む) | 実測 |
| 面数の目安 | 形状は100k未満で作成;ディテールは約500k | Abbitt |
| リメッシュ直後のミラー誤差 | 最大0.67〜0.75ボクセル、平均0.05〜0.07ボクセル(最近傍頂点) | 実測 |
| クレイのブレンド(頭部) | マッスは0.08〜0.15 H、平面のクリップは0.02〜0.03 H、まぶたは0.012 H | 例 [追加] |
| 顎 | 下顎角間幅は頬骨弓間幅の0.90〜1.00倍(例は0.93);例における下顎枝と下顎底の角度は124度 | Thelen;例 [追加] |
| 目(スタイライズ) | 半径0.064 H、まぶたの厚さ0.012 H、上まぶたの縁は中心より上に21度 | 例;14度では眠そうに見える |
| 髪 | 毛束の半径は0.065〜0.115 H、半径の0.8倍の高さまで立ち上げ、生え際から後方へ;ベースは0.008〜0.02 H | 例 [追加] |
| 認識できる角の移動量 | 口幅のおよそ1/8(65 mmの場合は8 mm、0.03 H);1/30では見えない | 実測 |
| mmあたりのピクセル数 | バストが1080 pxを占める場合:2.8;バストの高さが270 pxの場合:0.75 | 実測(framing) |
| スムーズの強さ | 0.2(5.2のデフォルトは0.7) | Henning |
| クリースの解像度 | 半径の幅に少なくとも3〜4頂点 | Ryan King |
| レビュー用レンズ | 85〜95 mmの遠近法 | Morren、Kaspar、Naydenov、Yan |
| ランドマーク | 目のラインは0.5 H;鼻の下端は眉から顎までの中間;唇の合わせ目は鼻から顎までの1/3;耳は鼻の付け根から眉まで;幅はH/1.5;口角は瞳の中心の真下;外眼角の傾きは約8度;首は約15度前傾 | Abbitt、Naydenov、Thelen |
品質ゲート
- 測定可能な指標:
S.stage_report(obj, voxel)(コンポーネント数 1、非多様体 0、ストレッチの p95/中央値が 2.5 未満、非対称化前の mirror_max が 1e-4 未満)。S.lower_face_report(head, H):ballが True の場合、下顔面が平面より 2 倍以上よく、10%以内の誤差で 1 つの球に収まります(キャリブレーション値:E2 の風船を使った顎 3 例は 0.057~0.082、ベースラインは 0.18~0.20、v2 の例は 0.23~0.26)。S.profile_rhythm(obj):顎が前に出て、引っ込み、唇が前に出て、引っ込み、鼻が前に出ます(鼻の付け根より下に垂れた鼻は、唇の起伏を隠します)。指定した平面に対するsc.planarity(c, r)。 - 視覚(ゲート): 正面、側面、斜め前、下から、85~95 mm の
S.long_lens_renderまたはfinal_renderを使用し、さらに正投影シルエットにはbx_review.review(..., modes=("silhouette", "matcap"))を使用します。順序:シルエット、大きな面(キャビティをオフにするか、mode="flat")、下からと上から、線、サムネイルサイズでのキャラクターの見え方。評価基準:references/critique.md。
よくある間違い
| 失敗例 | どのように見えるか | 修正方法 |
|---|---|---|
| rounded_box または ellipsoid のような顎、過度なスムージング | 下顔面が風船のようになり、頬、顎、顎下が一つの球になる | 指定した平面を持つ Clay の顎ブロックを作成し、lower_face_report のゲートで確認します |
| 「平面を作る」ために、軽く叩いた箇所を平らにする、または削る | 球の形に沿ったファセット | 指定した平面を作成します。Clay のクリップ、plane_cut、corner_cut を使います |
| 不適切なマスに平面カットを施す | 縁のある宝石のファセット。指標上は合格 | 先にマスを移動するか作り直してから、カットします |
| 顎ブロックの前面が口より前にある | 下顔面を覆うマスクや板 | 顎を頬の盛り上がりの後ろに置き、前面は頬の盛り上がりと顎に持たせます |
| 顎ブロックが高く、ブレンドが小さい | 頬を横切るパネルの縁 | 低いブロックにして、上方向に 0.15 H ブレンドします |
| 眼窩がまぶたより広い | 輪状の溝、目の下のたるみ | 眼窩を眼球の 1.1 倍にし、まぶたを 0.012 H ブレンドします |
| まぶたが眼球の赤道より後ろまで伸びている | 閉じたポケット、3 つのコンポーネント | 眼の中心面でまぶたをクリップします |
| 髪のオフセットが均一、または厚いベースキャップに房を追加している | ヘルメットの縁、ミミズのような房が付いたビーニー | ベースを薄くし、房でボリュームを作ります |
| 生え際より後ろから房が始まっている | 額の上に何もないヘッドバンド | 生え際から房を始めます |
| 非対称なパーツを対称化している | 流した髪が鏡像になり、中央に継ぎ目ができる | to_object(..., symmetric=False) |
| 表面をかすめる方向から見た面に折り目を投影する | 平行なひび割れ | 視点に正対する面にだけ折り目を付け、それ以外は省きます |
| 笑顔をベース形状に彫り込んでいる | 非対称を取り除けない | ニュートラルなベースを使い、write_shape_key を使います |
| 口角を 1~2 mm 動かす | 表情が見えない | 口幅のおよそ 1/8 にし、ピクセル単位で確認します |
| 髪も衣装もない | 髪のないマネキン | ステージ 0 の手がかりリストを使います |
| プロポーションより先にディテールを作る | 間違った頭蓋骨に線を描いている | ゲートを通過するまでは大まかな形を保ちます |
| 遠くから nearest を使ってストロークをスナップする | 鼻先の溝 | on_surface(p, view) |
| リメッシュ後もマスクが残っている | どのブラシでも反応しない領域がある | remesh_stage でクリアします |
| ビューを縮小した状態で GUI ストロークを使う | メッシュ全体が平らになる | bx_gui.set_view(frame=obj) を設定し、view_distance を確認します |
| 生え際を傾いた一つのカットとして作る | 横から見るとギャリソンキャップのようになり、前面に垂直な壁ができる | 方位角に応じた関数として生え際を作ります(もみあげ、耳の上、うなじまで)。生え際から約 0.12 H の範囲に、クイッフの傾斜を作ります[eval] |
| 左右対称な目 | 視線がなく、見つめるような、またはぼんやりした印象 | 狙いを付けた 2 つの眼球を作ります。まぶたの縁と眉の角度を印象の調整に使います(ニュートラルなベースでは眉を水平にします)[eval] |
| 特徴が 2 点でしか接続されていない | 横顔で鼻が浮いて見え、透けた隙間がある | ビューごとにレイグリッドでシルエットの穴を検査します。大きな鼻には頬につながる側壁を作り、最後のリメッシュ後に bx_audit で自己交差を検出します[eval] |
Blender 5.2 の注意事項
- ヘッドレスでクラッシュ(セグメンテーションフォルト):スカルプトモードでは
sculpt.symmetrize、sculpt.mesh_filter、paint.mask_flood_fill、sculpt.mask_filter、sculpt.face_sets_create、sculpt.face_sets_init、object.voxel_remeshがクラッシュします。ポーリングに失敗:sculpt.brush_stroke、sculpt.set_pivot_position、sculpt.detail_flood_fill、トリムジェスチャ。動作するもの:paint_mask_extract、brush.asset_activate、 編集モードのmesh.symmetrize、quadriflow_remesh、マルチレゾリューションの操作。 - OpenVDB は Blender 5.2 に同梱されています(
import openvdb)。FloatGrid.copyFromArrayとconvertToQuadsで Clay をメッシュ化できます。 - ブラシは Essentials アセットです。Flatten、Fill、Scrape は Plane タイプに統合されています。
sizeは直径です。 Draw Sharp のデフォルトは SUBTRACT です。sculpt_toolはsculpt_brush_typeです。 - ボクセルリメッシュの出力はフラットシェーディングです(
shade_smooth())。属性(マスクを含む)は保持され、シェイプキーは削除されます。 - Blender の NumPy 2 では、
a.ptp()ではなくnp.ptp(a)を使います。
参考資料
references/procedures.md:すべての段階でテスト済みのコード(Clay のレシピ、平面、形状チェック、髪、まぶた、表情、最終レンダー、クラッシュ一覧、ブラシ一覧、GUI のレシピ)。スカルプトスクリプトを書く前に読み込んでください。references/expert-notes.md:タイムスタンプ付きの専門家による原則。キャラクターを設計するときや手法を選ぶときに読み込んでください。references/critique.md:ブロッカーを含む段階ごとの評価基準。各ゲートで読み込んでください。references/sources.md:最適なタイムスタンプを付けた27本の参考動画。- 例:
tests/code/blender-sculpting/stylized_head_blockout.py(13秒。stylized_head/stage_N/にレンダーを出力)。比較用:tests/code/blender-sculpting/compare/compare_sheet.png。