关于 voxel-it
voxel-it 是一个 Pika MCP 技能,可将照片转换为 Minecraft 风格图像,同时让人物保持写实。它会从三种体素化模式中选择,并保留原始构图与色彩氛围。
主要功能
- 01选择三种体素化模式之一
- 02让人物保持写实
- 03将指定区域转换为方块
- 04保留画面构图和物体位置
- 05可添加 Minecraft 风格物品标签
适用场景
- 01保留人物并将周围场景体素化
- 02将重点展示的食物或商品转换为方块
- 03人物保持写实并生成完整体素环境
MCP 相关
使用 Pika MCP 工具(包括 generate_image_edit 和 upload_asset)上传源图并生成编辑后的图像。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ pika-labs/ pika-plugins --skill voxel-it安装后在 Claude Code 中输入/voxel-it确认已加载。
详细介绍
voxel-it
以下工具均为 Pika MCP 工具,名称未带前缀——请使用当前会话为 Pika MCP 提供的任意前缀调用。
一项技能,一个引擎:将照片变成 Minecraft 截图,让人物保持真实照片质感,画面其余部分变成体素方块,并以电影感调色统一整体效果。Step 0 路由器会读取照片并从三种模式中选择一种——决定哪些部分会被体素化(主体、背景,或除人物以外的所有内容),以及是否为主体物品浮现Minecraft「战利品标签」。这项技能融合了旧版 Minecraft-Food 趋势(仅物品)和旧版 Minecraft-World 趋势(物品 + 背景)。
转换引擎采用 @rohxit7 的病毒式配方,原文照录(Instagram,194K 赞,#minecraft #prompt #chatgpt)。仅物品提示词和战利品标签条款取自已停用的 Minecraft-Food 趋势(@aibyjoe「Minecraft Food」)。
效果详述:
- 保持真实照片质感且不做改动——人物(面部、皮肤、头发、服装、姿势、比例)。任何模式下都不做风格化处理,也不将其方块化。
- 将所选模式指定的部分转换为 Minecraft 风格(以下部分的某个子集:地形、建筑、植物、物品、家具、车辆、食物、饮料、天空、背景):采用干净的立方体/体素几何形状、清晰的 16×16 风格纹理,达到现代 Minecraft 截图的品质(高级 SEUS/BSL 着色器——逼真的光线、柔和的阴影、AO、体积光、锐利的边缘)。
- **空间保真度(严格):**保持原始相机视角、取景和构图;每个元素都处于原来的位置和尺寸;不得添加、移除或重新排列任何内容。
- **电影感调色(统一整体效果):**分析原图氛围并调整整个画面的色调,使之与原图匹配,让真实人物与体素世界协调一致,呈现为一张完整图片,而不是拼贴的剪切图。
- (有条件)战利品标签——仅限仅物品模式;参见 Step 0。
**身份说明:**按照配方使用无蒙版的单次全画布编辑,因此面部会被重新生成,可能略有偏差。为保持色彩协调,接受这种处理。如需像素级保持面部不变,请参阅底部的高级蒙版说明。
Step 0 — 路由器:选择模式
阅读照片并确定且只确定一种模式。**用单独一行说明选择结果——MODE: object-only / MODE: background-only / MODE: object+background——然后在 Step 3 中使用相应的提示词块。**所有模式使用相同的引擎、调色方式和质量标准;唯一的区别是哪些内容会被体素化,以及是否浮现战利品标签。
三种模式:
- object-only — 仅将手持/主体物品(食物/饮料/产品)及其配套餐具体素化。让人物和背景完全保持真实照片质感。在每个主体物品上方浮现一个 Minecraft 战利品标签。(这是旧版 Minecraft-Food 的效果。)
- background-only — 将背景/环境体素化为 Minecraft 方块。让人物保持真实照片质感;如果画面中有无关的物品,也让它保持真实照片质感。不显示战利品标签。 (人物站在某个地方,现处于体素世界中——但他们手持的任何物品都保持真实。)
- object+background — 将除人物以外的所有内容体素化(物品和背景)。战利品标签可选。(旧版完整体素化 Minecraft-World 的默认模式。)
决策树(默认检测):
Does the user EXPLICITLY ask to voxelize everything?
("voxelize everything" / "object and background" / "full voxel world")
→ MODE: object+background
Else, is a human FACE or BODY present?
├─ Person present + a held/featured object (food/product) is the subject?
│ → MODE: object-only (float loot tags on the object)
└─ Person present, NO featured object (people-in-a-place shot)?
→ MODE: background-only (the default for face-in-a-scene shots)
No person present?
├─ Pure object shot (a meal, a product, a flat-lay, a desk of gear)?
│ → MODE: object-only
└─ Landscape / scene with no featured object?
→ MODE: background-only
Genuinely ambiguous (can't tell if the object or the scene is the point)?
→ ask the user ONE line: "voxelize just the object, just the background,
or everything but you?"
路由意图:有人脸但没有主体物品时,默认选择 background-only(让人物置身于体素世界中,人物和任何无关物品都保持真实)。有主体物品时,选择 object-only(将主体物品体素化,为其添加标签,并让人物和场景保持真实)。只有在明确要求时才选择 object+background。
输入
<source>— 任意照片(路径、URL 或在聊天中粘贴的图片)。适用于物品特写、人物 + 物品照片和宽幅场景。
空参数菜单
- “把照片(路径、URL 或直接粘贴)发给我。我会自动选择模式——仅处理对象(将你要展示的食物/产品体素化,并添加 Minecraft 战利品标签)、仅处理背景(将你周围的场景体素化,保留真实的你和你手持的物品),或处理对象和背景(将除你以外的所有内容体素化)。如果你想强制指定某种模式,请告诉我。”
(不询问服务提供商——始终使用 gpt-image-2;参见 Engine。)
引擎——始终使用 gpt-image-2
gpt-image-2、quality="high"、output_format="png"。这是配方所需的强力编辑器,会将整个世界转化为方块。不要使用 nano-banana-pro——它的体素化程度不足(即使要求将主体转换成方块,也会保留写实效果),因此世界几乎不会发生变化(已通过一个包含 6 个场景的批次进行审核)。
**超时陷阱:**在 quality="high" 下,同步调用通常会超过约 260 秒的工具预算,导致客户端超时。始终使用 background:true 调用,并紧密循环轮询 task_status(task_id),直到状态变为 completed。
工作流
工作目录:<project>/voxel-it/<run-id>/——每次运行使用各自的文件夹。
第 1 步——获取 Pika-CDN URL 格式的源文件
-
**HTTPS URL?**直接使用。
-
**本地文件?**上传(第 2 步)。转换 HEIC:
sips -s format jpeg in.HEIC --out out.jpg——这会移除 EXIF 方向标记,因此 JPEG 可能会横着显示。查看图像;只有在图像横着显示时,才使用sips -r 90或sips -r 270(根据倾斜方向选择)旋转至正向,然后再次查看并确认。模型会按原样烘焙参考像素,因此上传前必须确保图像正向显示。 -
**在聊天中粘贴的图像?**不一定能可靠地保存在磁盘上。如果用户指定了文件(例如桌面截图——macOS 会在 AM/PM 前使用窄不换行空格 U+202F,因此请通过 glob 匹配),就复制该文件。否则,从会话记录中提取:
cd ~/.claude/projects/<project-slug>/ SRC=$(ls -t *.jsonl | head -1) # newest = current session python3 - "$SRC" "<run-dir>" <<'PY' import json, base64, sys, os, hashlib src, out = sys.argv[1], sys.argv[2]; imgs=[] for line in open(src): try: o=json.loads(line) except: continue m=o.get("message") if isinstance(o,dict) else None role=(m or {}).get("role") if isinstance(m,dict) else o.get("role") if role!="user": continue c=(m or o).get("content") if not isinstance(c,list): continue for p in c: if isinstance(p,dict) and p.get("type")=="image" and isinstance(p.get("source"),dict): s=p["source"] if s.get("data") and s.get("media_type","").startswith("image/"): imgs.append((s["media_type"], s["data"])) # save the last N pasted images (newest turn). Adjust [-1:] to [-N:] for batches. for i,(mt,data) in enumerate(imgs[-1:], 1): b=base64.b64decode(data); ext={"image/webp":"webp","image/jpeg":"jpg","image/png":"png"}.get(mt,"jpg") p=os.path.join(out,f"source_{i}.{ext}"); open(p,"wb").write(b) print(p, len(b), "sha256", hashlib.sha256(b).hexdigest()) PY开始生成前,务必重新读取保存的文件(查看图像)。
第 2 步——上传到 Pika CDN
upload_asset({filename, mime_type, size_bytes, sha256})
→ 使用响应中的原样 content_type,通过 PUT 上传字节到 presigned_url(curl -X PUT -H "content-type: <type>" --upload-file <file> "<presigned_url>",预期结果为 HTTP 200)→ 使用返回的 public_url。
第 3 步——运行编辑(根据第 0 步选择的模式分支)
调用 generate_image_edit,参数为 provider="gpt-image-2"、
quality="high"、output_format="png"、background=true(轮询),将 CDN URL 放入
images,并设置 aspect_ratio: "auto"——工作器会测量参考图并匹配其方向,因此你无需手动选择或重新计算宽高比。根据你对照片的判断填写 COLOR GRADING 的氛围描述。
选择与你在第 0 步确定的模式相对应的提示词区块。
MODE: 对象 + 背景(将人物以外的所有内容体素化)
逐字使用 @rohxit7 配方:
角色:你是一位专业的图像转换艺术家,擅长将照片转换为风格化的游戏世界,并进行电影级调色。
任务:将附带的参考照片转换为高质量的 Minecraft 截图,其中人物主体保持完全写实且不作改动,而场景中的其他所有内容都转换为精细的 Minecraft 方块几何体——然后根据原照片的氛围进行电影级调色。
核心概念(创作主旨——不得偏离):一个真实、照片级写实的人站在一个完全体素化/方块化的 Minecraft 世界中。写实人物与方块环境之间的反差是这张图片的全部意义所在。
转换规则:
- 保持照片级写实(不要改动):参考照片中的人物主体;他们的面部、皮肤、头发、服装、姿势和比例;按原样渲染——不要风格化,也不要方块化。
- 转换为 MINECRAFT(高质量方块模型):所有非人物元素——地形、地面、植物、物体、建筑、家具、车辆、天空和背景。使用干净的立方体/体素几何体,并采用清晰的 16x16 风格方块纹理。质量参考:使用优质着色器(例如 SEUS / BSL 风格)渲染的现代 Minecraft 截图——写实光照、柔和阴影、环境光遮蔽、体积光、锐利的方块边缘。
- 空间保真度(严格遵守——这是转换,不是重新构想): 保留完全相同的相机角度、取景范围和构图;每个元素都保持在原始位置;每个元素都保持原始的相对尺寸和比例;人物在画面中的位置和比例必须与源图相同;不要添加、删除或重新排列物体。
色彩分级(完成 Minecraft 转换后再进行): 步骤 1 — 先分析原始照片:判断拍摄时段、光照方向、主导色彩、色调冷暖和整体氛围([填写你感受到的氛围,例如“阴郁的夜间街道,冷蓝色天空与温暖的路灯光晕”/“温暖的黄金时刻”/“阴天的中性色调”])。 步骤 2 — 应用与分析出的氛围相符的电影级调色:使用电影感对比曲线,平衡高光和阴影;色调应与原始照片的氛围一致;添加微妙的暗角和景深效果,并确保写实人物与方块环境的色调协调一致,使它们看起来像一张完整统一的图像。
输出规格:单张高分辨率图像;清晰、细节丰富,达到专业 Minecraft 截图的质量;照片级写实人物 + 体素世界,并经过无缝调色。
完成前自检:人物是否仍然 100% 照片级写实且未作改动?其他所有内容是否都清晰呈现为 Minecraft 方块几何体?位置、尺寸和构图是否与源图完全一致?调色是否符合对原始照片氛围的分析?写实人物和方块世界是否浑然一体,而非像是贴上去的?
对象 + 背景模式中的战利品标签为可选项。 如果用户需要(或画面中有明确且可命名的主角物品),请将下方的战利品标签部分插入「转换规则」与「色彩分级」之间,并将对应标签行添加到「任务」和「自检」中:
战利品标签:在每件主角体素化物品的上方或附近,悬浮显示 Minecraft 背包风格的名称标签——使用清晰的白色像素/位图字体,显示在深色半透明圆角矩形上(类似 Minecraft 物品提示框/命名实体标签),为物品命名:[列出每件主角物品 → 其简短名称,例如“Mojito”“Sesame Latte”“Apple Cake”“Air Jordan 1”“Leica M6”]。标签应整洁、清晰易读、互不重叠,悬浮在每件物品上方,并且绝不能遮挡人物面部。(添加到「自检」中:“每件主角物品是否都有清晰易读且不遮挡面部的 Minecraft 名称标签?”)
模式:仅背景(将场景体素化,人物和任何随手拿着的物品都保持真实)
与物体+背景模式使用相同的 @rohxit7 配方,但转换规则 1 的范围更广,不只让人物保持真实:任何随手拿着或位于前景的物品也要保持照片级真实。具体来说,将规则 1 和规则 2 替换为:
- 保持照片级真实(不要修改):人物主体——面部、皮肤、头发、服装、姿势、比例——以及人物手持的任何物品或位于近景的任何物品(手机、饮料、包、道具)。所有这些都必须与原图完全一致地呈现——不做风格化,不做方块化。
- 转换为 MINECRAFT(高质量方块模型):仅限背景和环境——地形、地面、植物、建筑、家具、车辆、天空,以及主体后方和周围的景物。使用干净的立方体/体素几何形状和清晰的 16x16 风格方块纹理。质量参考:带高级着色器(SEUS / BSL)的现代 Minecraft 截图——逼真的光照、柔和阴影、环境光遮蔽、体积光、锐利的方块边缘。不要将人物或其手持物品体素化。
将物体+背景区块中的核心概念、空间保真度(规则 3)、色彩分级、输出规格和自检原样保留(这些内容无需更改)。仅背景模式不添加战利品标签。
模式:仅物体(只将主要物体及其餐具体素化;人物和背景保持真实;添加悬浮战利品标签)
这是已弃用的 Minecraft-Food 配方。按每个物品填写方括号中的列表,并原样保留 KEEP 和标签条款:
编辑这张确切的照片。保持 [人物及其面部、头发、手、服装、配饰/或者对于平铺俯拍图:桌子、容器、盘子、杯子、托盘、餐具] 以及背景/场景和光线 100% 照片级真实且保持不变——完全不要将 [人物] 风格化。
仅将食物、饮料和食物所用的餐具转换成 3D Minecraft 体素方块——粗大的低分辨率立方体像素几何形状,采用扁平的方块纹理,外观与 Minecraft 物品完全一致,每件物品都自然地放在真实物品原本所在的位置:[逐项映射——例如“拉面碗 → 一碗黄色方块面条”;“意大利辣香肠披萨片 → 方块饼皮 + 体素奶酪 + 方块意大利辣香肠片”;“蒸米饭 → 一堆白色体素米饭方块”]。
在每件转换后的物品上方或附近添加 Minecraft 物品栏风格的文字标签:使用清晰的白色像素/位图字体,置于深色半透明圆角矩形上,并标明物品名称(例如 [物品标签])。标签应整齐、清晰、互不重叠,并且绝不要覆盖 [人物的面部]。
最终效果:一张真实、照片级逼真的 [人物/场景] 照片,但每件食物、饮料和餐具都是带有悬浮 Minecraft 物品栏标签的 Minecraft 体素物品。
然后应用物体+背景区块中的色彩分级步骤(分析原图的氛围,并调整整个画面的色彩以匹配),使体素物体与真实人物/场景看起来融为一体。
生成前先逐项列出: 提高仅物体模式质量的最关键因素,是在提示词中逐一写出每件食物/商品及其应转换成的体素物品。先阅读原图并列出所有菜品/饮料/餐具;笼统地说“把食物变成方块”效果含糊,逐项映射才能准确呈现。
多人场景: 无论使用哪种模式,都要在 KEEP 条款中列出每个人物的名字,确保没有人被方块化。接触物品(手持马克杯、饮料、盘子)在仅物体/物体+背景模式下与物体一同体素化,但在仅背景模式下保持真实。
第 4 步 — 下载、展示、打开(并检查旋转)
下载到 <run-dir>/voxel-it-<subject>.png,展示图片,并在 Finder 中 open(不要再次使用 analyze_media 检查——直接查看)。除非另有要求,否则只用 PNG。旋转检查: gpt-image-2 偶尔会返回旋转 90° 的编辑结果——如果天空/天花板没有朝上,就使用 sips -r 90 或 sips -r 270(选择能使图片正向显示的角度;免费,无需重新生成)将其转正,然后重新查看。仅限静态图像。
提示与故障处理
| 症状 | 解决方法 |
|---|---|
| 输出旋转了 90° | 用 sips -r 90 / sips -r 270 旋转回来,选择能摆正图像的命令(免费,无需重新生成)。 |
| 人物被方块化了 | 再次强调 KEEP 子句;多人场景中要逐一说明每个人。 |
| 世界几乎没有体素化 | 你用的是 nano-banana-pro,切换到 gpt-image-2。 |
| 人物看起来像贴上去的 | 确保 COLOR GRADING 区块和氛围描述都在,这是统一画面的关键。 |
| 体素化对象不对 | 重新检查 Step 0——你选错模式了。object-only = 仅突出显示的对象;background-only = 仅场景;object+background = 除人物以外的所有内容。 |
| background-only 模式下对象被体素化 | 扩展 KEEP 子句,明确提及手持对象或前景对象。 |
| 标签缺失 / 对象错误(object-only) | 你忘了标签子句,或没有按名称列出主体对象。逐一列出。 |
| 标签杂乱 / 重叠 / 位于脸上 | “让标签互不重叠,位于各对象正上方,绝不要放在脸上”;重新生成。 |
| 不该出现标签却出现了 | 你使用的是 background-only(无标签),删除标签子句。 |
| 白天变成夜晚 | 在 COLOR GRADING 中明确说明夜间氛围。 |
| 与源图裁切不同 | 传入 aspect_ratio: "auto"——工作进程会匹配参考图的方向。 |
| 脸部发生偏移 | 这是预期情况(无蒙版方案)。高级修复方法见下文。 |
高级——保证身份一致(非标准方案)。 对源图使用 remove_background(mode="portrait"),然后将 alpha 通道用作 gpt-image-2 的 mask(透明部分=重绘,不透明部分=保留),这样只有目标区域会转换,人物像素不会受到影响。不属于 @rohxit7 的方案;仅在必须让面部像素级完全一致时使用。
参考
- 引擎: @rohxit7 的爆款方案,原样使用。object-only 提示词 + 战利品标签:取自 @aibyjoe 的 “Minecraft Food”。此技能整合并取代 minecraft-food(object-only)和 minecraft-world(object+background)。
- 结论:始终使用 gpt-image-2;一套方案,三种由输入驱动的模式。