UID82897性别保密经验 EP铁粒 粒回帖0主题精华在线时间 小时注册时间2021-7-23最后登录1970-1-1
| 本帖最后由 Cat_Anchor 于 2025-8-21 10:15 编辑
前言 | | 上期,我们学习了所有方块组件。由于上期留下了一些疑问,我打算先解决这些疑问,再继续讲方块。今天我们来学习上次开头频繁提到的一个词——模型。 |  | 模型结构 | 打开资源包根目录,打开models文件夹,打开blocks文件夹。这里用于存放方块模型。退到models文件夹下,打开entity文件夹,这里用于存放实体模型。然而,这都不是固定的,把方块模型放实体文件夹里,把实体模型放方块文件夹里,也没什么不行。总之,怎么开心怎么来。还要明确的是,模型文件一般不是手写出来的,而是程序生成的。模型文件的后缀是 .json,与其他文件一样。
下面,我放一段上次的教程,帮助回忆和理解。
- "minecraft:geometry": "geometry.custom_block" //这里的geometry.custom_block就是模型ID,以后会说到。
复制代码 |
现在我们就来说说这个模型ID是什么。
随便打开一个别人做的模型文件,你就明白了。这里我放一个我做的在下面。
- {
- "format_version": "1.12.0", //代码格式版本
- "minecraft:geometry": [ //这个数组里存储了若干个模型
- { //一个模型
- "description": {
- "identifier": "geometry.test_block", //这里的geometry.test_block就是模型ID,不能与其他模型ID重复,必须以geometry.开头。
- "texture_width": 16, //纹理宽度
- "texture_height": 16, //纹理高度
- "visible_bounds_width": 2,
- "visible_bounds_height": 1.5,
- "visible_bounds_offset": [0, 0.25, 0]
- },
- "bones": [ //这个数组里有若干个立方体组
- {
- "name": "bb_main", //模型名字
- "pivot": [0, 0, 0], //枢轴点,用于旋转时的中心点
- "cubes": [ //这个数组里有若干个立方体
- { //一个立方体
- "origin": [-6.83283, -1.41096, -1], //立方体的起始点
- "size": [2, 2, 2], //立方体的大小
- "pivot": [-5, 2, 1], //立方体的枢轴点(也就是旋转的中心)
- "rotation": [-34.34782, 11.23074, 2.64456], //立方体的旋转角度
- "uv": { //立方体的纹理uv占用
- "north": {"uv": [0, 0], /*这个数组表示占用纹理的起始点*/ "uv_size": [2, 2] /*这个数组表示占用纹理的大小*/ }, //下同。
- "east": {"uv": [0, 0], "uv_size": [2, 2]},
- "south": {"uv": [0, 0], "uv_size": [2, 2]},
- "west": {"uv": [0, 0], "uv_size": [2, 2]},
- "up": {"uv": [2, 2], "uv_size": [-2, -2]},
- "down": {"uv": [2, 2], "uv_size": [-2, -2]}
- }
- }
- ]
- }
- ]
- }
- ]
- }
复制代码
用这个程序可以制作模型文件和动画文件(建议电脑打开,手机也可以)。 |  | 物品渲染变换 | 在基岩版 1.21.20 中加入了一项功能,物品渲染变换,仅对方块模型有效,可以指定这个方块作为物品时的渲染设置。渲染设置可以控制方块在物品栏 UI 里、玩家头上、第一人称左手上、第一人称右手上、第三人称左手上、第三人称右手上、作为物品漂浮在地面上、物品展示框中和嵌入到另一方块时的大小、旋转和缩放。embedded 字段加入于 1.21.110.25。
以下是代码,这个对象应该与 bones 对象同级。- "item_display_transforms": {
- "gui": {
- "translation": [0, 0, 0],
- "rotation": [30, 225, 0],
- "scale": [0.625, 0.625, 0.625],
- "rotation_pivot": [0, 0, 0],
- "scale_pivot": [0, 0, 0],
- "fit_to_frame": true
- },
- "firstperson_righthand": {
- "translation": [0, 0, 0],
- "rotation": [0, 45, 0],
- "scale": [0.4, 0.4, 0.4],
- "rotation_pivot": [0, 0, 0],
- "scale_pivot": [0, 0, 0]
- },
- "firstperson_lefthand": {
- "translation": [0, 0, 0],
- "rotation": [0, -135, 0],
- "scale": [0.4, 0.4, 0.4],
- "rotation_pivot": [0, 0, 0],
- "scale_pivot": [0, 0, 0]
- },
- "thirdperson_righthand": {
- "translation": [0, 2.5, 0],
- "rotation": [75, 45, 0],
- "scale": [0.375, 0.375, 0.375],
- "rotation_pivot": [0, 0, 0],
- "scale_pivot": [0, 0, 0]
- },
- "thirdperson_lefthand": {
- "translation": [0, 2.5, 0],
- "rotation": [75, 45, 0],
- "scale": [0.375, 0.375, 0.375],
- "rotation_pivot": [0, 0, 0],
- "scale_pivot": [0, 0, 0]
- },
- "ground": {
- "translation": [0, 3.0, 0],
- "rotation": [0, 0, 0],
- "scale": [0.25, 0.25, 0.25],
- "rotation_pivot": [0, 0, 0],
- "scale_pivot": [0, 0, 0]
- },
- "fixed": {
- "translation": [0, 0, 0],
- "rotation": [0, 0, 0],
- "scale": [0.5, 0.5, 0.5],
- "rotation_pivot": [0, 0, 0],
- "scale_pivot": [0, 0, 0]
- },
- "head": {
- "translation": [0, 0, 0],
- "rotation": [0, 0, 0],
- "scale": [1, 1, 1],
- "rotation_pivot": [0, 0, 0],
- "scale_pivot": [0, 0, 0]
- },
- "embedded": {
- "translation": [0, 0, 0],
- "rotation": [0, 0, 0],
- "scale": [0.75, 0.75, 0.75],
- "rotation_pivot": [0, 0, 0],
- "scale_pivot": [0, 0, 0]
- }
- }
复制代码
| 字段 | 功能描述 | 类型 | | item_display_transforms | 在不同情况下方块的渲染。 | 对象 | | gui | 在物品栏或快捷栏中时。 | 对象 | | firstperson_righthand | 第一人称右手时。 | 对象 | | firstperson_lefthand | 第一人称左手时。 | 对象 | | thirdperson_righthand | 第三人称右手时。 | 对象 | | thirdperson_lefthand | 第三人称左手时。 | 对象 | | ground | 作为物品在地面漂浮时。 | 对象 | | fixed | 在物品展示框中时。 | 对象 | | head | 戴在玩家头部时。 | 对象 | | embedded | 嵌入另一方块时。 | 对象 | | translation | 平移,其中数值的范围是[-80.0, 80.0]。 | 数组 | | rotation | 旋转,其中数值的范围是[-360.0, 360.0]。 | 数组 | | scale | 缩放,其中数值的范围是[0.0, 4.0]。 | 数组 | | rotation_pivot | 旋转枢轴点,其中数值的范围是[-80.0, 80.0]。 | 数组 | | scale_pivot | 缩放枢轴点,其中数值的范围是[-80.0, 80.0]。 | 数组 | | fit_to_frame | 是否平移并缩放到物品栏中单个物品的边框。 | 布尔值 |
|  | 总结 | | 这一期,我们简单地学完了模型。下一期,我们简单讲讲战利品表。 |
|
|