Minecraft閃電苦力怕是怎麼顯示材質的?為什麼有人可以讓盔甲隱形?各種花色的貓是怎麼實現的?就是Render Controller
在背後控制的。
註冊實體時需指定使用的render comtroller,檔案放在資源包/render_controllers
資料夾,裡面可以控制實體要使用什麼material、texture(在註冊實體的檔案裡需先條列出來要使用的材質),以及實體模型各個bone的顯示與否(parts_visibility)和要使用的模型(geometry)
一個實體可以同時使用多個render controller,這也是3D武器的作法之一:讓玩家本身的render_controller跟自己另外做的render_controller同時顯示,詳情參考 這篇4D皮膚作法。
textures
可以在render_controller檔案裡宣告要使用的材質陣列,然後使用query讀取實體的變種(variant),以此控制該實體要使用什麼材質,如貓、界伏蚌等。
同理,geometry和material也可以這樣操作。
原版資源包/render_controllers/__cat.render_controllers.json
parts_visibiliy
見於盔甲的render_controller。可以每行都寫條件式來偵測要不要顯示某個骨骼。
陣列頂端需先列出星號代表的布林值,以此讓系統知道是要判斷式結果是true或false才要顯示指定的bone。把這個檔案稍作修改,就可以讓玩家的盔甲隱形。
如果要用在實體上,則一個骨骼底下不能有其他骨骼,否則就得把全部骨骼都列出來才能顯示或隱藏。
parts_visibility
作用等同用animation的scale控制,差別在於animation不需要全部指定,只要寫出最頂層的骨骼。
原版資源包/render_controllers/__armor.render_controllers.json
overlay_color
可以在實體材質上面蓋上指定的顏色,參數為RGB值,例如苦力怕爆炸時的白色。
un_anim則可以透過控制材質UV的方式做到動畫效果,例如閃電苦力怕外部的電磁圈。同時該實體使用的material
也必須是creeper才可以。
原版資源包/render_controllers/__creeper_armor.render_controllers.json