mcpField
S
scenario-blender-sculpting

scenario-blender-sculpting

github.com/scenario-labs创意与媒体1.2k433 次安装1 天前更新
代码仓库

关于 scenario-blender-sculpting

面向使用 Blender 制作头部和角色的创作者,提供从低分辨率块面到表面细化的雕刻流程。脚本用于无头模式下构建基础形体,表面处理则通过实时 GUI 中的 Blender 笔刷完成。

主要功能

  1. 01以低分辨率构建头部块面
  2. 02按明确平面塑造主要形体
  3. 03逐阶段检查比例与网格
  4. 04通过 GUI 笔刷完成表面细化
  5. 05创建表情形态键并渲染审查

适用场景

  1. 01构建头部与角色的基础形体
  2. 02检查下颌、颧骨等轮廓结构
  3. 03为中性角色创建微笑表情
  4. 04从多个视角审查雕刻结果

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/scenario-labs/skills --skill scenario-blender-sculpting

安装后在 Claude Code 中输入/scenario-blender-sculpting确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
critique.md
expert-notes.md
procedures.md
sources.md
scripts/
bx_sculpt.py

详细介绍

雕刻(头部与角色,Blender 5.2)

专家级雕刻先塑造结构,最后才处理表面:用明确的平面和转折塑造体块,在低分辨率下锁定比例,每个阶段都通过长焦视角观察判断,最终标准是是否有吸引力,而不是网格数值。Agent 通过无头模式构建粗模和一级形体(scripts/bx_sculpt.py:平滑混合的 Clay、平面切割、numpy 笔刷),并在实时 GUI 会话中使用 Blender 的真实笔刷完成客户端品质的表面处理(bx_gui)。如果这里提到的同级技能不在你可用的技能中,请让用户安装(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:第一分钟就选定夸张方向,并让相邻特征配合;长脸需要更小的头骨,而不是拉长头骨)。
  • 概念头部需要具备相应特征。 Thelen:头发能让男性头部更容易被辨认(00:48:58);Naydenov:头发会极大改变整体观感(00:53:05)。一个没有头发或服装的“冒险者”看起来就像个秃头人体模型。
  • 不对称和表情应放在形状键上;基础形状则保持中性且对称(Kaspar f-mx-Jfx9lA 00:09:44;Thelen 00:38:27)。表情测试会暴露比例错误;应在中性形状中修正这些错误(Kaspar 00:10:49)。

首先确定

输入影响未说明时的默认值
人物(性别、年龄、类型、态度)下颌角、眉形、下颌宽度、造型语言成年男性、中性基础型,已注明 [added]
风格风格化:夸张程度表;写实:正典 + 参考图风格化,“抽象到足以避免诡异感”(Kaspar)
角色特征能体现类型的头发、服装、道具至少有头发和一种服装标志 [added]
用途静帧(顶点绘制、简化)与游戏或电影(重新拓扑)静帧;若为动画,则使用 scenario-blender-retopology
交付构图细节频率、表情幅度半身像填满 1080 px 画面 [added]
比例若尺寸以头高 H 的分数表示,则无需填写H = 0.24 m [added]
渠道无头模式 numpy / Clay,或实时 GUI 笔刷无头模式粗模;桥接可用时用 GUI 处理表面

