Кароче делал все уроки по порядку, всё получалось, но когда дошёл до этого,
оказалось что есть не всё функции, процедуры и даже переменные(К ним ображаются, а их нету).Одну я написал и с переменными разобрался, но
несколько функций так и не сделал.Много раз пересматривал код, но их не нашёл.
свернуть ветку
Я проглядел — кажется не хватало только реализации класса
public class Model_Prop
(Я добавил его в первую часть урока). Это было связанно с тем, что класс для загрузки трехмерной модели раньше имел более сложную реализацию. Она была упрощена, но к сожалению наскоро, за что извиняюсь (:
Помимо этого была добавлена заплатка в класс функции CreateList:
...
int nom_index = limbs[l].GetTextureNom();
bool textureIsSet = false; // флаг о том, что мы текстурируем объект
if( nom_index > -1) // проверяем более корректно
if (limbs[l].NeedTexture() && text_objects[nom_index] != null)
...
float n4 = (float)Math.Sqrt(n1 * n1 + n2 * n2 + n3 * n3);
n1 /= n4;
n2 /= n4;
n3 /= n4;
Gl.glNormal3f(n1, n2, n3);
// здесь появился флаг textureIsSet
// если установлена текстура
if(textureIsSet)
if (limbs[l].NeedTexture() && (limbs[l].t_vert != null) && (limbs[l].t_face != null))
{
Еще прошу обратить внимание на то, что адрес, по которому забираются текстуры формируется следующим образом:
public void LoadTextureForModel()
{
Il.ilGenImages(1, out imageId);
Il.ilBindImage(imageId);
string url = "";
url = Directory.GetCurrentDirectory();
url += "\\";
url += texture_name;
if (Il.ilLoadImage(url))
...
Таким образом, к примеру в моей папке с проектом адрес текстуры это
«C:\\Users\\Anvi\\Desktop\\Исходные коды проектов\\3д модель\\Model\\bin\\x86\\Debug\\»
и здесь лежит текстура. Но при создании модели в максе, последующем текстурировании и экспорте, в файл *.ase записался абсолютный адрес изображения, что необходимо вручную подредактировать в строке (или строках) файла с вашей 3д моделью
например
*BITMAP «C:\Users\Anvi\Desktop\3-13.png»
я отредактировал на
*BITMAP «3-13.png»
З.Ы.
Код этого урока немного подкорректирован. В ближайшие часы появится ссылка на загрузку исходных кодов проекта.
В случае возникновения дополнительных проблем — прошу отписать сюда.
свернуть ветку
*секретная информация* :)
планируется цикл уроков, в котором будет описано создание небольшой 3д игры
Но придется подождать.
Если интересны новые уроки — но на главной можно посмотреть видео урока с системой частиц (взрыв) ну и сам урок почитать :)
свернуть ветку
У меня хоть убей не видит Devil.dll. Скопировал данную библиотеку в систем32, в корневую винды, в папку проекта, но он ее в упор не видит. Подключал ссылку из всех этих мест. Ничего не помогает, библиотеку так и не видно…
свернуть ветку
Просто File.OpenText(FileName) у меня не видел русские буквы в строке адрес текстуры.
Я использовал класс для загрузки модели на текстурированную плоскость(типо ландшафт), только столкнулся с проблемой, что модель не текстурируется(текстурируется только первый Box модели текстурой ландшафта), плиз подскажите в чем может быть причина?(если можно)
загрузка текстуры кодом из урока про текстурирование без измений.
свернуть ветку
Я разобрался причина моих бедствий в софте «3d object converter» который при экспорте модели не использует в файле метку *MATERIAL_REF 0, хотя сам «3d object converter» грузит с текстурой.
Просто модели мне сделали в 3D Cybermotion(я в 3D моделинге дуб дубом), а он не умеет сохранять в .ase. Вот и пришлось конвертировать.
У меня был переконвертированный несколько раз и в конечном итоге экспортированный 3DMaxом, но модель оказалась в 800 раз больше, чем надо. А я не заметил, думал просто модель не грузиться))))
Но когда все разобрал и модель с Текстурой загрузилась на ландшафте, половина текстуры на ландшафте растянулась.Имено в том метсе где загрузилась модель. Ландшафт(типо) квадратный и ваще нарисован одним Quads
, но один из треугольников(если Quads рисовать 2-мя треугольниками) с растянутой текстурой(((((((
Теперь буду с этой проблемой воевать.
А с классом все в паряде! Работает на славу))
свернуть ветку
загружаю модель с meshsmooth`oм, и она меня вся квадратненькая, нету сглаживания, это так и должно? или надо какой-то флаг сглаживания в opengl включить?
свернуть ветку
Разобрался в чем причина растягивания ландшафта, просто я делал по примеру в уроке про текстурирования, а там в неправильном порядке указывались атрибуты вершин.
Нужно сначала задавать атрибуты — текстурные координаты, нормали…
а потом сами вершины.
Я попробовал загрузить другой ASE файл (не из примера). В нем заменил текстуру на фотографию. При отображение текстуры, все цвета стали в «негативными» (синими). В чем может быть проблема? Спасибо за уроки!
свернуть ветку
Так что делать то если модель не текстурируется, а вместо нормальных текстур на модели оказывается ландшафт(фон)? Есть подозрение на то, что 3d Max при конвертировании в ASE заменяет битмапы правильных текстур изображением ландшафта. Очень нужно решение этой проблемы.
свернуть ветку
Здравствуйте, воспользовался вашим уроком, скачал исходник, все работает, но есть одно маленькое НО: При помещении всех этих классов в другой проект обычные модели грузятся, но на загрузке модели с текстурами выпадает :«Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.»
После отладки выявилось, что:
public void LoadTextureForModel(string FileName)
{
Il.ilGenImages(1, out imageId); //Здесь imageId остается всегда на нуле
Il.ilBindImage(imageId);
string url = "";
url = Directory.GetCurrentDirectory();
url += "\\";
url += texture_name;
if (Il.ilLoadImage(url))//Место возникновения ошибки
Подскажите решение проблемы и с чем это может быть связанно, заранее спасибо.
свернуть ветку
Комментарии (25)
rss свернуть / развернутьсвернуть ветку
свернуть ветку
оказалось что есть не всё функции, процедуры и даже переменные(К ним ображаются, а их нету).Одну я написал и с переменными разобрался, но
несколько функций так и не сделал.Много раз пересматривал код, но их не нашёл.
свернуть ветку
свернуть ветку
public class Model_Prop
(Я добавил его в первую часть урока). Это было связанно с тем, что класс для загрузки трехмерной модели раньше имел более сложную реализацию. Она была упрощена, но к сожалению наскоро, за что извиняюсь (:
Помимо этого была добавлена заплатка в класс функции CreateList:
Так же заменил рисунок 3 на странице esate.ru/page/zagruzka-trehmernyh-modeley-v-opengl (экспорт модели в формате ase)
Еще прошу обратить внимание на то, что адрес, по которому забираются текстуры формируется следующим образом:
Таким образом, к примеру в моей папке с проектом адрес текстуры это
«C:\\Users\\Anvi\\Desktop\\Исходные коды проектов\\3д модель\\Model\\bin\\x86\\Debug\\»
и здесь лежит текстура. Но при создании модели в максе, последующем текстурировании и экспорте, в файл *.ase записался абсолютный адрес изображения, что необходимо вручную подредактировать в строке (или строках) файла с вашей 3д моделью
например
*BITMAP «C:\Users\Anvi\Desktop\3-13.png»
я отредактировал на
*BITMAP «3-13.png»
З.Ы.
Код этого урока немного подкорректирован. В ближайшие часы появится ссылка на загрузку исходных кодов проекта.
В случае возникновения дополнительных проблем — прошу отписать сюда.
свернуть ветку
свернуть ветку
своей 3D игры?
свернуть ветку
планируется цикл уроков, в котором будет описано создание небольшой 3д игры
Но придется подождать.
Если интересны новые уроки — но на главной можно посмотреть видео урока с системой частиц (взрыв) ну и сам урок почитать :)
свернуть ветку
свернуть ветку
свернуть ветку
свернуть ветку
свернуть ветку
свернуть ветку
свернуть ветку
вместо
Просто File.OpenText(FileName) у меня не видел русские буквы в строке адрес текстуры.
Я использовал класс для загрузки модели на текстурированную плоскость(типо ландшафт), только столкнулся с проблемой, что модель не текстурируется(текстурируется только первый Box модели текстурой ландшафта), плиз подскажите в чем может быть причина?(если можно)
загрузка текстуры кодом из урока про текстурирование без измений.
свернуть ветку
Хотя я обкатывал на одном проекте загрузчик, и он текстурировал все части модели. Надо перепроверить, возможно случайно закрался баг.
На счет StreamReader — да, с кодировкой наверно будет по лучше. Сейчас добавлю, чтобы потом не забыть.
свернуть ветку
Просто модели мне сделали в 3D Cybermotion(я в 3D моделинге дуб дубом), а он не умеет сохранять в .ase. Вот и пришлось конвертировать.
У меня был переконвертированный несколько раз и в конечном итоге экспортированный 3DMaxом, но модель оказалась в 800 раз больше, чем надо. А я не заметил, думал просто модель не грузиться))))
Но когда все разобрал и модель с Текстурой загрузилась на ландшафте, половина текстуры на ландшафте растянулась.Имено в том метсе где загрузилась модель. Ландшафт(типо) квадратный и ваще нарисован одним Quads
, но один из треугольников(если Quads рисовать 2-мя треугольниками) с растянутой текстурой(((((((
Теперь буду с этой проблемой воевать.
А с классом все в паряде! Работает на славу))
свернуть ветку
свернуть ветку
свернуть ветку
Нужно сначала задавать атрибуты — текстурные координаты, нормали…
а потом сами вершины.
свернуть ветку
свернуть ветку
свернуть ветку
После отладки выявилось, что:
Подскажите решение проблемы и с чем это может быть связанно, заранее спасибо.
свернуть ветку
свернуть ветку