Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement
Brush
該文章需要整理以符合格式指導 討論

請幫助最佳化文章格式來讓它符合格式指導。

Information icon
此特性為基岩版獨有。

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

概括

本教學是對於高級使用者編寫的!普通使用者可使用Blockbench等易於使用的可視化模型製作軟體。請你熟悉JSON的資料格式。如果你並不熟悉的話,請閱讀行為附加包教學的JSON部分。在本教學中,我們將涉及:

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

所需時間

30 分鐘

所需工具

一個文字編輯器

任何的文字編輯器應該都是可以的,但是我們建議你使用用於編程的IDE軟體。如果你想有效管理多個檔案,建議使用Visual Studio Code。而在iOS上,用Textcode Viewer則是不錯的選擇,如果你的iOS裝置已經越獄,也可以嘗試使用iFile或者Filza。對於Android系統來講,MT管理器將是一個不錯的選擇。

入門

在本教學中我們將使苦力怕有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
size 幾何體的大小。注: 16x16x16是一個方塊的大小!(中文補充:它和肢體大小確實有關,但是只是用來確認肢體紋理位置的,放大用inflate見下文)
uv 這個是實體肢體紋理的起點。

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

CMEMPicture 6
mirror 布林值,可設定為true或false。如果填true,遊戲會根據UV位置映射對應的部位。
inflate 使這部分肢體按數值增大或縮小(可為小數或負數),且使用的貼圖的像素大小及位置不變。例如
 "name": "hat",
 "parent": "head",
 "pivot": [ 0.0, 24.0, 0.0 ],
 "cubes": [
   {
     "origin": [ -4.0, 24.0, -4.0 ],
     "size": [ 8, 8, 8 ],
     "uv": [ 32, 0 ],
     "inflate": 0.5
   }

inflat對應的值為0.5,則方塊在x y z三軸正負方向各伸長0.5格,即這個塊的大小由8×8×8變為9×9×9。
對應的值為負數同理,即縮小。

骨骼動畫

骨骼是我們用來製作模型的。把它想像成一具骷髏!在人體中,骨骼是由肌肉運動的,而你的肌肉也隨著肌肉運動。在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座標我們沒有給新頭像加入不同的紋理。

結果

CMEMPicture 10

三個頭的 苦力怕

修改其他生物

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

偽代碼示例

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

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

1.13及以後版本

  • 首先,在原版資源包裡找到models/entity/creeper.geo.json,將其複製進你的資源包中的models/entity/
  • 打開creeper.geo.json,它看起來應該是這樣的:
  • 現在,讓我們先把它原來的頭向左移一點。為了做到這一點,我們要改變骨頭命名的原點的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。

結果

CMEMPicture 10

三個頭的 苦力怕

修改其他生物

  • 回到你新建的models/entity資料夾中。
  • 新建一個名字叫生物的英文.geo.json並重複以上操作。如cow.geo.json

總結

恭喜你!

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

{{ili |en=Tutorials/Changing Minecraft entity models

Advertisement