mcpField
R
roblox-texture-gen

roblox-texture-gen

github.com/syphodev-yt创意与媒体11250 次安装3 天前更新
代码仓库

关于 roblox-texture-gen

roblox-texture-gen 是用于 Roblox 项目的脚本化纹理流程,面向需要生成可平铺材质并应用到零件或模型的创作者。它通过外部图像生成、资产上传和 Luau 属性写入来批量处理纹理。

主要功能

  1. 01生成可平铺图像纹理
  2. 02将图像上传为 Roblox 资产
  3. 03通过 Luau 应用纹理
  4. 04批量处理模型中的多个零件
  5. 05截图检查渲染结果

适用场景

  1. 01为游戏零件制作可重复平铺的材质
  2. 02为模型中的多个 MeshPart 应用同一皮肤
  3. 03生成纹理变体并在上传前预览
  4. 04检查上传后的纹理是否正常显示

MCP 相关

该流程使用官方 Roblox Studio MCP 的工具检查 Studio 连接、查找目标实例、上传图像、执行 Luau 和截取画面。

安装

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

$npx skills add https://github.com/syphodev-yt/roblox-ai-skills --skill roblox-texture-gen

安装后在 Claude Code 中输入/roblox-texture-gen确认已加载。

附带文件LOCAL.template.mdscripts/generate_texture.py

详细介绍

Roblox 纹理生成器

第一次在这台机器上使用? 请阅读此文件夹中的 LOCAL.md。如果文件不存在,请运行 roblox-skills-setup 技能(或将 LOCAL.template.md 复制为 LOCAL.md 并填写)。 LOCAL.md 保存了你的路径和工具位置;它属于你个人,绝不会共享。

此技能是一套可脚本化的纹理工作流:使用免费 API 生成可平铺图像,将其上传为图像资产,然后通过代码将其写入目标部件。 它适用于任何部件或网格,并可批量处理整个模型。

官方 Studio MCP 还提供 generate_texture,可根据文本提示词,直接为单个 MeshPart 或 Model 重新生成纹理。若用户需要贴合单个网格形状的纹理,请使用该功能;若需要可平铺材质、贴花、一次处理多个部件,或希望将纹理保存为可复用文件,请使用此工作流。

为什么采用这一流程

  1. 图像生成完全在 Roblox 之外进行。 Pollinations.ai 是一个免费、无需密钥的图像 API——发送普通 HTTP GET 请求即可返回 PNG。无需 Studio 插件、无需付费套餐,也无需注册(注册是可选的,只会提高速率限制并去除水印)。
  2. Roblox 只接受已导入的资产,因此生成的图像必须先上传为图像资产,Studio 才能引用它。MCP 的 upload_image 就是为此而设。
  3. 应用纹理只需写入属性,通过 execute_luau 完成(针对单个部件,或循环处理模型中的每个部件)。

分步操作

0. 检查 Studio 连接

这些工具来自官方 Roblox Studio MCP(list_roblox_studios、 get_studio_state、search_game_tree、inspect_instance、execute_luau、 upload_image、screen_capture)。如果这些工具处于延迟加载状态,请在一次 ToolSearch 调用中加载它们。调用 list_roblox_studios 获取其他调用所需的 studio_id,然后调用 get_studio_state。如果任一调用失败,请停止并明确告知用户:Studio MCP 未连接,或 Studio 尚未打开。不要编造结果;没有运行中的 Studio 会话,这套工作流就无法执行。

1. 确定要生成的内容

如果以下两项尚不明确,请询问用户(或根据上下文推断):

  • 风格——例如“数码迷彩”、“镀金拉丝金属”、“碳纤维编织纹理”、 “历经战火的锈蚀效果”。像“做得酷一点”这样含糊的要求,值得快速追问,因为应用后很难撤销。
  • 目标——场景中部件、网格或模型的确切名称(例如 Handle、GunBody、 包含多个部件的整个 Model)。生成前请使用 search_game_tree 或 inspect_instance 确认名称存在——不要猜部件名称,以免图像生成后才发现名称有误。

自行编写生成提示词:在用户描述的风格后追加 , seamless tileable texture, flat lighting, no watermark, high detail。与仅使用风格词相比,这样生成的内容通常更接近可用的游戏纹理,因为通用提示词往往会生成插画,而非可平铺材质。

