Получение понятных данных из vertexData

Версия Minecraft
1.11.2
1,015
9
102
У меня есть объект типа BakedQuad. Он имеет vertexData, которая хранит положение его 4х вершин и их UV. Получается она в виде массива int
Код:
int[] vertexData = quad.getVertexData();

Внутренности массива примерно такие
3dd98c60f686f4470c6557afab460020-full.png


Как это преобразовать в понятные мне координаты вершин и UV?
 
2,505
81
397
Лучше всего покопаться в исходниках.
Но можешь попробовать преобразовать эти инты во флоaты и посмотреть, что там.
ByteBuffer buf = BufferUtils.createByteBuffer(size);
buf.asIntBuffer().put(src, offset, length);
buf.asFloatBuffer()
 
1,990
18
105
Заглядываешь в майновский Tessellator, смотришь как там для VBO указывается формат данных (stride, offset, type). Где-то на версии 1.6.4 (не знаю как дальше), там был вполне себе обычный interleaved VBO формат. (Не использовался правда совсем).
Майн передает позиции и UV флоатами, цвет пакует в один инт, UV координаты на лайтмапе тоже (возможно, тебе они не нужны).
Удачи.
 
1,015
9
102
Dahaka написал(а):
Но можешь попробовать преобразовать эти инты во флоaты и посмотреть, что там.

Да, там действительно что-то есть. У каждой вершины по 7 значений. 3 из них - координаты, а 2 - UV. Остальные две... Я хз что они обозначают
ce1863090fe9232e0ea2ddfe144bd4d3-full.png


UPD: Третье наверное цвет, а шестое UV координаты лайт мапа, как раз (или наоборот)
 
476
9
39
Сорри за некропостинг, но это надо перенести в учебник. Просто невероятно нужная вещь.
 
1,015
9
102
talosdx написал(а):
Сорри за некропостинг, но это надо перенести в учебник. Просто невероятно нужная вещь.

Не думаю, что это почти всем нужно. Если так хочешь, то напиши в учебнике сам. Типо, все маленькие решения можно найти поиском, как и эту тему
 
476
9
39
Да я ещё сам не во всём разобрался, например как перевести нормально во float без exception'ов.
Вроде понимаю, что в buf.asIntBuffer().put(src, offset, length); нужно запихнуть
src - собственно сам буфер(vertexData), в offset хз, но гугл говорит это смещение, пробую 0, ну и в длину длину массива src?
Плюс я не совсем понимаю, массив содержит 28 значений, т.е 28/4=7 значений, т.е он строит квадрат? Вау кажется это обрело смысл. Он строит только одну сторону по 28 значения.
Вот я и сомневаюсь то ли он квадрат(2d, т.е сторону только) то ли маленький кубик строит?

Раньше через buffer.pos.tex.endVertex(); строил и там каша. Но через vertexData всё ок. Вот и разбираюсь, как формировать её.
 
Сверху