У меня есть набор блоков Minecraft, и для каждого из них мне нужен объем (произвольного размера), содержащий вокселизированный блок Minecraft.
Блок Minecraft - это не просто AABB, который заполняет все блок. Обычно это набор дочерних AABB, которые могут быть переведены / масштабированы / повернуты (OBB) и могут иметь различный цвет / текстуру для каждого лица. Вот пример:
Я уже разработал класс под названием ModelVoxelizer
, который принимает трехмерную три angular модель и выдает вокселизацию для этого и для этого используется графический конвейер OpenGL. Проблема с этим состоит в том, что это устанавливает на объеме только контурные воксели модели. Вместо этого я хочу, чтобы вокселизация блока Minecraft была заполнена внутри.
Кусочек тома, который я бы ( надеюсь ) ) получить мой текущий ModelVoxelizer
, воксализируя 3 OBB (не всегда у меня есть AABB!), которые составляют блок Minecraft выше.
A часть объема, который я хочу (в основном тот выше, но заполненный). Внутри вокселей должен быть цвет, усредненный по граням текстуры.
Проблема:
Так что моя проблема - это проблема растеризации, где у меня есть объем ( 3D-сетка) и OBB (часть блока Minecraft), и я должен проверить, какие воксели находятся внутри OBB. Для тех, кто находится внутри / сталкивается, я должен интерполировать значения граней OBB (текстура / цвет), основываясь на расстоянии вокселя от указанных граней.
Это уже известная проблема? Я пытаюсь заново изобрести колесо?
Я ценю любые предложения по этому поводу, спасибо.