Chcesz pomóc, ale nie wiesz, od czego zacząć? Sprawdź listę artykułów do rozszerzenia lub zilustrowania czy potrzebnych zmian.

Modele bloków

Z Minecraft Wiki Polska
Skocz do: nawigacja, szukaj

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[edytuj | edytuj kod]

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.

  • Nbtsheet.png Tag korzenia
    • Nbtsheet.png variants: Mieści nazwy wszystkich wariantów bloku.
      • Nbtsheet.png 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 Nbtsheet.png-tagach, które są potrzebne dla znacznika wariantu.
        • Nbtsheet.png 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.
          • Nbtsheet.png model: Określa ścieżkę do pliku modelu bloku, począwszy od assets/minecraft/models/blocks.
          • Nbtsheet.png x: Obrót modelu na osi x, w odstępach co 90°.
          • Nbtsheet.png y: Obrót modelu na osi y, w odstępach co 90°.
          • Nbtsheet.png uvlock: Obraca teksturę z blokiem, jeśli jest false (domyślnie).
          • Nbtsheet.png weight: Prawdopodobieństwo użycia modelu w grze. Domyślną wartością jest 1 (=100%).
        • Nbtsheet.png model: Określa ścieżkę do pliku modelu bloku, począwszy od assets/minecraft/models/blocks.
        • Nbtsheet.png x: Obrót modelu na osi x, w odstępach co 90°.
        • Nbtsheet.png y: Obrót modelu na osi y, w odstępach co 90.°
        • Nbtsheet.png uvlock: Obraca teksturę z blokiem, jeśli jest false (domyślnie).

Przykład: Pochodnia[edytuj | edytuj kod]

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[edytuj | edytuj kod]

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[edytuj | edytuj kod]

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.

  • Nbtsheet.png Tag korzenia
    • Nbtsheet.png parent: Ładuje inny model z danej ścieżki, począwszy od assets/minecraft/models.
    • Nbtsheet.png ambientocclusion: Czy użyć okluzji otoczenia (true - domyślne), czy nie (false).
    • Nbtsheet.png textures: Przechowuje tekstury modelu. Każda tekstura zaczyna się w assets/minecraft/textures lub może być inną zmienną tekstury.
      • Nbtsheet.png particle: Z jakiej tektury ładować cząsteczki?
      • Nbtsheet.png A texture variable: Definiuje zmienną teksury i zatwierdza ją.
    • Nbtsheet.png elements: Zawiera wszystkie elementy modelu. Mogą mieć formę wyłącznie sześcienną.
      • Nbtsheet.png An element
        • Nbtsheet.png from: Punkt początkowy sześcianu wg schematu [x, y, z]. Wartości muszą być pomiędzy -16 a 32.
        • Nbtsheet.png to: Punkt końcowy sześcianu wg schematu [x, y, z]. Wartości muszą być pomiędzy -16 a 32.
        • Nbtsheet.png rotation: Określa obrót elementu.
          • Nbtsheet.png origin: Ustawia środek obrotu wg schematu [x, y, z] (domyślnie [8, 8, 8]).
          • Nbtsheet.png axis: Określa kierunek obrotu, może być "x", "y" lub "z".
          • Nbtsheet.png angle: Określa kąt obrotu. Może być od 45° do -45° w wielokrotnościach po 22.5° (domyślnie 0°).
          • Nbtsheet.png rescale: Określa, czy skalować boki w całym bloku. Może być true lub false (domyślnie false).
        • Nbtsheet.png shade: Określa, czy cienie są renderowane (true - default), czy nie (false).
        • Nbtsheet.png faces: Przechowuje wszystkie boki sześcianu. Jeśli bok jest pominięty, to nie zostanie wyrenderowany.
          • Nbtsheet.png down, up, north, south, west or east: Zawiera właściwości określonych boków.
            • Nbtsheet.png uv: Określa powierzchnię tekstury do użycia wg schematu [x1, y1, x2, y2].
            • Nbtsheet.png texture: Określa teksturę w formie zmiennej tekstury poprzedzanej przez #.
            • Nbtsheet.png 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, albo east.
            • Nbtsheet.png rotation: Obraca teksturę w wielokrotnościach po 90°.
            • Nbtsheet.png 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.

