[Kotlin][1.7.10]Raven-API

CumingSoon

Местный стендапер
1,634
12
269
Ах, я же хотел делать динамический свет, но так и не сделал, эх.
Это не совсем тестурка, тут еще нормал маппинг, а источники света я взял константные, из майна.
 
2,505
81
397
Но тень явно как-то неадекватно легла.
А зачем тут нормаль маппинг?
 

CumingSoon

Местный стендапер
1,634
12
269
Толста троллешь
Говорю же, изучал модерн ОГЛ, решил сделать либу. Тень тут как от двух источников, которые находятся непонятно где.
 

CumingSoon

Местный стендапер
1,634
12
269
Итак, как же запилить модель с картой нормалей.
===
Для начала нужно создать где-то объект VBO, 2 текстуры(текстуру и карту нормалей), модель. Создать их нужно в контексте рендеринга, т.е. в потоке рендера(подойдут эвенты с приставкой Render-). И да, VBO/текстуры надо создавать по разу, зачем плодить кучу? Я не придумал ничего лучше использования ленивой инициализации, т.е. if(a == null) {a = X}; code; В Скале и Котлине есть свой функционал(делегат в Котлине, ключ. слово lazy в Скале) .
===
ВБО создать ты можешь либо сам, либо загрузить obj. Если сам, то тебе в VBO.createModel. Тут укажешь вершины(просто вершины), индексы(треугольники, они всюду. Ты должен вручную указать порядок индексов для треугольника. 0 - первый индекс из 1 аргумента метода. useNormals поставишь тру, если хочешь нормал маппинг(от 2-х убогих источников. Подробнее о них в шредоре)). Загрузить модель попроще, пишешь loadModel, первый аргумент - указываешь объект ObjLoader , второй - путь.
===
От текстуры лишь нужен textureId, текстуру загрузить в память. В общем, дабы не переписывать функционал, используй SimpleTexture. Укажешь ResourceLocation, достанешь glTextureId. Для карты нормалей то же самое, это тоже текстура.
===
Когда создашь всё, запиши в какие-нибудь статические переменные. Затем надо вызвать VBO.renderWithNormalMap(model, normaltextureId, textureId). Также тебе будет нужна матрица. По умолчанию используется proj * view, т.е. модель будет где-то над головой у игрока. Если хочешь передвинуть, то нужно создать proj * view * model. Вообще, есть более удобный метод(не знаю, может и не удобный) makeMVPMatrix в ClientUtils. Укажешь позицию в виде вектора, вращение и масштабирование. Можешь поставить faceToCamera на тру, тогда это будет биллбоард. Вооот.
===
Пихаешь данные в метод, он рисует.
===
Вроде, всё. Легче было бы кодом, но мне лень скачивать эту либу, сорре. И да, если чего-то не понял, то уж прости, писать внятно я не очень умею.
 
7,099
324
1,510
Большое спасибо!
CoomingSoon написал(а):
Пихаешь данные в метод, он рисует.
Какой метод? Наверное, когда код писать буду, пойму
 

CumingSoon

Местный стендапер
1,634
12
269
Нельзя. Хочешь попробовать - скачай, сделай. Я уже давно это бросил. И вообще, а как сферу-то сглаженную сделать?
 
7,099
324
1,510
Ну, типо, сгладить модель усечённого икосаэдра
 

CumingSoon

Местный стендапер
1,634
12
269
Ну это понятно, я про сами методы сглаживания. Наверное, подойдёт тесселяция, но я о ней мало знаю
 
Сверху