Вопрос насчёт 3D моделек

Версия Minecraft
1.12.2
API
Forge
Решение
Полазив немного по форуму я понял, что в 1.12.2 обстоят проблемы с загрузкой .obj формата. Как вариант - написать свой загрузчик модели. Тебе нужно загрузить позиции вершин, их текстурные координаты, индексы, ну и нормали, если они тебе нужны. Потом как один из вариантов - загрузить это все дело в вао и вбо, и отрисовывать через шейдеры. Ну или же glVertex3f и тд.

Если самостоятельно вытащить нужные данные из модели для тебя проблема, то вот ассимп под джаву, который работает независимо от lwjgl:
Ассимп, принцип его использования аналогичен assimp на C++, надо только понять сам принцип работы.

Но я бы не стал тащить целую либу для загрузки обж файла на парсинг которого уйдет максимум час при знании джавы (даже не opengl).

Вот...
202
14
36
 
33
1
14
Полазив немного по форуму я понял, что в 1.12.2 обстоят проблемы с загрузкой .obj формата. Как вариант - написать свой загрузчик модели. Тебе нужно загрузить позиции вершин, их текстурные координаты, индексы, ну и нормали, если они тебе нужны. Потом как один из вариантов - загрузить это все дело в вао и вбо, и отрисовывать через шейдеры. Ну или же glVertex3f и тд.

Если самостоятельно вытащить нужные данные из модели для тебя проблема, то вот ассимп под джаву, который работает независимо от lwjgl:
Ассимп, принцип его использования аналогичен assimp на C++, надо только понять сам принцип работы.

Но я бы не стал тащить целую либу для загрузки обж файла на парсинг которого уйдет максимум час при знании джавы (даже не opengl).

Вот ссылка по описанию obj формата, чтобы ты понял, что есть позиции вершин, что текстурные координаты вершин, что нормали вершин, а что индексы вершин:


Резюмируя:
Читаешь информацию об obj формате, пишешь парсер, потом данные которые ты распарсил передаешь опенгл для отрисовки, как передавать уже сам решишь
 
33
1
14
И зачем вам откуда то воровать? Вам так лень написать obj парсер, который можно написать за 10 минут? Не знаю, лично у меня ушло даже меньше на это.
Не претендую на суперский код, но вот:
Obj parser:
List<Float> verts = new ArrayList<>();
List<Float> uvs = new ArrayList<>();
List<Float> normals = new ArrayList<>();
List<Integer> indices = new ArrayList<>();

try
{
    BufferedReader reader = new BufferedReader(new FileReader("F:\\rock.obj"));
    String line;

    while((line = reader.readLine()) != null)
    {
        if(line.startsWith("v "))
            for(int i = 1; i < 4; i++)
                verts.add(Float.parseFloat(line.split(" ")[i]));

        else if(line.startsWith("vt "))
            for(int i = 1; i < 3; i++)
                uvs.add(Float.parseFloat(line.split(" ")[i]));

        else if(line.startsWith("vn "))
            for(int i = 1; i < 4; i++)
                normals.add(Float.parseFloat(line.split(" ")[i]));

        else if(line.startsWith("f "))
            for(int i = 1; i < 4; i++)
                for(int j = 0; j < 3; j++)
                    indices.add(Integer.parseInt(line.split(" ")[i].split("/")[j]));
    }
}
catch (IOException e)
{
    e.printStackTrace();
}

Пользуйтесь наздоровье, все что вам остается - передать эти данные в опенгл и отрисовать удобным для вас способом
 
Последнее редактирование:

will0376

Токсичная личность
2,079
55
585
7,099
324
1,510
Именно - велосипед! В forge уже есть прекрасный загрузчик, почему бы не юзать его?
 
Сверху