144 lines
7.4 KiB
Markdown
144 lines
7.4 KiB
Markdown
---
|
||
front: 进阶
|
||
time: 15分钟
|
||
---[2-地图编辑器使用说明.md](../../14-%E5%9C%B0%E5%9B%BE%E5%88%B6%E4%BD%9C/2-%E5%9C%B0%E5%9B%BE%E7%BC%96%E8%BE%91%E5%99%A8%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E.md)
|
||
|
||
# 模型规范指南
|
||
## 前言
|
||
在当前模组开发实践中,部分开发者所采用的 Blockbench.
|
||
|
||
模型与官方标准模型存在差异,因此换了BlockBench模型的Mod,会导致官方皮肤时出现贴图错位、模型消失等兼容性问题,影响了玩家的视觉体验.
|
||
因此,我们现已开放官方模型规范,开发者们请参考并遵循。新作品通过规范指南进行UV、动画等的制作,已有作品则可以通过API判断是否需要修改Blockbench
|
||
模型,确保模组能够与官方皮肤良好配合,为玩家带来更加一致、流畅的游戏体验。
|
||
|
||
## 兼容分类
|
||
|
||
根据模组与官方皮肤的兼容程度,分为:
|
||
1. **完全兼容**:未更换bb模型。表现为:皮肤模型贴图,以及穿戴外观,模组动画等表现都正常。
|
||
2. **部分兼容**:更换了bb模型,但按照官方规范制作。表现为:皮肤挂件以及穿戴外观正常,但是模型样式改变及贴图错乱。
|
||
3. **不兼容**:更换了bb模型,且未按照官方规范制作。表现为:模型样式改变,皮肤挂件错乱,穿戴外观错乱,以及动作异常。
|
||
|
||
## 规范概要
|
||
|
||
1. 玩法模组:非必要不改bb模型
|
||
2. 动作优化类模组:`人形角色,非必要不修改bb结构,即无需使用AddPlayerGeometry的Api`
|
||
* 未增加关节:仅增加和优化动画的 ,不替换bb模型(属于“完全兼容”)
|
||
* 增加关节:
|
||
- 中高级别多关节官方皮肤:不替换模型与贴图,动画按照官方骨骼层级制作进而保证皮肤表现正常(属于“完全兼容”)
|
||
- 其他官方皮肤:可根据各模组对动画的修改程度选择是否替换bb模型。如果选择替换bb模型,则需按官方规范制作(属于“部分兼容”)
|
||
3. 人形角色,涉及“动作优化”等必须修改bb模型的,遵守以下规范即可(可参考 官方人物模型.json 模板)
|
||
4. 不建议直接修改 player.entity.json 和 player.render_controllers.json,如果改了请务必在官方的规范下进行拓展
|
||
|
||
## 美术制作规范
|
||
|
||
### 必要骨骼
|
||
|
||
1. 常规骨骼:常作为挂件的挂点
|
||
> root, waist, body, leftArm, leftArmDown, rightArm, rightArmDown, head, bodyDown, leftLeg, leftLegDown, rightLeg, rightLegDown, rightLeg, cape
|
||
2. 会员盔甲挂点:
|
||
> 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, 0) | |
|
||
| —————leftSleeve | (-5, 22, 0) | |
|
||
| ———rightArm | (5, 22, 0) | |
|
||
| **—————rightArmDown** | (5, 18, 0) | 新增必要骨骼 |
|
||
| **———————rightSleeveDown** | (5, 18.25, 0) | 新增盔甲骨骼 |
|
||
| ———————rightItem | (6, 15, 0) | |
|
||
| —————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 和 bodyDown 层级并列
|
||
* 新增的切分关节
|
||
- 5个骨骼节点:`leftArmDown, rightArmDown, bodyDown, leftLegDown, rightLegDown `
|
||
- 5个骨骼节点:`jacketDown, leftSleeveDown, rightSleeveDown, leftPantsDown, [12-动作优化规范.md](12-%E5%8A%A8%E4%BD%9C%E4%BC%98%E5%8C%96%E8%A7%84%E8%8C%83.md)rightPantsDown`
|
||
|
||
### UV贴图制作
|
||
如下图所示,需要按照Steve规范进行制作
|
||
|
||

|
||
### 其余注意事项
|
||
|
||
1. 除盔甲骨骼以外,其他骨骼下必须有同名cube。例如:
|
||
|
||

|
||
|
||
## 新增支持
|
||
|
||
### MOD SDK
|
||
|
||
为了方便开发者们在脚本中判断当前玩家皮肤状态,新增了三个接口和一个事件。
|
||
开发者可在事件当中判定**当前皮肤是否是官方,从而决定是否修改模型。**
|
||
|
||
也请开发者注意[**规范概要**](#规范概要),**非必要情况不修改模型。如需修改,也遵循照官方模型规范**
|
||
|
||
**【接口和事件】**
|
||
1. IsOfficialSkin 是否为官方皮肤
|
||
2. IsHighLevelOfficialSkin 是否为官方史诗级以上皮肤
|
||
3. IsHighLevelMultiJointOfficialSkin 是否为官方史诗级以上的多关节皮肤
|
||
4. UpdatePlayerSkinClient 更新模型皮肤事件
|
||
|
||
**【注意】**
|
||
|
||
上述三个接口在收到 Minecraft:EngineScripts:UpdatePlayerSkinClient 事件后进行调用。更多详细说明,见官网文档
|
||
|
||
使用示例
|
||
```python
|
||
# 这里以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:为官方史诗级以上的多关节皮肤
|
||
```
|
||
|
||
### 模型模板下载
|
||
当前官方提供的“多关节”结构已经能满足大部分的模组开发者,请开发者下载官方规范模型文件
|
||
|
||
[standard_steve.geo.json](./resources/standard_steve.geo.json)
|
||
|
||
[standard_steve.png](./resources/standard_steve.png)
|
||
|
||
|
||
|
||
### 测试服测试
|
||
为方便开发者测试4D皮肤与模组本身的兼容性,官方在开发者测试服提供了测试用4D皮肤,可通过邮件领取
|
||
|
||
|
||
|
||
|