Wszystkie pliki modeli i wariantów są rozszerzenia .json
. Modele bloków są wykorzystywane w celu przedstawienia wszystkich bloków w grze, podczas gdy modele przedmiotów są używane do wyświetlania elementów w ręce gracza, na głowie (hełmy i czapki), na ziemi i w ekwipunku. Dlatego nawet ikony używane w ekwipunku są określone w tych plikach.
Warianty
Istnieje kilka różnych wariantów niektórych bloków, więc każdy blok posiada własny plik wariantu, który zawiera wszystkie swoje warianty i łączy je do odpowiedniego modelu. Pliki te są przechowywane w folderze assets/minecraft/blockstates
. Nie należy zmieniać nazwy tych plików lub samych wariantów. Są one zakodowane w grze i również muszą być używane w paczkach zasobów.
- Tag korzenia
- variants: Mieści nazwy wszystkich wariantów bloku.
- A variant: Nazwa wariantu, która składa się z odpowiednich BlockStates oddzielonych przecinkami. Blok z tylko jednym wariantem używa
normal
jako nazwy dla swojego wariantu. Każdy wariant zawiera właściwości swojego modelu. Jeśli stosuje się więcej niż jeden model, modele te muszą być określone w oddzielnych -tagach, które są potrzebne dla znacznika wariantu.- A model: Zawiera właściwości modelu, jeśli więcej niż jeden jest wykorzystywany dla tego samego wariantu. Wszystkie określone modele występują naprzemiennie w grze.
- model: Określa ścieżkę do pliku modelu bloku, począwszy od
assets/minecraft/models/blocks
. - x: Obrót modelu na osi x, w odstępach co 90°.
- y: Obrót modelu na osi y, w odstępach co 90°.
- uvlock: Obraca teksturę z blokiem, jeśli jest
false
(domyślnie). - weight: Prawdopodobieństwo użycia modelu w grze. Domyślną wartością jest 1 (=100%).
- model: Określa ścieżkę do pliku modelu bloku, począwszy od
- model: Określa ścieżkę do pliku modelu bloku, począwszy od
assets/minecraft/models/blocks
. - x: Obrót modelu na osi x, w odstępach co 90°.
- y: Obrót modelu na osi y, w odstępach co 90.°
- uvlock: Obraca teksturę z blokiem, jeśli jest
false
(domyślnie).
- A model: Zawiera właściwości modelu, jeśli więcej niż jeden jest wykorzystywany dla tego samego wariantu. Wszystkie określone modele występują naprzemiennie w grze.
- A variant: Nazwa wariantu, która składa się z odpowiednich BlockStates oddzielonych przecinkami. Blok z tylko jednym wariantem używa
- variants: Mieści nazwy wszystkich wariantów bloku.
Przykład: Pochodnia
Pochodnia posiada kilka wariantów: Może być umieszczona na ziemi lub na ścianie i być skierowana w cztery różne strony. Ten przykład pochodzi z pliku torch.json
, który można znaleźć w assets/minecraft/blockstates
.
File: torch.json { "variants": { "facing=up": { "model": "normal_torch" }, "facing=east": { "model": "normal_torch_wall" }, "facing=south": { "model": "normal_torch_wall", "y": 90 }, "facing=west": { "model": "normal_torch_wall", "y": 180 }, "facing=north": { "model": "normal_torch_wall", "y": 270 } } }
"facing=up"
jest wariantem pochodni stojącym na ziemi i łączy się z modelem "normal_torch"
. Pochodnia może być też postawiona na wszystkich czterech ścianach bloku, więc potrzebuje czterech różnych wariantów, jeden dla każdej strony. Nazywają się one "facing=east"
, "facing=west"
, "facing=south"
i "facing=north"
. Wszystkie 4 warianty używają "normal_torch_wall"
jako ich modelu, który jest obracany o wielokrotność 90°, aby dostosować się do różnych stron bloku, na którym stoją.
Przykład: Blok trawy
Blok trawy posiada 2 warianty, przy czym jeden z nich przechowuje 4 modele. Ten przykład pochodzi z pliku grass.json
, który znajduje się w assets/minecraft/blockstates
.
File: grass.json { "variants": { "snowy=false": [ { "model": "grass_normal" }, { "model": "grass_normal", "y": 90 }, { "model": "grass_normal", "y": 180 }, { "model": "grass_normal", "y": 270 } ], "snowy=true": { "model": "grass_snowed" } } }
Nieośnieżony blok trawy (snowy=false
) przechowuje 4 modele, które korzystają z tego samego modelu bloku, lecz każdy z nich jest obrócony o wielokrotność 90°. Mimo iż istnieją 4 modele, count
-tag nie jest używany przez żaden z nich, więc każdy ma szansę 25%, aby zostać wykorzystanym podczas postawienia bloku.
Modele bloków
Folder assets/minecraft/models/block
posiada pliki modeli dla wszystkich wymienionych wariantów. Nazwy plików mogą być zmienione, ale zawsze muszą odpowiadać nazwom używanym w plikach wariantów.
- Tag korzenia
- parent: Ładuje inny model z danej ścieżki, począwszy od
assets/minecraft/models
. - ambientocclusion: Czy użyć okluzji otoczenia (
true
- domyślne), czy nie (false
). - textures: Przechowuje tekstury modelu. Każda tekstura zaczyna się w
assets/minecraft/textures
lub może być inną zmienną tekstury.- particle: Z jakiej tektury ładować cząsteczki?
- A texture variable: Definiuje zmienną teksury i zatwierdza ją.
- elements: Zawiera wszystkie elementy modelu. Mogą mieć formę wyłącznie sześcienną.
- An element
- from: Punkt początkowy sześcianu wg schematu
[x, y, z]
. Wartości muszą być pomiędzy -16 a 32. - to: Punkt końcowy sześcianu wg schematu
[x, y, z]
. Wartości muszą być pomiędzy -16 a 32. - rotation: Określa obrót elementu.
- origin: Ustawia środek obrotu wg schematu
[x, y, z]
(domyślnie[8, 8, 8]
). - axis: Określa kierunek obrotu, może być
"x"
,"y"
lub"z"
. - angle: Określa kąt obrotu. Może być od 45° do -45° w wielokrotnościach po 22.5° (domyślnie 0°).
- rescale: Określa, czy skalować boki w całym bloku. Może być
true
lubfalse
(domyślniefalse
).
- origin: Ustawia środek obrotu wg schematu
- shade: Określa, czy cienie są renderowane (
true
- default), czy nie (false
). - faces: Przechowuje wszystkie boki sześcianu. Jeśli bok jest pominięty, to nie zostanie wyrenderowany.
- down, up, north, south, west or east: Zawiera właściwości określonych boków.
- uv: Określa powierzchnię tekstury do użycia wg schematu
[x1, y1, x2, y2]
. - texture: Określa teksturę w formie zmiennej tekstury poprzedzanej przez
#
. - cullface: Określa, czy bok nie musi być renderowany, gdy jakiś blok dotyka go w wyznaczonej pozycji. Pozycje mogą być:
down
,up
,north
,south
,west
, alboeast
. - rotation: Obraca teksturę w wielokrotnościach po 90°.
- tintindex: Określa, czy odcieniować teksturę za pomocą zakodowanego indeksu odcieni. Domyślnie nie używa odcienia, a każdy numer powoduje jego użycie. Pamiętaj, że tylko niektóre bloki mają indeks odcieni, wszystkie inne zostaną nietknięte.
- uv: Określa powierzchnię tekstury do użycia wg schematu
- down, up, north, south, west or east: Zawiera właściwości określonych boków.
- from: Punkt początkowy sześcianu wg schematu
- An element
- parent: Ładuje inny model z danej ścieżki, począwszy od
Przykład: Stojąca pochodnia
Dla ułatwienia ten przykład pokazuje tylko stojącą pochodnię, która jest opisana w plikach torch.json
i normal_torch.json
przechowywanych w folderze assets/minecraft/models/block
.
File: torch.json { "ambientocclusion": false, "textures": { "particle": "#torch" }, "elements": [ { "from": [ 7, 0, 7 ], "to": [ 9, 10, 9 ], "shade": false, "faces": { "down": { "uv": [ 7, 13, 9, 15 ], "texture": "#torch" }, "up": { "uv": [ 7, 6, 9, 8 ], "texture": "#torch" } } }, { "from": [ 7, 0, 0 ], "to": [ 9, 16, 16 ], "shade": false, "faces": { "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#torch" }, "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#torch" } } }, { "from": [ 0, 0, 7 ], "to": [ 16, 16, 9 ], "shade": false, "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#torch" }, "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#torch" } } } ] }
Ten plik jest używany do tworzenia modelu pochodni, który używany jest przez zwykłą i czerwoną pochodnię. Dlatego elements
-tag jest używany do tworzenia trzech elementów lub sześcianów. Tylko 2 boki każdego sześcianu są renderowane, bo tylko 2 z nich zostały określone. "uv"
jest stosowany do określenia obszaru, gdzie tekstura ma być używana. Zmienna tekstury "#torch"
jest używana dla cząsteczek i sześcianów. Nie została jeszcze zdefiniowana.
File: normal_torch.json { "parent": "block/torch", "textures": { "torch": "blocks/torch_on" } }
Ten plik reprezentuje model normalnej stojącej pochodni. Ładuje on model poprzednio opisanej stojącej pochodni z pomocą "parent"
i dziedziczy wszystkie właściwości pliku torch.json
. Ponieważ ten plik jest używany tylko dla zwykłej pochodni, tekstura może być teraz określona. Tekstura "torch_on"
jest teraz przypisana do zmiennej tekstury "torch"
(bez #
), zatem będzie używana dla poprzednio załadowanego modelu i jego cząsteczek, jak określono w drugim pliku.
Przykład: Każdy blok
Ten przykład opisuje fundamentalną strukturę większości normalnych bloków w Minecrafcie. Te bloki używają tego samego podstawowego modelu i stosują do niego tylko swoją teksturę, jak już opisano w przykładzie powyżej. Ten model znajduje się w pliku cube.json
, który jest w folderze assets/minecraft/models/block
.
File: cube.json { "elements": [ { "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], "faces": { "down": { "texture": "#down", "cullface": "down" }, "up": { "texture": "#up", "cullface": "up" }, "north": { "texture": "#north", "cullface": "north" }, "south": { "texture": "#south", "cullface": "south" }, "west": { "texture": "#west", "cullface": "west" }, "east": { "texture": "#east", "cullface": "east" } } } ] }
Cechy opisane powyżej nie zostaną ponownie wspomniane. Użycie "cullface": "down"
zabezpiecza dolny bok bloku przed wyrenderowaniem, jeśli jakiś inny blok jest pod nim. To samo dzieje się z resztą boków.
Przykład: Sadzonka
Ten przykład opisuje fundamentalną strukturę używaną przez wszystkie sadzonki bez przypisywania konkretnej tekstury. Ten model jest opisany w pliku cross.json
, tekstura mogłaby np. zostać przypisana do oak_sapling.json
. Oba pliki są przechowywane w folderze assets/minecraft/models/block
.
File: cross.json { "ambientocclusion": false, "textures": { "particle": "#cross" }, "elements": [ { "from": [ 0.8, 0, 8 ], "to": [ 15.2, 16, 8 ], "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, "shade": false, "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" }, "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" } } }, { "from": [ 8, 0, 0.8 ], "to": [ 8, 16, 15.2 ], "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, "shade": false, "faces": { "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" }, "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" } } } ] }
Aby stworzyć zwykłego kształtu sadzonkę, oba elementy muszą być obrócone o 45°. Dlatego pochodzenie i oś obrotu są ustawione do określonych wartości, kąt jest ustawiony na 45° i "rescale"
jest ustawiony na true
. Ten ostatni powoduje, że model jest skalowany na osiach, które nie zostały obrócone tak, że zajmują to samo miejsce jak przed obrotem (zdjęcia poniżej).
"rescale": true
|
"rescale": false
|
Modele przedmiotów
Ponieważ przedmioty nie mają różnych wariantów, nie potrzeba ich opisywać. Folder assets/minecraft/models/item
zawiera wszystkie pliki modeli. Nazwy plików są zakodowane i nie powinny być zmieniane.
- Tag korzenia
- parent: Ładuje inny model z danej ścieżci, począwszy od
assets/minecraft/models
.- Może być ustawione na
"builtin/generated"
, aby używać modelu stworzonego z określonej ikony. - Może być ustawione na
"builtin/entity"
, aby załadoać model z plików bytów. Ponieważ nie można określić bytu, to nie zadziała dla wszystkich przedmiotów (tylko dla skrzyń, skrzyń Kresu, głów i sztandarów). - Musi być ustawione na
"builtin/compass"
lub"builtin/clock"
dla kompasu lub zegara.
- Może być ustawione na
- textures: Posiada tekstury modelu. Każda tekstura zaczyna się w
assets/minecraft/textures
lub może być inną zmienną tekstury.- layer#: Używane do określenia ikony przedmiotu w ekwipunku. Może być więcej niż jedna warstwa (np. dla jaj przyzywających), ale liczba możliwych warstw jest zakodowana dla każdego przedmiotu. Działa tylko w kombinacji z
"builtin/generated"
. - particle: Z jakiej tekstury ładować cząsteczki?
- A texture variable: Określa zmienną tekstury i przypisuje ją.
- layer#: Używane do określenia ikony przedmiotu w ekwipunku. Może być więcej niż jedna warstwa (np. dla jaj przyzywających), ale liczba możliwych warstw jest zakodowana dla każdego przedmiotu. Działa tylko w kombinacji z
- elements: Zawiera wszystkie elementy modelu. Mogą mieć tylko formę sześcienną.
- An element
- from: Punkt początkowy sześcianu wg schematu
[x, y, z]
. Wartości muszą być między -16 a 32. - to: Punkt końcowy sześcianu wg schematu
[x, y, z]
. Wartości muszą być między -16 a 32. - rotation: Określa obrót elementu.
- origin: Ustawia środek obrotu wg schematu
[x, y, z]
(domyślnie[8, 8, 8]
). - axis: Określa kierunek obrotu. Może być
"x"
,"y"
lub"z"
. - angle: Określa kąt obrotu. Może być od 45° do -45° w wielokrotnościach po 22.5° (domyślnie 0°).
- origin: Ustawia środek obrotu wg schematu
- faces: Przechowuje wszystkie boki sześcianu. Jeśli bok został pominięty, to nie zostanie wyrenderowany.
- down, up, north, south, west or east: Zawiera właściwości określonego boku.
- uv: Określa powierzchnię tekstury do użycia wg schematu
[x1, y1, x2, y2]
. - textures: Określa teksturę w postaci zmiennej tekstury poprzedzonej przez
#
. - cull: Określa, czy niewidoczne elementy powinny być renderowane (
true
), czy nie (false
). - rotation: Obraca teksturę w wielokrotnościach po 90°.
- uv: Określa powierzchnię tekstury do użycia wg schematu
- down, up, north, south, west or east: Zawiera właściwości określonego boku.
- from: Punkt początkowy sześcianu wg schematu
- An element
- display: Określa różne miejsca, gdzie modele przedmiotów są wyświetlane.
- thirdperson, firstperson, gui or head: Miejsce, gdzie model przedmiotu jest wyświetlany. Przechowuje jego obrót, pozycję i skalę dla określonej sytuacji.
- rotation: Określa obrót modelu wg schematu
[x, y, z]
. - translation: Określa pozycję modelu wg schematu
[x, y, z]
. - scale: Określa skalę modelu wg schematu
[x, y, z]
.
- rotation: Określa obrót modelu wg schematu
- thirdperson, firstperson, gui or head: Miejsce, gdzie model przedmiotu jest wyświetlany. Przechowuje jego obrót, pozycję i skalę dla określonej sytuacji.
- parent: Ładuje inny model z danej ścieżci, począwszy od
Przykład: Pochodnia
Ten przykład opisuje pochodnię jako przedmiot. Model znajduje się w pliku torch.json
, który jest w folderze assets/minecraft/models/item
.
File: torch.json { "parent": "builtin/generated", "textures": { "layer0": "blocks/torch_on" } "display": { "thirdperson": { "rotation": [ -90, 0, 0 ], "translation": [ 0, 1, -3 ], "scale": [ 0.55, 0.55, 0.55 ] }, "firstperson": { "rotation": [ 0, -135, 25 ], "translation": [ 0, 4, 2 ], "scale": [ 1.7, 1.7, 1.7 ] } } }
"parent"
-tag używa "builtin/generated"
, więc gra używa zwykłego modelu pochodni, który został wygenerowany z grafiki 2D używanej dla ikony. Ikona jest określona "layer0"
-tagiem i teksturą, która została już użyta dla modelu bloku, jest używana również dla ikony. Ponieważ tylko jedna warstwa jest zakodowana dla pochodni, nie można dodać więcej warstw. Ponadto właściwości ekranu dla pochodni są tak określone, że będzie on wyświetlany poprawnie w każdej możliwej sytuacji. Pochodnia nie może być postawiona na głowie gracza i używa określonej ikony w ekwipunku, więc nie trzeba dostosowywać modelu do tych sytuacji. By dopasować model do ręki gracza w widoku pierwszo- i trzecioosobowym, musi być on odpowiednio obracany, przesuwany i skalowany, co jest robione dla dwóch sytuacji oddzielnie.
Historia
Pełna wersja | |||||
---|---|---|---|---|---|
1.8 | 14w06a | Dodano własne modele bloków. | |||
14w07a | Przepisano on nowa format modeli. Zamiast posiadania tylko "planes" , ma on teraz "planes" i "cubes" . Obrót obiektów został ograniczony do jednego kierunku obrotu na obiekt w wielokrotnościach po 22.5°. | ||||
14w11a | Oświetlenie pełnego bloku już nie tworzy środkowej części kompletnie czarnej. | ||||
14w11b | Zwykłe bloki ładują modele zamiast wcześniej określonych kształtów. | ||||
12 kwietnia 2014 | TheMogMiner postuje o nadchodzących zmianach w formacie modeli. | ||||
14w17a | Przekonwertowano większość pozostałych bloków do formatu modeli. | ||||
Dodano "rotateVariantTextures" , aby zapobiec szczegóły "uv" przed obrotem. | |||||
14w25a | Usunięto atrybut kierunkowy z definicji "uv" i zamieniono na wyraźne odniesienia tekstur. "textureFacing" został zamieniony z "texture" , który jest poprzedzany krzyżykiem (# ).
| ||||
"useAmbientOcclusion" zmieniono na "ambientocclusion"
| |||||
"rotateVariantTextures" zmieniono na "UV lock"
| |||||
"cull" zmieniono na "cullface" , specifies the opposite of which neighboring face causes culling to occur[1].
| |||||
Obrót jest bardziej rozszerzony, teraz jest jasne, że może pojawić się tylko na jednej osi. Przykład: obrót jednego z dwóch boków modelu "cross" jest teraz: "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, .
| |||||
Folder models/blocks/meshes został usunięty, a pliki są teraz przechowywane w models/block .
| |||||
Folder blockstates został dodany i przechowuje pliki wyboru modelu poprzednio zlokalizowane w models/block .
| |||||
Format modelu wspiera teraz własne modele przedmiotów. | |||||
14w27a | Zamieniono nazwy stanów bloków z danymi, które lepiej odzwierciedlają dane wewnętrzne. Jeszcze nie odzwierciedla wszystkich danych dla niektórych bloków. Przełączy do rzeczywistych zapisanych danych w przyszłej wersji, gdy numeryczne wartości danych zostaną kompletnie porzucone na korzyść stanów bloków. | ||||
14w27b | Pliki stanów bloków teraz wspierają układ modeli pozwalających na losowe modele. | ||||
14w30a | Dodano model przedmiotów "builtin/entity" . | ||||
Pocket Edition Alpha | |||||
0.8.0 | Dodano losowy obrót bloków. |
Przypisy
- ↑ Problemy z tłumaczeniem.