• Forge论坛

导航页

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

烘焙模型(BakedModel)

BakedModel是对普通模型加载器调用UnbakedModel#bake或对自定义模型加载器调用IUnbakedGeometry#bake的结果。与UnbakedModel或IUnbakedGeometry不同,BakedModel纯粹代表一种没有任何物品或方块概念的形状,而不是抽象的。它表示已经优化并简化为可以(几乎)进入GPU的几何体。它还可以处理物品或方块的状态以更改模型。

在大多数情况下,实际上没有必要手动实现此接口。相反,可以使用现有的实现之一。

getOverrides

返回要用于此模型的ItemOverrides。仅当此模型被渲染为物品时才使用此选项。

useAmbientOcclusion

如果模型在存档中渲染为方块,则有问题的方块不会发出任何光,并且环境光遮挡处于启用状态。这将导致使用环境光遮挡来渲染模型。

isGui3d

如果模型被渲染为物品栏中的物品,在地面上被渲染为实体,在物品框架上,等等,这会使模型看起来“扁平”。在GUI中,这也会禁用照明。

isCustomRenderer

重要

除非你知道自己在做什么,否则只需return false然后继续其他事项。

将其渲染为物品时,返回true将导致模型不被渲染,转而回到BlockEntityWithoutLevelRenderer#renderByItem。对于某些原版物品,如箱子和旗帜,此方法被硬编码为将数据从物品复制到BlockEntity中,然后使用BlockEntityRenderer来渲染BE以代替物品。对于所有其他物品,它将使用由IClientItemExtensions#getCustomRenderer提供的BlockEntityWithoutLevelRenderer实例。有关详细信息,请参阅BlockEntityWithoutLevelRenderer页。

getParticleIcon

粒子应使用的任何纹理。对于方块,它将在实体掉落在其上或其被破坏时显示。对于物品,它将在报废或被吃掉时显示。

重要

由于模型数据可能会对特定模型的渲染方式产生影响,因此不推荐使用不带参数的原版方法,而推荐使用#getParticleIcon(ModelData)。

getTransforms

此方法被废弃,推荐实现#applyTransform。如果实现了#applyTransform,则该默认实现是足够的。参见变换。

applyTransform

参见变换。

getQuads

这是BakedModel的主要方法。它返回一个BakedQuad的列表:包含将用于渲染模型的低级顶点数据的对象。如果模型被呈现为方块,那么传入的BlockState是非空的。如果模型被呈现为物品,则从#getOverrides返回的ItemOverrides负责处理物品的状态,并且BlockState参数将为null。

注意

BakedQuad中顶点的原点是底部的西北角。小于0或大于1的顶点坐标值会将顶点定位在该方块之外。为了避免照明问题,请按逆时针顺序提供顶点。

传入的Direction用于面剔除。如果正在渲染的另一个方块的给定边上的块是不透明的,则不会渲染与该边关联的面。如果该参数为null,则返回与边不关联的所有面(其永远不会被剔除)。

rand参数是Random的一个实例。

它还接受一个非null的ModelData实例。这可用于在通过ModelProperty渲染特定模型时定义额外数据。例如,一个这样的属性是CompositeModel$Data,用于使用forge:composite模型加载器存储模型的任何附加子模型数据。

请注意,此方法经常被调用:对于一个存档中的每个方块,非剔除面和支持的方块渲染层的每个组合(任何位置从0到28次)调用一次。这给方法应该尽可能快,并且可能需要大量缓存。

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