本站文本内容除另有声明外,均在知识共享 署名-非商业性使用-相同方式共享 3.0 协议下提供。(详情…本站文本内容除另有声明外,均在知识共享 署名-非商业性使用-相同方式共享 3.0 协议下提供。(详情…中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!Minecraft中文Wiki微博正在更新!或许有兴趣去看看Minecraft中文Wiki微博正在更新!或许有兴趣去看看想与其他用户进行编辑上的沟通?社区专页正是为此创建的。想与其他用户进行编辑上的沟通?社区专页正是为此创建的。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。需要管理员的协助?在管理员告示板留言也许可以帮到您。需要管理员的协助?在管理员告示板留言也许可以帮到您。

教程/修改實體模型

從 Minecraft Wiki
跳到: 導覽搜尋
Cleanup.svg
該文章需要整理以符合樣式標準 討論
請幫助優化文章樣式來讓它符合樣式要求。
Information icon.svg
此特性為基岩版獨有。

本教程是對官方支持的附加包來修改的。

概括[編輯 | 編輯原始碼]

本教程是對於高級用戶編寫的!普通用戶請不要輕易嘗試! 請您熟悉JSON的數據格式。如果您並不熟悉的話,請閱讀行為附加包教程的JSON部分。在本教程中,我們將涉及:

  • Minecraft的JSON模型格式
  • 如何去修改模型

所需時間[編輯 | 編輯原始碼]

30 分鐘

所需工具[編輯 | 編輯原始碼]

一個文本編輯器

任何的文本編輯器應該都是可以的,但是我們建議您使用用於編程的IDE軟件。Notepad++是一個優秀且免費還帶有多編程語言高亮顯示支持的編輯器。你可以在 這裏下載Notepad++ 。

入門[編輯 | 編輯原始碼]

在本教程中我們將使苦力怕有3個頭。但是在修改苦力怕之前,我們來看看組成模型的代碼。

Minecraft模型格式[編輯 | 編輯原始碼]

1.13之前的版本[編輯 | 編輯原始碼]

Minecraft的實體建模由JSON語言編程,模型由mobs.json這個.json文件決定。你可以在Vanilla Minecraft資源包找到它,路徑為Vanilla Resource Pack/models/mobs.json。這些文件包含了所有Minecraft中實體的模型代碼。模型代碼們看起來是這個樣子的:

實體模板的偽代碼
"geometry.entityname": {
  "texturewidth": x,
  "textrueheight": y,
  "bones": [
    {
      "name": "body part name",
      "pivot": [ x, y, z ],
      "cubes": [
        {
          "origin": [ x, y, z ],
          "size": [ x, y, z ],
          "uv": [ x, y ]
        }
      ]
    }
  ]
}

注: 這只是一個參考例子,不是一個可用的實體模型。使用它作為代碼是沒用的!

1.13及之後版本[編輯 | 編輯原始碼]

Minecraft的模型仍然由JSON語言編寫,不過從models/mobs.json的單一文件變為如圖的文件結構。可以在Vanilla Resource Pack/models/entity中找到它們。生物模型被從mobs.json中分離為單一文件,命名方式為name(实体名称).geo.json,但仍有部分實體被留在了mobs.json中。

JSON語言解釋[編輯 | 編輯原始碼]

geometry.entity 這個是要修改的實體的名稱
texturewidth 寬度單位,1個像素
textureheight 長度單位,1個像素
bones 骨骼模型運動的動畫,它包含了使幾何體運轉的信息。註:但這也有局限性,他只能使包含在原始碼骨骼動畫清單的骨骼部分運。
name 骨骼動畫的名稱
pivot 軸位置是實體肢體的旋轉中心。例如:苦力怕頭顱是能繞着這一點旋轉的方形構成。
rotation 旋轉實體的部分在xyz軸上。註: 遊戲可能會以動畫覆蓋包含動畫的對象。
mirror 布爾值,可設定為true或false。如果填true,遊戲會根據UV位置映射對應的肢體。
cubes 如果幾何沒有骨骼動畫,寫入此關鍵符並鍵入要映射的動畫肢體名,即可賦予幾何動畫。
origin 幾何體的位置和實體模型的起點位置有關。 注: 這個點在模型的左前下角。

例如: 這個苦力怕身體的紅色頂點,就是這個身體的模型位置。

CMEMPicture 7.png
size 幾何體的大小。注: 16x16x16是一個方塊的大小!(中文補充:它和肢體大小確實有關,但是只是用來確認肢體材質位置的,放大用inflate見下文)
uv 這個是實體肢體材質的起點。

注:這是規定x(橫軸),y(縱軸)軸的第一個點 注:這個點應該是一個實體的某個肢體材質的區域的左上角。 例如: 這個紅點是你想做成苦力怕"body"(身體,因為是代碼不譯)的UV 做成點。 ("uv": [ 16, 16 ]). 身體將會使用被框起的部分作為材質.

CMEMPicture 6.png
mirror 布爾值,可設定為true或false。如果填true,遊戲會根據UV位置映射對應的部位。
inflate 使這部分肢體成倍數增大(可為小數或負數)

骨骼動畫[編輯 | 編輯原始碼]

骨骼是我們用來製作模型的。把它想像成一具骷髏!在人體中,骨骼是由肌肉運動的,而你的肌肉也隨着肌肉運動。在3D動畫中,骨骼是由動畫移動的,而動畫反過來又會移動附着在骨骼上的幾何圖形!

重要注意事項[編輯 | 編輯原始碼]

模型還不是完全由數據驅動的。雖然可以更改模型的內容,但是仍然有一些硬編碼的值,比如:一個實體需要哪些骨骼,一個實體用什麼材料呈現,以及一個實體有什麼動畫。這意味着你不能只是複製和粘貼幾何形狀從村民到蜘蛛部分,並希望它工作!在這個系統變得更加數據驅動之前,您需要做一些實驗來達到您想要的結果!

確保你的骨骼名稱正確!實體的骨骼名稱應該與Minecraft-vanilla資源包中的骨骼名稱相同。模型的動畫和渲染依賴於上述信息的正確性!

修改苦力怕[編輯 | 編輯原始碼]

現在我們已經了解了Minecraft模型格式是如何設定的,讓我們稍微修改一下creeper。我們要讓他有3個正面,2個在底部,1個堆在頂部,像金字塔一樣。

1.13之前的版本[編輯 | 編輯原始碼]

  • 首先,在Vanilla Minecraft的Vanilla包里 mobs.json找到geometry.creeper區複製下來。
    • Vanilla Resource Pack/models/mobs.json
  • 在資源包中創建一個名為models的資料夾
  • 創建一個名為mobs.json 的新json文件並將其保存到新模型資料夾中。
  • 輸入一對大括號({ })在你新建的 mobs.json 然後粘貼geometry.creeper
  • 現在,讓我們先把它原來的頭向左移一點。為了做到這一點,我們要改變骨頭命名的原點的x分量"head" 從 -4 到 -8.
  • 現在將 "cubes" 複製到 "head"的方括號中。. 這時文本應該是灰色的。
  • mobs.json – geometry.creeper – head section
{
  "name": "head",
  "pivot": [ 0.0, 18.0, 0.0 ],
  "cubes": [
    {
      "origin": [ -8.0, 18.0, -4.0 ],
      "size": [ 8, 8, 8 ],
      "uv": [ 0, 0 ]
    }
  ]
},
  • 在你複製的行後面加上一個逗號。
  • 粘貼你在逗號後面複製的行
  • 在剛剛粘貼的行後面加一個逗號
  • 在新逗號後再次粘貼複製的行
  • 你現在應該有3對大括號在 "cubes" 每個都有一個原點,大小和uv對象
  • 在複製的第一行中,我們將把原點的x分量從-8改變為0,向右移動
  • 在第二個副本中,將原點的x分量改為-4,y分量改為26
  • 苦力怕頭顱部部分現在應該看起來像(新文本為灰色):
    mobs.json – geometry.creeper – head section
{
  "name": "head",
  "pivot": [ 0.0, 18.0, 0.0 ],
  "cubes": [
    {
      "origin": [ -8.0, 18.0, -4.0 ],
      "size": [ 8, 8, 8 ],
      "uv": [ 0, 0 ]
    },
    {
      "origin": [ 0.0, 18.0, -4.0 ],
      "size": [ 8, 8, 8 ],
      "uv": [ 0, 0 ]
    },
    {
      "origin": [ -4.0, 26.0, -4.0 ],
      "size": [ 8, 8, 8 ],
      "uv": [ 0, 0 ]
    }
  ]
},

注意,我們不需要改變新頭像的UV因為我們複製了舊頭像的UV坐標我們沒有給新頭像添加不同的紋理。

結果[編輯 | 編輯原始碼]

三個頭的 苦力怕[1].

修改其他生物[編輯 | 編輯原始碼]

如果要更改另一個實體的模型,請確保在右大括號後面加上逗號 geometry.creeper.

偽代碼示例

別忘了逗號!(紅色突出顯示)

{
  "geometry.creeper": {
    // model stuff
  },
  "geometry.chicken": {
    // model stuff
  }
}


1.13及以後版本[編輯 | 編輯原始碼]

  • 首先,在Vanilla Minecraft的Vanilla包里找到models/entity/creeper.geo.json打開,並複製它的全部內容
  • 在資源包中創建一個名為models的資料夾
  • 接着創建一個名為entity的資料夾
  • 創建一個名為creeper.geo.json的新json文件並將其保存到entity資料夾中。
  • 打開你新建的 creeper.geo.json 然後粘貼你複製的內容,它看起來應該是這樣的
{
 "format_version": "1.8.0",
 "geometry.creeper": {
   "visible_bounds_width": 1,
   "visible_bounds_height": 2,
   "visible_bounds_offset": [ 0, 0.75, 0 ],
   "texturewidth": 64,
   "textureheight": 32,
   "bones": [
     {
       "name": "body",
       "cubes": [
         {
           "origin": [ -4.0, 6.0, -2.0 ],
           "size": [ 8, 12, 4 ],
           "uv": [ 16, 16 ]
         }
       ]        
     },
     {
       "name": "head",
       "parent": "body",
       "pivot": [ 0.0, 18.0, 0.0 ],
       "cubes": [
         {
           "origin": [ -4.0, 18.0, -4.0 ],
           "size": [ 8, 8, 8 ],
           "uv": [ 0, 0 ]
         }
       ]
     },
     {
       "name": "leg0",
       "parent": "body",
       "pivot": [ -2.0, 6.0, 4.0 ],
       "cubes": [
         {
           "origin": [ -4.0, 0.0, 2.0 ],
           "size": [ 4, 6, 4 ],
           "uv": [ 0, 16 ]
         }
       ]
     },
     {
       "name": "leg1",
       "parent": "body",
       "pivot": [ 2.0, 6.0, 4.0 ],
       "cubes": [
         {
           "origin": [ 0.0, 0.0, 2.0 ],
           "size": [ 4, 6, 4 ],
           "uv": [ 0, 16 ]
         }
       ]
     },
     {
       "name": "leg2",
       "parent": "body",
       "pivot": [ -2.0, 6.0, -4.0 ],
       "cubes": [
         {
           "origin": [ -4.0, 0.0, -6.0 ],
           "size": [ 4, 6, 4 ],
           "uv": [ 0, 16 ]
         }
       ]
     },
     {
       "name": "leg3",
       "parent": "body",
       "pivot": [ 2.0, 6.0, -4.0 ],
       "cubes": [
         {
           "origin": [ 0.0, 0.0, -6.0 ],
           "size": [ 4, 6, 4 ],
           "uv": [ 0, 16 ]
         }
       ]
     }
   ]
 },
 "geometry.creeper.charged": {
   "visible_bounds_width": 1,
   "visible_bounds_height": 2,
   "visible_bounds_offset": [ 0, 0.75, 0 ],
   "texturewidth": 64,
   "textureheight": 32,
   "bones": [
     {
       "name": "body",
       "cubes": [
         {
           "origin": [ -4.0, 6.0, -2.0 ],
           "size": [ 8, 12, 4 ],
           "uv": [ 16, 16 ]
         }
       ],        
       "inflate": 2.0
     },
     {
       "name": "head",
       "parent": "body",
       "pivot": [ 0.0, 18.0, 0.0 ],
       "cubes": [
         {
           "origin": [ -4.0, 18.0, -4.0 ],
           "size": [ 8, 8, 8 ],
           "uv": [ 0, 0 ]
         }
       ],
       "inflate": 2.0
     },
     {
       "name": "leg0",
       "parent": "body",
       "pivot": [ -2.0, 6.0, 4.0 ],
       "cubes": [
         {
           "origin": [ -4.0, 0.0, 2.0 ],
           "size": [ 4, 6, 4 ],
           "uv": [ 0, 16 ]
         }
       ],
       "inflate": 2.0
     },
     {
       "name": "leg1",
       "parent": "body",
       "pivot": [ 2.0, 6.0, 4.0 ],
       "cubes": [
         {
           "origin": [ 0.0, 0.0, 2.0 ],
           "size": [ 4, 6, 4 ],
           "uv": [ 0, 16 ]
         }
       ],
       "inflate": 2.0
     },
     {
       "name": "leg2",
       "parent": "body",
       "pivot": [ -2.0, 6.0, -4.0 ],
       "cubes": [
         {
           "origin": [ -4.0, 0.0, -6.0 ],
           "size": [ 4, 6, 4 ],
           "uv": [ 0, 16 ]
         }
       ],
       "inflate": 2.0        
     },
     {
       "name": "leg3",
       "parent": "body",
       "pivot": [ 2.0, 6.0, -4.0 ],
       "cubes": [
         {
           "origin": [ 0.0, 0.0, -6.0 ],
           "size": [ 4, 6, 4 ],
           "uv": [ 0, 16 ]
         }
       ],
       "inflate": 2.0
     }
   ]
 }

}

  • 現在,讓我們先把它原來的頭向左移一點。為了做到這一點,我們要改變骨頭命名的原點的x分量"head." 從 -4 到 -8.
  • 現在將 "cubes" 複製到 "head."的方括號中。這時文本應該是灰色的。
  • creeper.geo.json – geometry.creeper – head section
{
  "name": "head",
  "pivot": [ 0.0, 18.0, 0.0 ],
  "cubes": [
    {
      "origin": [ -8.0, 18.0, -4.0 ],
      "size": [ 8, 8, 8 ],
      "uv": [ 0, 0 ]
    }
  ]
},
  • 在你複製的行後面加上一個逗號。
  • 粘貼你在逗號後面複製的行
  • 在剛剛粘貼的行後面加一個逗號
  • 在新逗號後再次粘貼複製的行
  • 你現在應該有3對大括號在 "cubes." 每個都有一個原點,大小和uv對象
  • 在複製的第一行中,我們將把原點的x分量從-8改變為0,向右移動
  • 在第二個副本中,將原點的x分量改為-4,y分量改為26
  • 苦力怕頭顱部部分現在應該看起來像(新文本為灰色):
    creeper.geo.json – geometry.creeper – head section
{
  "name": "head",
  "pivot": [ 0.0, 18.0, 0.0 ],
  "cubes": [
    {
      "origin": [ -8.0, 18.0, -4.0 ],
      "size": [ 8, 8, 8 ],
      "uv": [ 0, 0 ]
    },
    {
      "origin": [ 0.0, 18.0, -4.0 ],
      "size": [ 8, 8, 8 ],
      "uv": [ 0, 0 ]
    },
    {
      "origin": [ -4.0, 26.0, -4.0 ],
      "size": [ 8, 8, 8 ],
      "uv": [ 0, 0 ]
    }
  ]
},

注意,我們不需要改變新頭像的UV因為我們複製了舊頭像的UV坐標我們沒有給新頭像添加不同的紋理。

結果[編輯 | 編輯原始碼]

三個頭的 苦力怕[2].

修改其他生物[編輯 | 編輯原始碼]

* 回到你新建的models/entity文件夹中。
* 新建一个名字叫生物的英文.geo.json并重复以上操作。如cow.geo.json

總結[編輯 | 編輯原始碼]

恭喜你!

如果您已經做到了這一點,那麼現在您應該已經知道了製作您自己的實體模型所需要知道的一切!