• Forge论坛

导航页

  • 主页
  • 向文档做出贡献
  • 入门
    • 概述
    • 模组文件
    • 规划你的模组结构
    • 版本号
  • 核心概念
    • 注册表
    • 端位(Sides)
    • 事件
    • 模组生命周期
    • 资源
    • 国际化与本地化
  • 方块
    • 概述
    • 方块状态
  • 物品
    • 概述
    • BlockEntityWithoutLevelRenderer
  • 网络
    • 概述
    • SimpleImpl
    • 实体的同步
  • 方块实体
    • 概述
    • BlockEntityRenderer
  • 游戏特效
    • 粒子效果
    • 音效
  • 数据储存
    • Capabilities
    • Saved Data
    • 编解码器(Codecs)
  • 图形用户界面
    • 菜单(Menus)
    • 屏幕(Screens)
  • 渲染
    • 模型扩展
      • 概述
      • 根变换
        • 元素的指定
      • 渲染类型
      • 部分可见度
      • 面数据
    • 模型加载器
      • 概述
      • 烘焙模型
      • 变换
      • 物品重载
  • 资源
    • 客户端资源(Assets)
      • 概述
      • 模型
        • 概述
        • 纹理色调
        • 物品属性
    • 服务端数据(Data)
      • 概述
      • 配方
        • 概述
        • 自定义配方
        • 原料
        • 非数据包配方
      • 战利品表
      • 全局战利品修改器
      • 标签
      • 进度
      • 条件性加载数据
  • 数据生成
    • 概述
    • 客户端资源(Assets)
      • 模型提供者
      • 语言提供者
      • 音效提供者
    • 服务端数据(Data)
      • 配方提供者
      • 战利品表提供者
      • 标签提供者
      • 进度提供者
      • 全局战利品修改器提供者
      • 数据包注册表对象提供者
  • 杂项功能
    • 配置
    • 键盘布局
    • 游戏测试
    • Forge更新检查器
    • 调试分析器
  • 进阶主题
    • 访问转换器
  • 向Forge做出贡献
    • 概述
    • Pull Request准则
  • 旧版本
    • 概述
    • 移植到当前版本

根变换

在模型JSON的顶层添加transform条目向加载器建议,在方块模型的情况下,应在方块状态文件中的旋转之前对所有几何体应用变换,在物品模型的情况中,应在显示变换之前对其应用变换。转换可通过IUnbakedGeometry#bake()中的IGeometryBakingContext#getRootTransform()获得。

自定义模型加载器可能会完全忽略此字段。

根变换可以用两种格式指定:

  1. 一个JSON对象,包含一个奇异的matrix条目,该条目包含一个嵌套JSON数组形式的原始转换矩阵,省略了最后一行(3*4矩阵,行主序)。矩阵是按平移、左旋转、缩放、右旋转和变换原点的顺序组成的。结构示例:
    "transform": {
        "matrix": [
            [ 0, 0, 0, 0 ],
            [ 0, 0, 0, 0 ],
            [ 0, 0, 0, 0 ]
        ]
    }
  2. 一个JSON对象,包含以下可选项的任意组合:
    • origin:用于旋转和缩放的原点
    • translation:相对平移
    • rotation或left_rotation:在缩放之前围绕要应用的平移原点旋转
    • scale:相对于平移原点的比例
    • right_rotation或post_rotation:在缩放之后要应用的围绕平移原点的旋转

元素的指定

如果转换被指定为选项4中提到的条目的组合,则这些条目将按照translation、left_rotation、scale、right_rotation的顺序应用。 转换将移动到指定的原点,作为最后一步。

{
    "transform": {
        "origin": "center",
        "translation": [ 0, 0.5, 0 ],
        "rotation": { "y": 45 }
    },
    // ...
}

这些元素的定义应为如下:

原点

原点可以指定为表示三维矢量的3个浮点数的数组:[ x, y, z ],也可以指定为三个默认值之一:

  • "corner" (0, 0, 0)
  • "center" (.5, .5, .5)
  • "opposing-corner" (1, 1, 1)

如果未指定原点,则其默认为"opposing-corner"。

平移

平移必须指定为表示三维矢量的3个浮点数的数组:[ x, y, z ],如果不存在,则默认为(0, 0, 0)。

左旋转和右旋转

可以通过以下四种方式中的任何一种指定旋转:

  • 具有单轴=>旋转度映射的单个JSON对象:{ "x": 90 }
  • 具有上述格式的任意数量的JSON对象的数组(按指定顺序应用):[ { "x": 90 }, { "y": 45 }, { "x": -22.5 } ]
  • 由3个浮点数组成的数组,指定围绕每个轴的旋转(以度为单位):[ 90, 180, 45 ]
  • 直接指定四元数的4个浮点数的数组:[ 0.38268346, 0, 0, 0.9238795 ](示例等于绕X轴45度)

如果未指定相应的旋转,则默认为无旋转。

比例

比例必须指定为表示三维矢量的3个浮点数的数组:[ x, y, z ],如果不存在,则默认为(1, 1, 1)。

Built with MkDocs using a custom theme. Hosted by Read the Docs.
Enable Dark Theme