国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

[暴躁教學3]展示實體與你:數(shù)據(jù)包的究極加強

2023-07-31 14:08 作者:OxygenNineIsHere  | 我要投稿

前言

觀前提示:本教程是零基礎傻瓜式教程,會做資源包的/會寫點指令的/會做點模型的建議自行找別的高級教程自學。

另外用BlockBuster的就不用看了。不過基巖版倒是真能用,就是資源包什么的麻煩點——雖然可拓展性更強。


歡迎回到這個我也不知道到底多久一更新的奇怪教程。老規(guī)矩,這是上一期:

在上一期——那時候終曲告誡還在拍攝中——我大概說明了一下1.19制作MCARG(實際上是MC短片)的可選方案。

在那時,Taterzens+Replay的搭配似乎已經(jīng)能夠讓我們小小地爆一下BlockBuster的金幣。然而,奈何BB終究有一個恐怖的功能令高版本玩家們望塵莫及:


感受恐懼吧,1.19的孩子們

自定義模型。

簡單來說,BB在不需要其他模組的情況下,允許玩家自己導入各種亂七八糟的模型,并控制它們的運動——在曾經(jīng)的1.19,若要實現(xiàn)這種效果,唯一的辦法似乎就是給盔甲架頭上套個帶CustomModelData的玩意然后想辦法讓他動兩下。

這么做可行嗎?確實可行,但一是用指令控制盔甲架的移動實在太麻煩,二是但凡你的模型大一點就沒轍(何況只能導入JAVA版的JSON模型,雖然到現(xiàn)在也是這樣)。

也因此高一點技術力的MC動畫都會選擇BB起步C4D封頂?shù)闹谱鞣绞健?/p>

直到1.20的更新。

數(shù)據(jù)包的史詩級加強

想象如何在MC中實現(xiàn)以下畫面:

  • 一架帶有航行燈J20垂直起飛,噴射出大量煙霧,緩緩上升后收起起落架,水平飛行后以15度仰角向上飛行;

  • 50架無人機,以不同的上升速率緩緩上升;

  • 坦克與步兵在地面共同行進,要求坦克炮塔需要旋轉;

  • 克蘇魯畫風的生物,要求觸手會轉;

  • 一架武 裝 直 升 機的旋翼開始不斷旋轉,由慢到快,最后機身脫離地面開始上升;

  • B-2轟炸機在飛行中打開彈艙,制導炸彈向下墜落一段時間,然后啟動發(fā)動機噴射煙霧以更高的加速度向前飛行;

  • 一架客機在空中發(fā)生劇烈爆炸,產(chǎn)生大量粒子效果,碎片分成幾塊拖著煙霧下墜;

  • 直徑幾百格甚至上千格的巨型BOSS,頭頂有煙霧云在旋轉;

  • 一整個航母戰(zhàn)斗群在海面上航行,激起浪花,飛機從上方起飛,驅逐艦上的1130近防炮旋轉并搜尋目標;

  • ……

我現(xiàn)在告訴你:1.20原版就可以實現(xiàn)以上所有畫面,不嫌麻煩你連Replay都不用裝。

而實現(xiàn)這一切,都拜它所賜——

minecraft:item_display

詳解

第一部分:CustomModelData

簡單來說,item_display(物品展示實體)是一個極其牛b的東西,在為它賦予如下NBT時,物品展示實體可以自由展示任何CustomModelData(下文簡稱CMD)的模型:

其中的X是介于±16777215之間的整數(shù),多了會溢出。

這串NBT描述了一個ID為diamond,也就是鉆石的物品(其實選什么都可以),數(shù)量為1,而他的物品標簽謂詞中包含了這么一個值:CMD=X。

在你做好資源包后,游戲就會用資源包中指定的模型替換CMD=X的物品模型。這么說可能有些迷惑,那我實際演示一下:

關于如何創(chuàng)建資源包,自己去找教程,很簡單的

ok,找到儲存物品模型的文件夾models/item了嗎?下面打開我們要找的diamond.json:

正常情況下,你看到的應該就是這個。

"parent"代表這個模型是從哪個模型繼承來的,如果沒其他情況他就會使用parent這個模型;"textures"則定義了這個模型的材質。我們看到這個模型的parent是“item/generated”,這個意思大概就是鉆石的模型是由鉆石的材質自己生成(generate)的,大概就是這樣:

略微偏題了,現(xiàn)在我們回來講怎么讓鉆石顯示不同的模型。

格式大概是這樣:

一臉懵逼?我們細看一下。

首先最開始的部分就是未經(jīng)修改的diamond.json,而之后的"overrides"則制定了“在什么情況下用什么模型替換原模型”,而下面的“predicate”就是條件。