2. 生成图像

运行捆绑脚本,而不要自行编写 HTTP 调用——它会处理 URL 编码、在 Pollinations 限速时重试(匿名用户每 15 秒 1 次请求),并验证响应不是伪装成图像的错误页面:

python "<skill_dir>/scripts/generate_texture.py" "camo military texture, seamless tileable texture, flat lighting, no watermark, high detail" ./textures/gun_camo.png --width 1024 --height 1024

将文件保存到 scratch/textures 文件夹,而不要直接放入用户的项目目录,除非用户已告知资产应存放的位置。选择能说明文件内容的名称(如 gun_gold_plated.png,而不是 output.png)——通常需要生成几个版本,才能选出用户满意的一款。

上传到 Roblox 前,先向用户展示生成的图像。 生成图像既快速又免费;资产上传和审核都需要时间,而重新上传被拒绝或用户不喜欢的纹理,会浪费一次 Studio 往返操作。除非用户明确表示要跳过预览并直接应用,否则请先获得用户认可。

3. 上传为图像资源

upload_image 接受图像 URL,而不是文件路径,因此先在 localhost 上提供 textures 文件夹,以便上传,然后停止服务器:

python -m http.server 8765 --bind 127.0.0.1 --directory ./textures
upload_image(imagePaths=["http://localhost:8765/gun_camo.png"], studio_id=...)

它会返回一个从 URL 到 rbxassetid://<id> 的映射。(没有 Studio?roblox-3d-model 技能中的 upload_asset.py 会通过 Open Cloud 使用你自己的 ROBLOX_API_KEY 上传图像。)上传的资源需要经过审核,因此可能要等一段时间才会显示;刚上传的图像有时会显示为灰色,即使属性设置正确也是如此。如果上传后立即调用 screen_capture,看到灰色或缺失的纹理,很可能就是这个原因;请告知用户,而不要认定整个流程失败。

4. 应用到目标对象

对于带有 Texture/Decal 子级的单个部件,或具有纹理属性的 MeshPart:

workspace:FindFirstChild("<target>", true).TextureID = "rbxassetid://<id>"

对于包含多个带纹理部件的 Model(例如,由多个 MeshPart 组成且都应使用同一皮肤的枪械),在一次 execute_luau 调用中遍历其所有后代:

local model = game.Workspace:FindFirstChild("GunModel", true)
for _, part in ipairs(model:GetDescendants()) do
    if part:IsA("MeshPart") then
        part.TextureID = "rbxassetid://<id>"
    end
end

如果不确定目标对象是否公开了 TextureID、Texture 或 SurfaceAppearance 子级,请先使用 inspect_instance 检查(带有 PBR 材质的 SurfaceAppearance/MeshPart 与普通 Decal 的连接方式不同)。设置错误的属性不会有任何提示,只会不起作用,因此多检查一步是值得的。

5. 验证

在告知用户已完成之前,先调用 screen_capture 并检查结果。属性写入成功,并不意味着纹理已正确渲染——UV 映射不匹配、审核延迟或属性目标错误,都可能导致网格看起来毫无变化或显示异常,即使每次工具调用都返回成功。

调整样式

如果用户想要不同的变化(“做旧一些”“少点反光”),请用调整后的提示词重新生成,而不是尝试编辑现有图像——在这个流程中,Pollinations 没有编辑/局部重绘端点,只有文生图。对于同一概念的不同版本,如果希望它们风格相近,请在各次尝试中保持 --seed 不变;如果想要截然不同的方向,则省略或更改它。

此技能不负责的内容

  • 它不能替代 Roblox 自带的网格感知纹理功能(MCP 的 generate_texture,或 Studio 中的 Texture Generator)。这类功能会根据几何形状进行处理,因此能为复杂网格生成更贴合 UV 的结果。此流程的优势在于可脚本化、可平铺和可批量处理,而不是质量更高。
  • 它不负责管理 Roblox 资源审核——上传的资源可能被拒绝(例如违反内容政策),这不在此技能的控制范围内。如果 upload_image 报告资源被拒绝,请将情况转告用户,而不要盲目重试。

评论

支持 Markdown