развёртка 3D модели

svk

1,185
3
Где должна лежать эта ипаная развёртка (текстура) 3D модели. Уже всюду пихнул, и в исходники, и в assets, и куда только можно.
И каким образом биндить развёртку?
 
Зачем тебе развертка модели в моде? Обычно так называют заготовку текстуры, сделанную по только что построенной развертке.
 
Ну, скачал модель, надо тякстуру натянуть.
[merge_posts_bbcode]Добавлено: 29.03.2015 19:25:09[/merge_posts_bbcode]

Dragon2488 написал(а):
Minecraft.getMinecraft().renderEngine.bindTexture
Ну спасибо, а что внутри писать-то.
new ResourceLocation(Тут как должно выглядеть?);
 
svk, уточни про какую развертку ты говоришь.
Развёртка для *.obj файлов, находиться внутри них,
Развёртка для файлов использующий ModelRenderer, генерируется при построении кубов,
Развёртка для Tessellator'ов файлов, находиться в последних параметров метода "addVertexWithUV",
Или возможно ты про текстуру, то она должна находиться в "assets" и зависимости какой ты ModId указал для текстуры.
Код:
private static final ResourceLocation texture = new ResourceLocation("timaxa007", "textures/obj/test_uw.png");
"\resources\assets\timaxa007\textures\obj\test_uw.png"
 
new ResourceLocation("modid", любой/путь/текстура.png")
Таким образом текстура должна лежать в assets/modid/любой/путь и называться текстура, быть в формате .png.
 
Не вышло(
Текстуру вроде загрузило, но не отображается(
В чём может быть дело?
Код:
        GL11.glPushMatrix();
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

        Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("industrialguns", "models/guns/ak47.png"));
        this.model.render();
        GL11.glPopMatrix();
 
Убедиться что ты его кидаешь:
Код:
"\resources\assets\industrialguns\models\guns\ak47.png"
А не:
Код:
"\resources\assets\industrialguns\textures\models\guns\ak47.png"
 
timaxa007 написал(а):
Убедиться что ты его кидаешь:
Код:
"\resources\assets\industrialguns\models\guns\ak47.png"
А не:
Код:
"\resources\assets\industrialguns\textures\models\guns\ak47.png"

Код:
C:\Users\Roman\Desktop\Java\forge\src\main\resources\assets\industrialguns\models\guns
И вот
Код:
        Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("industrialguns", "models/guns/ak47.png"));
[merge_posts_bbcode]Добавлено: 29.03.2015 19:55:12[/merge_posts_bbcode]

GloomyFolken написал(а):
А что у тебя отображается? Черно-фиолетовая текстура?
Белая модель.
 
GL11.glEnable(GL11.GL_TEXTURE_2D);
попробуй это перед рендерингом написать. Если не грузится текстура, то модель должна быть черно-фиолетовой.
 
Это просто пиз*ец короче, я еле здерживаюсь что-бы не разбить клавиатуру.
Надо пойти успокоить нервы.

Ставлю модель, грузится.
Решил поставить другую, абсолютно такой-же путь, с таким-же, мать его, названием, какого х*я, это ху**ища, не находит, бл*дь, его.
[merge_posts_bbcode]Добавлено: 29.03.2015 20:56:58[/merge_posts_bbcode]

Рендеринг - сущий Ад.
 
Не, люди, ну это уже вообще...
Вот верите? Зашел, целенаправленно, приготовившись храбро сражаться с рендерингом и...
Сработало, сработало, как так-то, я же ничего не менял...
Может бог глумится надомной, может рендеринг испугался и решил сдаться... Загадка вообщем.

Кстати, может я совершил глупость, но заметил, что я GLLoader использую.
Он может загружать obj и mlt, а самое интересное, что он из задницы текстуры берёт. Они, походу, каким-то раком привязаны к модели. Либо он вместе с obj и mlt попутно загружает или текстуры к obj привязаны.

Суфо Глуми, жду и надеюсь на твою мудрость.
[merge_posts_bbcode]Добавлено: 30.03.2015 00:25:47[/merge_posts_bbcode]

Забыл сказать: модель содержит лишь путь, видимо, а сама развёртка лежит вместе с ней (.png)

[merge_posts_bbcode]Добавлено: 30.03.2015 00:28:19[/merge_posts_bbcode]

Хм, похоже на закономерность...

Завтра разберусь, походу, я выдрал GLLoader, с модификацией, которая сама текстуру ищет...
 
.mtl - файл материалов для obj модели. В нем хранятся пути к текстурам и ещё кое-какие цифры. Это обычный тестовый файл, самая удобная утилита для редактирования - блокнот. 

GLloader в отличие от форджевского загрузчика читает mtl и берет текстуру оттуда, использовать bindTexture нет смысла. Я, кажется, уже рассказывал про его проблемы с загрузкой текстур. Лучше всё-таки использовать форджевский загрузчик. Пользоваться им так:
Код:
IModelCustom model = AdvancedModelLoader.loadModel("/assets/industrialguns/models/weapons/model.obj");
 
GloomyFolken написал(а):
.mtl - файл материалов для obj модели. В нем хранятся пути к текстурам и ещё кое-какие цифры. Это обычный тестовый файл, самая удобная утилита для редактирования - блокнот. 

GLloader в отличие от форджевского загрузчика читает mtl и берет текстуру оттуда, использовать bindTexture нет смысла. Я, кажется, уже рассказывал про его проблемы с загрузкой текстур. Лучше всё-таки использовать форджевский загрузчик. Пользоваться им так:
Код:
IModelCustom model = AdvancedModelLoader.loadModel("/assets/industrialguns/models/weapons/model.obj");
Но он не грузит больше 1000 полигонов, лучше уж GLLoader использовать.
[merge_posts_bbcode]Добавлено: 30.03.2015 11:59:42[/merge_posts_bbcode]

Это самый простой вариант для меня, т.к. я не в курсе, как происходит загрузка моделей, что за dispay листы, он которых ты писал, я о них даже инфы в интернете не нашел(
 
Ставлю десять против одного, что даже с GLLoader'ом ты все равно не используешь makeDisplayList() и модель рендерится точно так же, как с форджевским лоадером :p
 
GloomyFolken написал(а):
Ставлю десять против одного, что даже с GLLoader'ом ты все равно не используешь makeDisplayList() и модель рендерится точно так же, как с форджевским лоадером :p
Главное что-бы выше 1000 полигонов)
[merge_posts_bbcode]Добавлено: 30.03.2015 12:22:50[/merge_posts_bbcode]

Если научусь этому, сделаю лучше, а пока - я ничего с этим поделать не могу, не без 3D делать-же)
 
