mcpField
V
voxel-it

voxel-it

github.com/pika-labs创意与媒体41664 次安装14 周前更新
代码仓库

关于 voxel-it

voxel-it 是一个 Pika MCP 技能,可将照片转换为 Minecraft 风格图像,同时让人物保持写实。它会从三种体素化模式中选择,并保留原始构图与色彩氛围。

主要功能

  1. 01选择三种体素化模式之一
  2. 02让人物保持写实
  3. 03将指定区域转换为方块
  4. 04保留画面构图和物体位置
  5. 05可添加 Minecraft 风格物品标签

适用场景

  1. 01保留人物并将周围场景体素化
  2. 02将重点展示的食物或商品转换为方块
  3. 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」)。

效果详述:

  1. 保持真实照片质感且不做改动——人物(面部、皮肤、头发、服装、姿势、比例)。任何模式下都不做风格化处理,也不将其方块化。
  2. 将所选模式指定的部分转换为 Minecraft 风格(以下部分的某个子集:地形、建筑、植物、物品、家具、车辆、食物、饮料、天空、背景):采用干净的立方体/体素几何形状、清晰的 16×16 风格纹理,达到现代 Minecraft 截图的品质(高级 SEUS/BSL 着色器——逼真的光线、柔和的阴影、AO、体积光、锐利的边缘)。
  3. **空间保真度(严格):**保持原始相机视角、取景和构图;每个元素都处于原来的位置和尺寸;不得添加、移除或重新排列任何内容。
  4. **电影感调色(统一整体效果):**分析原图氛围并调整整个画面的色调,使之与原图匹配,让真实人物与体素世界协调一致,呈现为一张完整图片,而不是拼贴的剪切图。
  5. (有条件)战利品标签——仅限仅物品模式;参见 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 或在聊天中粘贴的图片)。适用于物品特写、人物 + 物品照片和宽幅场景。

空参数菜单

  1. “把照片(路径、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 世界中。写实人物与方块环境之间的反差是这张图片的全部意义所在。

转换规则:

  1. 保持照片级写实(不要改动):参考照片中的人物主体;他们的面部、皮肤、头发、服装、姿势和比例;按原样渲染——不要风格化,也不要方块化。
  2. 转换为 MINECRAFT(高质量方块模型):所有非人物元素——地形、地面、植物、物体、建筑、家具、车辆、天空和背景。使用干净的立方体/体素几何体,并采用清晰的 16x16 风格方块纹理。质量参考:使用优质着色器(例如 SEUS / BSL 风格)渲染的现代 Minecraft 截图——写实光照、柔和阴影、环境光遮蔽、体积光、锐利的方块边缘。
  3. 空间保真度(严格遵守——这是转换,不是重新构想): 保留完全相同的相机角度、取景范围和构图;每个元素都保持在原始位置;每个元素都保持原始的相对尺寸和比例;人物在画面中的位置和比例必须与源图相同;不要添加、删除或重新排列物体。

色彩分级(完成 Minecraft 转换后再进行): 步骤 1 — 先分析原始照片:判断拍摄时段、光照方向、主导色彩、色调冷暖和整体氛围([填写你感受到的氛围,例如“阴郁的夜间街道,冷蓝色天空与温暖的路灯光晕”/“温暖的黄金时刻”/“阴天的中性色调”])。 步骤 2 — 应用与分析出的氛围相符的电影级调色:使用电影感对比曲线,平衡高光和阴影;色调应与原始照片的氛围一致;添加微妙的暗角和景深效果,并确保写实人物与方块环境的色调协调一致,使它们看起来像一张完整统一的图像。

输出规格:单张高分辨率图像;清晰、细节丰富,达到专业 Minecraft 截图的质量;照片级写实人物 + 体素世界,并经过无缝调色。

完成前自检:人物是否仍然 100% 照片级写实且未作改动?其他所有内容是否都清晰呈现为 Minecraft 方块几何体?位置、尺寸和构图是否与源图完全一致?调色是否符合对原始照片氛围的分析?写实人物和方块世界是否浑然一体,而非像是贴上去的?

对象 + 背景模式中的战利品标签为可选项。 如果用户需要(或画面中有明确且可命名的主角物品),请将下方的战利品标签部分插入「转换规则」与「色彩分级」之间,并将对应标签行添加到「任务」和「自检」中:

战利品标签:在每件主角体素化物品的上方或附近,悬浮显示 Minecraft 背包风格的名称标签——使用清晰的白色像素/位图字体,显示在深色半透明圆角矩形上(类似 Minecraft 物品提示框/命名实体标签),为物品命名:[列出每件主角物品 → 其简短名称,例如“Mojito”“Sesame Latte”“Apple Cake”“Air Jordan 1”“Leica M6”]。标签应整洁、清晰易读、互不重叠,悬浮在每件物品上方,并且绝不能遮挡人物面部。(添加到「自检」中:“每件主角物品是否都有清晰易读且不遮挡面部的 Minecraft 名称标签?”)


模式:仅背景(将场景体素化,人物和任何随手拿着的物品都保持真实)

与物体+背景模式使用相同的 @rohxit7 配方,但转换规则 1 的范围更广,不只让人物保持真实:任何随手拿着或位于前景的物品也要保持照片级真实。具体来说,将规则 1 和规则 2 替换为:

  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;一套方案,三种由输入驱动的模式。

评论

支持 Markdown