Files
netease-bedrock-wiki/mcguide/16-美术/6-模型和动作/模型规范指南.md
2025-09-26 17:47:57 +08:00

8.5 KiB
Raw Blame History

front, time
front time
进阶 15分钟

模型规范指南

前言

在当前模组开发实践中,部分开发者所采用的 Blockbench模型与官方标准模型存在差异。

因此换了BlockBench模型的Mod会导致官方皮肤时出现贴图错位、模型消失等兼容性问题影响了玩家的视觉体验。

现已开放官方模型规范开发者们请参考并遵循。新作品通过规范指南进行UV、动画等的制作。已有作品则可以通过SDK判断是否需要修改Blockbench模型确保模组能够与官方皮肤良好配合为玩家带来更加一致、流畅的游戏体验判断是否需要修改Blockbench模型确保模组能够与官方皮肤良好配合为玩家带来更加一致、流畅的游戏体验

资源提供

当前官方提供的“多关节”结构Blockbench模型已经能满足大部分的模组开发者

  • 请开发者下载官方规范player模型文件

  • 手机端则可在开平下载更新至3.5测试端,在邮件领取测试用4D皮肤测试模组与4D皮肤的兼容性

兼容分类

根据模组与官方皮肤的兼容程度,分为:

  1. 完全兼容未更换bb模型。表现为皮肤模型贴图以及穿戴外观模组动画等表现都正常。
  2. 部分兼容更换了bb模型但按照官方规范制作。表现为皮肤挂件以及穿戴外观正常但是模型样式改变及贴图错乱。
  3. 不兼容更换了bb模型且未按照官方规范制作。表现为模型样式改变皮肤挂件错乱穿戴外观错乱以及动作异常。

规范概要

  1. 玩法模组非必要不改bb模型如需修改bb模型需遵循动作优化类模组规范
  2. 动作优化类模组:
  • 人形角色非必要不修改bb结构即无需使用AddPlayerGeometry的Api
  • 如需修改修改bb结构则应该按以下优先级进行美术制作
    • 不修改玩家模型为多关节
    • 按规范修改四肢为多关节模型但是不修改Body为多关节模型
    • 按规范砍四肢与body为多关节模型
    • 按规范命名骨骼/层级,但是玩家骨骼层级随意修改 (极不推荐)
  1. SDK使用
  • 开发者可以结合以下Mod SDK判断是否需要更换模型
  • 建议穿戴史诗及以上多关节官方4d皮肤在模组对皮肤兼容度较差的前提下不进行玩家模型修改
  • 其余情况开发者也可以使用接口判断更换模型的必要性
  1. 动画制作人形角色必须修改bb模型的建议使用官方模型并用其进行动画制作
  2. 其他:不建议直接修改 player.entity.json 和 player.render_controllers.json如果改了请务必在官方的规范下进行拓展

多关节美术制作参考

必要骨骼

  1. 常规骨骼(常作为挂件的挂点):
  • root, waist, body, leftArm, leftArmDown, rightArm, rightArmDown, head, bodyDown, leftLeg, leftLegDown, rightLeg, rightLegDown, rightLeg, cape
  1. 会员盔甲挂点:
  • hat, jacket, jacketDown, leftSleeve, leftSleeveDown, rightSleeve, rightSleeveDown, leftPants, leftPantsDown, rightPants, rightPantsDown

【注意】

  • 共计26个骨骼开发者请不要随意删除
  • 必要骨骼中加粗字体的骨骼为相比原版Steve新增的关节

骨骼层级一览

节点名称 枢轴点 备注
root (0,0,0)
—waist (0, 12, 0)
——body (0, 24, 0)
———head (0, 24, 0)
—————hat (0, 24, 0)
———cape (0, 24, 3)
———leftArm (-5, 22, 0)
—————leftArmDown (-5, 18, 0) 新增必要骨骼
———————leftSleeveDown (-5, 18.25, 0) 新增盔甲骨骼
———————leftItem (-6, 15, 1)
—————leftSleeve (-5, 22, 0)
———rightArm (5, 22, 0)
—————rightArmDown (5, 18, 0) 新增必要骨骼
———————rightSleeveDown (5, 18.25, 0) 新增盔甲骨骼
———————rightItem (6, 15, 1)
—————rightSleeve (5, 22, 0)
———jacket (0, 24, 0)
——bodyDown (0, 16, 0) 新增必要骨骼
———jacketDown (0, 16.25, 0) 新增盔甲骨骼
—leftLeg (-1.9, 12, 0)
——leftPants (-1.9, 12, 0)
——leftLegDown (-1.9, 6, 0) 新增必要骨骼
————leftPantsDown (-1.9, 6.25, 0) 新增盔甲骨骼
—rightLeg (1.9, 12, 0)
——rightPants (1.9, 12, 0)
——rightLegDown (1.9, 6, 0) 新增必要骨骼
————rightPantsDown (1.9, 6.25, 0) 新增盔甲骨骼

【注意】

  • 骨骼层级:影响官方动画兼容
  • 骨骼命名:影响官方挂件兼容
  • 枢轴点影响。比如body枢轴点24非16的原因是考虑原生鞘翅和胸甲的绑定位置

骨骼层级说明

  • body 和 bodyDown 层级并列
  • 新增的切分关节
    • 5个骨骼节点leftArmDown, rightArmDown, bodyDown, leftLegDown, rightLegDown
    • 5个骨骼节点jacketDown, leftSleeveDown, rightSleeveDown, leftPantsDown, rightPantsDown

UV贴图制作

如下图所示需要按照Steve规范进行制作

其余注意事项

  1. 除盔甲骨骼以外其他骨骼下必须有同名cube。例如

新增支持

MOD SDK

为了方便开发者们在脚本中判断当前玩家皮肤状态,新增了三个接口和一个事件。 开发者可在事件当中判定当前皮肤是否是官方,从而决定是否修改模型。

也请开发者注意规范概要非必要情况不修改模型。如需修改,也遵循照官方模型规范

【接口和事件】

  1. IsOfficialSkin 是否为官方皮肤
  2. IsHighLevelOfficialSkin 是否为官方史诗级以上皮肤
  3. IsHighLevelMultiJointOfficialSkin 是否为官方史诗级以上的多关节皮肤
  4. UpdatePlayerSkinClient 更新模型皮肤事件

【注意】

上述三个接口在收到 Minecraft:EngineScripts:UpdatePlayerSkinClient 事件后进行调用。更多详细说明,见官网文档

使用示例

# 这里以IsHighLevelMultiJointOfficialSkin为例

self.ListenForEvent('Minecraft', "EngineScripts", "UpdatePlayerSkinClient', self, self onUpdatePlayerSkinClient)
def onUpdatePlayerSkinClient(self,args):
    import mod.client.extraClientApi as clientApi
    comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
    comp.IsHighLevelMultiJointOfficialSkin(args['playerId']) # 返回bool为官方史诗级以上的多关节皮肤

测试皮肤

为方便开发者测试4D皮肤与模组本身的兼容性官方在开发者测试服提供了测试用4D皮肤可通过邮件领取

注意: 请各位开发者更新到3.5测试服3.4该测试皮肤不会生效