Minecraft动画是否已硬编码到游戏中?[关闭]


12

我想知道动画系统在《我的世界》中的运作方式。我觉得所有小怪都是硬编码到游戏中的。刻痕真的坐在那里,用手为所有动画骨骼创建矩阵吗?

我喜欢重新创建有趣的游戏,所以我想知道他是如何做到的。另外,如果他确实对它们进行了硬编码,还有更好的方法吗?


2
您为什么认为他可能有硬编码的动画?
Ali1S232 2011年

似乎这个问题只能由Notch回答。
MichaelHouse

9
更重要的是,为什么您要关心Minecraft的工作方式?您对如何以其他方式完成相同的事情有想法吗?
四分

1
minecraftforum.net/topic/361430-181smp-smart-moving该mod的制造商可能会为您提供答案,但是动画并不是我以前浏览过的minecraft代码的一部分。
詹姆斯

1
我之前已经浏览过MCP代码,并且99%的确定要记得看过动画的硬编码。不过,我不再需要检查我的世界(甚至是Eclipse)。
BlueRaja-Danny Pflughoeft

Answers:


18

正如其他人所说,是的,模型和动画都是硬编码的。如果您想了解如何完成此操作,请转到Minecraft Coder Pack Wiki。

该软件包的创建是为了帮助Mod创建者反编译,更改和重新编译Minecraft类。软件包随附的自述文件中包含说明。该程序包包含用于反编译,重新编译和重新混淆游戏和服务器的脚本。

您将要查看的类是:ModelBase,ModelBiped和ModelRenderer。

ModelBiped包含以下用于执行人形动画的函数:

public void render(Entity entity, float time, float f1, ...)
{
    setRotationAngles(time, f1, ...);
    ...
}

public void setRotationAngles(float time, float f1, ...)
{
    ...
    bipedRightArm.rotateAngleX = MathHelper.cos(time * 0.6662F + 3.141593F) * 2.0F * f1 * 0.5F;
    bipedLeftArm.rotateAngleX = MathHelper.cos(time * 0.6662F) * 2.0F * f1 * 0.5F;
    ...
}

手臂摆动只是余弦功能。右臂被PI偏移,以使其沿相反方向摆动。

手臂摆动图

我希望能回答您的问题=)


如果您想了解有关如何实际修改Minecraft的更多信息,请查看以下问题:

如何向Minecraft添加自定义生物?


姐姐 欧式旋转:(。
乔纳森·迪金森

8

Minecraft中的模型是硬编码的。没有块层次结构的概念(仅块列表)。这意味着动画要么按程序(非常基本的方式)完成,要么通过插值进行硬编码。

Minecraft模型的一些编辑器(例如Techne或FMCModeler)允许导入/导出Mod的Minecraft模型代码,但它们不支持动画,因为每种模型的处理方式可能不同。

这是使用FMCModeler生成的快速示例:

//variables init:
public ModelRenderer box;

//constructor:
box = new ModelRenderer(0, 0);
box.addBox(0F, 0F, 0F, 16, 16, 16);

//render:
box.render(f5);

更好的方法是使用一些块层次结构概念构建一个基于块的完整建模器,以便您可以使用关键帧和插值对模型进行动画处理。

我目前正在构建一个可以完成此任务的多人游戏构建工具(以及其他工具,http://craftstud.io/)。它已经可以构建复杂的静态纹理模型,并且还在开发中。

这是一个用CraftStudio构建的复杂模型,如您所见,这些块在右侧的树中排列: http://i.stack.imgur.com/FRQeV.png

每个块通过以下数据序列化到网络上的磁盘/:

  • 唯一身份
  • 父节点ID
  • 位置(影响后代)
  • 规模(影响后代)
  • 角度(影响后代)
  • 与枢轴点的偏移
  • 块大小
  • 块纹理偏移(纹理的UV坐标偏移)

我计划通过存储以动画名称作为关键点和关键帧列表作为值的地图来添加动画支持。每个关键帧将与一个块和一个动画值相关联。在关键帧之间,应插值(线性表示位置,球形表示角度,搜索lerp和slerp)。


0

从1.8版本开始,Minecraft块模型实际上并未硬编码到游戏中,可以使用资源包进行编辑。JSON建模系统非常易于理解,并且模型存在于/ models / block中。然后,您可以查看代码以了解其如何解释JSON模型。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.