工作流

  1. 设计表格。 G = S.head_guides(H)、一个 STYLE 字典(那一两个夸张特征)、提示清单,以及各平面的标志点:下颌角、下巴底部、颧骨。GATE:记录完毕。
  2. 粗模(体素尺寸 H/40)。 头部的默认模式:Clay。用颅骨侧面和前部收窄半空间裁切椭球形颅骨;在口部凸起后方放置一个 sd_round_box 下颌,并用下颌角处的侧面、下方和下颌支平面进行裁切;制作方形下巴块;沿耳朵至脸颊的连线放置颧骨椭球,并加一个下方平面;口部凸起;眉脊;鼻子;向前倾斜约 15 度的颈部;耳朵;眼睛周围的额部方块。以 0.08 至 0.15 H 融合大体块,以 0.02 至 0.03 H 裁切边缘。可选:对基本体使用 union_remesh(圆角方块会经 Catmull-Clark 变成球状块:绝不要用它做下颌)。GATE:1 个组件;lower_face_report(head, H)["ball"] 为 False;轮廓图和 90 mm 渲染在侧面和四分之三视角下均显示出下颌线和下颌角;夸张特征清晰可见。
  3. 主要形体(H/100 至 H/110)。 用更精细的体素尺寸和标志点重建 Clay:眼窝(球体尺寸为眼球的 1.1 倍,小于眼睑)、包覆独立眼球的薄层眼睑(Keelan Jon 的眼睑取自眼球,amVAlpxHp8k 00:37:05)、收进脸部的鼻翼、耳窝、颈部肌肉。头发和服装使用独立的 Clay 对象(任何不对称对象都使用 to_object(name, symmetric=False))。GATE:侧面效果突出;眼睛不能像玻璃球或眼袋;头发能衬托脸部;stage_report 无问题。
  4. 次要细节(H/130 至 H/150,remesh_stage)。 在朝向投影的表面上用 crease_line 绘制线条(嘴部、下唇下方、眼睑边缘);从下方处理鼻孔。仅在体块正确且移动幅度较小时,用 corner_cut / plane_cut 重申平面。GATE:面数少于 100k(Abbitt);90 mm 渲染中没有划痕、裂缝或凸边。
  5. 表面润饰(客户端品质):实时 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)。
  6. 表情。 以中性对称形态为基础;sc = S.Sculptor(head, symmetry_x=False), 对嘴角、脸颊、下眼睑和另一侧眉毛使用 move_feature; S.write_shape_key(head, "Smirk", sc.co)。根据交付画面确定嘴角移动幅度(数字)。体素重建会丢失键:放在最后一步。
  7. 最终渲染。 使用 S.final_render(objs, path, direction, lens=90, res=1600)(凹腔效果,以真实顶点为中心取景),渲染正面、侧面、四分之三视角,以及中性和表情状态;打开每张图检查。

每个阶段内部:渲染,指出一处最薄弱环节,修复,再次渲染(Yan)。如果指标通过但渲染效果不对,以渲染结果为准。

数字

数值数字来源
体素层级H/40 用于粗模,H/65 到 H/110 用于主要部分,H/130 到 H/235 用于次要部分,细节约为 H/330Morren、Abbitt;示例
每个体素对应的面数约为 1.5 x 面积 / 体素^2(voxel_for_faces)测量值,3 %
示例半身像面数H/40 为 8k,H/110 为 64k,H/150 为 103k(含颈部)测量值
面数门槛形体塑造在 100k 以内;细节约 500kAbbitt
原始重构镜像误差最大 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 时不可见测量值
每毫米像素数半身像填满 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 表示下脸可拟合到同一个球体内,误差不超过 10%,且拟合效果是平面的两倍(校准数据:三个 E2 balloon 下颌为 0.057 到 0.082,基线为 0.18 到 0.20,v2 示例为 0.23 到 0.26)。S.profile_rhythm(obj):下巴向外、向内,嘴唇向外、向内,鼻子向外(鼻子基部以下悬垂的鼻子会遮住嘴唇的起伏节奏)。针对指定平面使用 sc.planarity(c, r)。
  • 视觉(门槛): 使用 S.long_lens_render 或 final_render,以 85 到 95 mm 焦距从正面、侧面、四分之三视角和下方渲染;另外使用 bx_review.review(..., modes=("silhouette", "matcap")) 检查正交视图轮廓。顺序:轮廓、大平面(关闭腔体,或使用 mode="flat")、下方与上方、线条、缩略图尺寸下的角色辨识度。评估标准: references/critique.md。

常见错误

错误表现修正
下颌呈圆角盒形或椭球形,平滑过度下半张脸像气球:脸颊、下颌和下颌肉都成了一个球体用 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 中的提示列表
比例尚未确定就开始添加细节在错误的颅骨上刻线通过各项检查前,保持粗略塑形
从远处以最近点捕捉笔触鼻尖上出现凹槽使用 on_surface(p, view)
重网格后遮罩仍然存在某个区域对所有笔刷都不起作用remesh_stage 会清除遮罩
缩小视图后使用 GUI 笔触整个网格都被压平使用 bx_gui.set_view(frame=obj),检查 view_distance
将发际线做成一条倾斜切线从侧面看像军帽,前方是一堵垂直的墙将发际线设为方位角的函数(鬓角、耳朵上方、延伸至颈背);从发际线向上做出约 0.12 H 的飞机头坡面 [eval]
眼睛镜像对称没有目光方向,神态呆滞或茫然让两个眼球分别朝向目标;眼睑边缘和眉毛角度可调节神态(中性基础形状需保持眉毛水平)[eval]
特征仅在两处连接鼻子从侧面看会漂浮,存在穿透可见的空隙对每个视图使用射线网格探测轮廓孔洞;大鼻子应有侧壁连接面颊;最后一次重网格后,使用 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、多分辨率操作。
  • Blender 5.2 自带 OpenVDB(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:使用 np.ptp(a),不要使用 a.ptp()。

参考资料

  • 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。

评论

支持 Markdown