Как сделать блок с прозрачными и непрозрачными частями

Версия Minecraft
1.12.2
API
Forge
7,166
329
1,544
Делаю блок, который состоит из мелких кубиков, одна прозрачные, другие непрозрачные, в шахматном порядке.
В блокбенче модель выглядит хорошо, но в игре возникают странные визуальные баги:
полигоны иногда рендерятся друг через друга

Модель:
JSON:
{
    "credit": "Made with Blockbench",
    "parent": "block/leaves",
    "textures": {
        "0": "endmagic:blocks/block_polished_obsidian_endstone_bricks",
        "particle": "endmagic:blocks/block_polished_obsidian_endstone_bricks"
    },
    "elements": [
        {
            "from": [0, 0, 0],
            "to": [8, 8, 8],
            "faces": {
                "north": {"uv": [0, 0, 8, 8], "texture": "#0"},
                "west": {"uv": [0, 0, 8, 8], "texture": "#0"},
                "down": {"uv": [0, 0, 8, 8], "texture": "#0"}
            }
        },
        {
            "from": [8, 0, 0],
            "to": [16, 8, 8],
            "rotation": {"angle": 0, "axis": "y", "origin": [16, 8, 8]},
            "faces": {
                "north": {"uv": [0, 8, 8, 16], "texture": "#0"},
                "east": {"uv": [0, 8, 8, 16], "texture": "#0"},
                "south": {"uv": [0, 8, 8, 16], "texture": "#0"},
                "west": {"uv": [0, 8, 8, 16], "texture": "#0"},
                "up": {"uv": [0, 8, 8, 16], "texture": "#0"},
                "down": {"uv": [0, 8, 8, 16], "texture": "#0"}
            }
        },
        {
            "from": [0, 0, 8],
            "to": [8, 8, 16],
            "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 16]},
            "faces": {
                "north": {"uv": [8, 0, 16, 8], "texture": "#0"},
                "east": {"uv": [8, 0, 16, 8], "texture": "#0"},
                "south": {"uv": [8, 0, 16, 8], "texture": "#0"},
                "west": {"uv": [8, 0, 16, 8], "texture": "#0"},
                "up": {"uv": [8, 0, 16, 8], "texture": "#0"},
                "down": {"uv": [8, 0, 16, 8], "texture": "#0"}
            }
        },
        {
            "from": [8, 0, 8],
            "to": [16, 8, 16],
            "rotation": {"angle": 0, "axis": "y", "origin": [16, 8, 16]},
            "faces": {
                "east": {"uv": [0, 0, 8, 8], "texture": "#0"},
                "south": {"uv": [0, 0, 8, 8], "texture": "#0"},
                "down": {"uv": [0, 0, 8, 8], "texture": "#0"}
            }
        },
        {
            "from": [0, 8, 0],
            "to": [8, 16, 8],
            "rotation": {"angle": 0, "axis": "y", "origin": [8, 16, 8]},
            "faces": {
                "north": {"uv": [8, 0, 16, 8], "texture": "#0"},
                "east": {"uv": [8, 0, 16, 8], "texture": "#0"},
                "south": {"uv": [8, 0, 16, 8], "texture": "#0"},
                "west": {"uv": [8, 0, 16, 8], "texture": "#0"},
                "up": {"uv": [8, 0, 16, 8], "texture": "#0"},
                "down": {"uv": [8, 0, 16, 8], "texture": "#0"}
            }
        },
        {
            "from": [8, 8, 0],
            "to": [16, 16, 8],
            "rotation": {"angle": 0, "axis": "y", "origin": [16, 16, 8]},
            "faces": {
                "north": {"uv": [0, 0, 8, 8], "texture": "#0"},
                "east": {"uv": [0, 0, 8, 8], "texture": "#0"},
                "up": {"uv": [0, 0, 8, 8], "texture": "#0"}
            }
        },
        {
            "from": [8, 8, 8],
            "to": [16, 16, 16],
            "rotation": {"angle": 0, "axis": "y", "origin": [16, 16, 16]},
            "faces": {
                "north": {"uv": [8, 0, 16, 8], "texture": "#0"},
                "east": {"uv": [8, 0, 16, 8], "texture": "#0"},
                "south": {"uv": [8, 0, 16, 8], "texture": "#0"},
                "west": {"uv": [8, 0, 16, 8], "texture": "#0"},
                "up": {"uv": [8, 0, 16, 8], "texture": "#0"},
                "down": {"uv": [8, 0, 16, 8], "texture": "#0"}
            }
        },
        {
            "from": [0, 8, 8],
            "to": [8, 16, 16],
            "rotation": {"angle": 0, "axis": "y", "origin": [8, 16, 16]},
            "faces": {
                "south": {"uv": [0, 0, 8, 8], "texture": "#0"},
                "west": {"uv": [0, 0, 8, 8], "texture": "#0"},
                "up": {"uv": [0, 0, 8, 8], "texture": "#0"}
            }
        }
    ],
    "groups": [
        {
            "name": "bottom",
            "origin": [8, 8, 8],
            "children": [0, 1, 2, 3]
        },
        {
            "name": "top",
            "origin": [8, 8, 8],
            "children": [4, 5, 6, 7]
        }
    ]
}

Как это пофиксить?
 
Решение
Рисовать разные части в разных рендерпасах: отдельно непрозрачную геометрию, отдельно полупрозрачную. Хз, поддерживает ли такое майн нормально, но вроде ж есть блоки мёда.
Рисовать разные части в разных рендерпасах: отдельно непрозрачную геометрию, отдельно полупрозрачную. Хз, поддерживает ли такое майн нормально, но вроде ж есть блоки мёда.
 
Решено:
Нужно было рендерить блок в двух слоях - TRANSLUCENT и SOLID
 
Назад
Сверху