У форджевского лоадера нет ограничения на количество полигонов, просто фпс заметно снижается с ростом числа треугольников.
 
Развертка, это не текстура. Развертку можно вносить отдельно, а можно сразу вместе с точками через tesselator, вот пример развертки
CZDA3cpJFO4A83RIG81hgQ8kuyzROl.png

Это карта точек, которая берет с текстуры куски текстуры и растягивает их на полигон.
http://www.minecraftforge.net/wiki/Tessellator
addVertex( x, y, z ); //добавить точку
addVertexWithUV( x, y, z, U, V ); //добавить точку и точку UV
UV - имеют диапозон от 0 до 1.
Представьте себе текстуру, и какой бы не был её размер, её максимальная точка будет равна по U (горизонт) будет 1, соответственно V (вертикаль) тоже 1.
В приложенном мною картинке, эти точки можно определить даже просто на глаз. Но при множестве деталей, конечно на глаз не подойдет.

для более правильного восприятия, лучше почитать "уроки nehe" (забей в гугл волчица, твои пряности там ;) ). Он написал 24 урока по OpenGL.
Там есть и про создание список DisplayList
Их назначение простое. Каждый раз вы рисуете то что должно отобразиться на экране в 3д пространстве, каждый божий тик. Но перед тем как нарисовать ваши OpenGL команды их приходиться компилировать в код понятный видео-карте. Естественно это, вызывает нагрузку. Список же, это статический объект, который уже создан в виде нужного для видеокарты кода. За счет этого, сколько бы раз мы неотрисовали список, он отображается (почти) могновенно.
Из личного примера, таким образом я рисовал оружие(к примеру вот этот самый автомат) у мобов(игроков). То есть 25 игроков на экране, 10 из них с автоматом. 10 раз нарисовать автомат - это серьезная проблема, а уже в скомпилированном виде, это мгновенно. ;)
 
Назад
Сверху