的意思就是:“在custom_model_data為1的情況下,將鉆石的模型顯示為model_1.json”。

根據(jù)上面那個模板,你可以一直往下寫下去,具體可以參考WIKI。

第二部分:物品展示實體

我們先貼指令:

這一指令會在玩家所在處生成一個物品展示實體。你可以直接改變它的CustomModelData以便于直接顯示不同模型,但我們先從基礎的開始。你應該會看見這個:

就這樣

目前為止,這玩意似乎像是盔甲架手持物品的Pro版本。確實,它沒有碰撞箱,不產(chǎn)生更新,幾乎不會造成任何性能負擔。那么它還有什么神奇的地方嗎?

把下面這段指令輸?shù)矫罘綁K里,然后啟動它感受一下就知道這玩意潛力有多大了。

發(fā)生了什么?這玩意為什么能平滑地變 大 變 高?現(xiàn)在我們分析一下這段指令:

/data 是用于修改或查詢物品NBT數(shù)據(jù)的指令。/data merge entity 可以將一段NBT與某個實體的NBT合并并覆蓋,后面的選擇器則是選擇類型為物品展示實體(type=XXX)、數(shù)量限制為1(limit=1),并且距離最近(sort=nearest)。

至于后面的一大串NBT則是展示實體專有的“插值變換”屬性——他們是這么定義的:

transformation:包含后面所有,聲明整個插值過程。

translation:在XYZ軸上的位置變化,即平移。格式為[Xf, Yf, Zf],其中f代表浮點數(shù),XYZ代表展示實體在XYZ三軸上的位移。

scale:在XYZ軸上的大小變化,即縮放。和上面差不多,[1.0f, 1.0f, 1.0f]即原大小,XYZ代表每個軸上的縮放格數(shù)。

left_rotationright_rotation:比較難的地方來了:旋轉變換。這里用的是軸角寫法,angle是弧度值,最大6.28,例如90度就是1/2π=1.57。后面的axis定義旋轉軸,依然是XYZ形式,如[0.0f, 0.0f, 1.0f]代表繞Z軸旋轉。旋轉變換還有一種四元數(shù)寫法,但太特么麻煩了所以此處略過。

然而,超過3.14的angle值將會被自動計算為沿反方向旋轉的angle值——例如,4將被自動換算為3.14-4=0.86。因此,只設置其中一個最多讓實體旋轉半圈(180°=π)。但你可以同時將兩個angle值設置為3.14,由此讓實體旋轉一圈(360°=2π)。

至于為什么有兩個旋轉變換參數(shù),我也不知道,反正不重要。

start_interpolation:動畫開始的時間,0就是立刻開始,100就是延遲100刻開始。

interpolation_duration:動畫持續(xù)時間,0就是瞬間變化,100就是在100內完成變化。

關于插值變換,必須要說明一些有些反直覺的事實:

  • 在你敲下命令的一瞬間,實體的變換值就已經(jīng)設置完成,例如translation從[0f, 0f, 0f]到[1f, 0f, 0f],這個值是瞬間完成變換的,中間并不存在[0.5f, 0f, 0f]這樣的“過程”。

  • 插值變換只會在渲染上變換,實體真正的XYZ坐標是不變的。translation的那個坐標只是它“看起來”移動了多少,不信可以開F3+B。