Przykład: Stojąca pochodnia[edytuj | edytuj kod]

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[edytuj | edytuj kod]

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[edytuj | edytuj kod]

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
BlockModels rescale true.png BlockModels rescale false.png

Modele przedmiotów[edytuj | edytuj kod]

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
    • Nbtsheet.png 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.
    • Nbtsheet.png textures: Posiada tekstury modelu. Każda tekstura zaczyna się w assets/minecraft/textures lub może być inną zmienną tekstury.
      • Nbtsheet.png layer#: Używane do określenia ikony przedmiotu w ekwipunku. Może być więcej niż jedna warstwa (np. dla jaj spawnujących), ale liczba możliwych warstw jest zakodowana dla każdego przedmiotu. Działa tylko w kombinacji z "builtin/generated".
      • Nbtsheet.png particle: Z jakiej tekstury ładować cząsteczki?
      • Nbtsheet.png A texture variable: Określa zmienną tekstury i przypisuje ją.
    • Nbtsheet.png elements: Zawiera wszystkie elementy modelu. Mogą mieć tylko formę sześcienną.
      • Nbtsheet.png An element
        • Nbtsheet.png from: Punkt początkowy sześcianu wg schematu [x, y, z]. Wartości muszą być między -16 a 32.
        • Nbtsheet.png to: Punkt końcowy sześcianu wg schematu [x, y, z]. Wartości muszą być między -16 a 32.
        • Nbtsheet.png rotation: Określa obrót elementu.
          • Nbtsheet.png origin: Ustawia środek obrotu wg schematu [x, y, z] (domyślnie [8, 8, 8]).
          • Nbtsheet.png axis: Określa kierunek obrotu. Może być "x", "y" lub "z".
          • Nbtsheet.png angle: Określa kąt obrotu. Może być od 45° do -45° w wielokrotnościach po 22.5° (domyślnie 0°).
        • Nbtsheet.png faces: Przechowuje wszystkie boki sześcianu. Jeśli bok został pominięty, to nie zostanie wyrenderowany.
          • Nbtsheet.png down, up, north, south, west or east: Zawiera właściwości określonego boku.
            • Nbtsheet.png uv: Określa powierzchnię tekstury do użycia wg schematu [x1, y1, x2, y2].
            • Nbtsheet.png textures: Określa teksturę w postaci zmiennej tekstury poprzedzonej przez #.
            • Nbtsheet.png cull: Określa, czy niewidoczne elementy powinny być renderowane (true), czy nie (false).
            • Nbtsheet.png rotation: Obraca teksturę w wielokrotnościach po 90°.
    • Nbtsheet.png display: Określa różne miejsca, gdzie modele przedmiotów są wyświetlane.
      • Nbtsheet.png thirdperson, firstperson, gui or head: Miejsce, gdzie model przedmiotu jest wyświetlany. Przechowuje jego obrót, tłumaczenie i skalę dla określonej sytuacji.
        • Nbtsheet.png rotation: Określa obrót modelu wg schematu [x, y, z].
        • Nbtsheet.png translation: Określa tłumaczenie modelu wg schematu [x, y, z].
        • Nbtsheet.png scale: Określa skalę modelu wg schematu [x, y, z].

Przykład: Pochodnia[edytuj | edytuj kod]

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[edytuj | edytuj kod]

Pełna wersja
1.814w06aDodano własne modele bloków.
14w07aPrzepisano 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°.
14w11aOświetlenie pełnego bloku już nie tworzy środkowej części kompletnie czarnej.
14w11bZwykłe bloki ładują modele zamiast wcześniej określonych kształtów.
12 kwietnia 2014TheMogMiner postuje o nadchodzących zmianach w formacie modeli.
14w17aPrzekonwertowano większość pozostałych bloków do formatu modeli.
Dodano "rotateVariantTextures", aby zapobiec szczegóły "uv" przed obrotem.
14w25aUsunię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.
14w27aZamieniono 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.
14w27bPliki stanów bloków teraz wspierają układ modeli pozwalających na losowe modele.
14w30aDodano model przedmiotów "builtin/entity".
Pocket Edition Alpha
0.8.0Dodano losowy obrót bloków.

Przypisy[edytuj | edytuj kod]

  1. Problemy z tłumaczeniem.