[Kotlin][1.7.10]Raven-API

Ах, я же хотел делать динамический свет, но так и не сделал, эх.
Это не совсем тестурка, тут еще нормал маппинг, а источники света я взял константные, из майна.
 
Но тень явно как-то неадекватно легла.
А зачем тут нормаль маппинг?
 
Толста троллешь
Говорю же, изучал модерн ОГЛ, решил сделать либу. Тень тут как от двух источников, которые находятся непонятно где.
 
Итак, как же запилить модель с картой нормалей.
===
Для начала нужно создать где-то объект 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 на тру, тогда это будет биллбоард. Вооот.
===
Пихаешь данные в метод, он рисует.
===
Вроде, всё. Легче было бы кодом, но мне лень скачивать эту либу, сорре. И да, если чего-то не понял, то уж прости, писать внятно я не очень умею.
 
Большое спасибо!
CoomingSoon написал(а):
Пихаешь данные в метод, он рисует.
Какой метод? Наверное, когда код писать буду, пойму
 
Нельзя. Хочешь попробовать - скачай, сделай. Я уже давно это бросил. И вообще, а как сферу-то сглаженную сделать?
 
Ну, типо, сгладить модель усечённого икосаэдра
 
Ну это понятно, я про сами методы сглаживания. Наверное, подойдёт тесселяция, но я о ней мало знаю
 
Назад
Сверху