但無論如何,它仍然提供了一種導入任意大小的自定義模型并使其運動的方式(scale和translation的大小沒有上限?。f到如何制作MC中的自定義模型,我們最終還是繞不開一款著名的建模軟件:BlockBench。

第三部分:簡易建模教程

BlockBench的介紹這里略過,你只需要知道BB(不是BlockBuster!)可以做JAVA版、基巖版、模組格式甚至其它游戲的體素風格模型就可以。我們只介紹它的JAVA版模型制作。

JAVA版模型本質上是描述一堆方塊堆起來的JSON文件,它有幾個限制:

  • 任何方塊在一個軸上旋轉22.5°的倍數(shù)。例如,你不能在X軸上把一個方塊旋轉30°,或者在XY兩個軸上旋轉45°。

  • 模型體積不能大于3x3x3,默認顯示的縮放倍數(shù)無法超過4。

  • 很容易發(fā)生Z-fighting。

  • 無法內置動畫(我們在后面會想辦法解決這個問題)。

不過,這些限制也算不了什么。安裝(BB官網(wǎng)是很慢的,建議找個鏡像)并打開BB后,你將看到這個界面。

直接選JAVA版方塊/物品就好

文件名建議用小寫字母加下劃線,父級模型不用填,后面用默認的就行。

添加地一個方塊后,你可以試試自己上手。BB是個相當簡單好用的建模軟件,簡單到我第一次用就能做出這玩意。

可觀看此教程:

現(xiàn)在假設你已經(jīng)整了一個自己的模型,那么是時候開啟第四部分——數(shù)據(jù)包制作了。

第四部分:數(shù)據(jù)包

回到我們的游戲。把BB的模型(.json,不是.bbmodel!)導出到models/item,按照第一部分的教程設置好CustomModelData,然后刷新資源包。用如下命令修改CMD:

一切順利的話你就能看見你做的模型出現(xiàn)在MC里了。

順便說下,模型的材質在\assets\minecraft\textures\block或者\item里面,選哪個都問題不大。

其實模型也可以調用models\block中的模型(

現(xiàn)在使用/tag命令給你的展示實體分類,以后就可以精確選擇了:

他將為離你最近的一個展示實體添加標簽tag1。在之后修改實體的插值只需要

即可。

現(xiàn)在,按照差不多這樣的格式(更詳細的教程自己找)創(chuàng)建一個數(shù)據(jù)包:

如果你看過數(shù)據(jù)包教程,你就會知道tick.json定義了每刻執(zhí)行的MCFUNCTION函數(shù)。換句話說,這些命令都會不斷地執(zhí)行。

那么使用數(shù)據(jù)包制作展示實體動畫的思路就很明確了:每刻使計分板timeline增加1,并檢測timeline的值,若達到X則執(zhí)行對應的插值變換。相同地,我們也能生成粒子效果之類的特效。

實操步驟如下:

首先創(chuàng)建loop.mcfunction,用于每刻執(zhí)行函數(shù):

tickloop.mcfunction,用于增加timeline的值:

stop.mcfunction,用于停止動畫執(zhí)行:

start.mcfunction,用于開始動畫:

animation.mcfunction,定義整個動畫時間軸:

上面這個只是提供一個參考,即:在timeline達到某個值時,要求tag為“展示實體tag”的展示實體修改自身的transformation。你可以把這段復制很多行,然后修改游戲刻條件,例如交疊理論PV最后的那段B2墜毀畫面(部分):

我個人十分建議你在animation.mcfunction的開頭把被動畫影響的展示實體的transformation值重新寫一遍,也就是開頭將動畫“恢復到初始狀態(tài)”。

當然,tick.json也需要定義。

最終的效果應該是:執(zhí)行/function namespace:start后,動畫開始自行播放;執(zhí)行/function namespace:stop后,動畫停止播放。

盡管JAVA版模型無法設置動畫,你可以通過將許多個模型設置相同的tag,然后令其中一些模型在“相對運動”的基礎上自行運動。如一開始說的直升機,你可以將旋翼和機身分別導出,將他們的相對位置設置好,并讓他們以相同的位移上升,但只給旋翼加上旋轉動畫。投彈、炮塔旋轉之類的動畫也是如此。

由于實體的translation值旋轉并不會影響它的實際坐標,你可能會遇見為實體添加粒子效果的時候,實體在移動而粒子效果無法移動的現(xiàn)象。一種解決方案是在實體的移動路線上每隔一段時間就釋放粒子。你也可以嘗試如生物綁定之類的方法。

第五部分:尾聲

這次的教程顯然比較復雜,但合理地運用物品展示實體確實能做出驚人的效果。在此我推薦幾個教程:

展示實體/數(shù)據(jù)包

資源包/BlockBench

/execute與/data命令詳解

當然,最后,也是最重要的網(wǎng)站:

M C W I K I

在任何情況下,查wiki都能解決你95%的疑惑!而且wiki里是有技術向教程的!

(熱心提示:這個鏈接指向MC維基在BWIKI的鏡像站,速度非??欤?/p>

求你了查wiki吧

END。

[暴躁教學3]展示實體與你:數(shù)據(jù)包的究極加強的評論 (共 條)

分享到微博請遵守國家法律
百色市| 两当县| 普兰店市| 兴仁县| 丹寨县| 平乡县| 定陶县| 禄丰县| 黄大仙区| 榕江县| 卓尼县| 汽车| 五寨县| 胶南市| 永宁县| 乌什县| 三都| 沙河市| 康保县| 成安县| 交口县| 辽宁省| 曲沃县| 唐山市| 怀柔区| 苗栗市| 吴堡县| 甘孜县| 新乡市| 太湖县| 五寨县| 保康县| 柘荣县| 赤峰市| 曲周县| 宿松县| 陆丰市| 新沂市| 康乐县| 朔州市| 达州市|