Вставка изображения

Комментарии (25)

rss свернуть / развернуть
Урок не доделан до конца! Есть некоторые ошибки!

свернуть ветку
на счет «не до конца» — можно по подробнее?

свернуть ветку
Кароче делал все уроки по порядку, всё получалось, но когда дошёл до этого,
оказалось что есть не всё функции, процедуры и даже переменные(К ним ображаются, а их нету).Одну я написал и с переменными разобрался, но
несколько функций так и не сделал.Много раз пересматривал код, но их не нашёл.

свернуть ветку
Ок, понял. Постараюсь на днях посмотреть и поправить. Спасибо за наводку (:

свернуть ветку
Я проглядел — кажется не хватало только реализации класса
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))
{



Так же заменил рисунок 3 на странице esate.ru/page/zagruzka-trehmernyh-modeley-v-opengl (экспорт модели в формате ase)

Обновленное изображение

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


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»

З.Ы.
Код этого урока немного подкорректирован. В ближайшие часы появится ссылка на загрузку исходных кодов проекта.
В случае возникновения дополнительных проблем — прошу отписать сюда.

свернуть ветку
выложил исходный код (ссылка внизу второй части урока).

свернуть ветку
Вот теперь всё работает отлично! Ещё вопрос: А будет ли урок по созданию
своей 3D игры?

свернуть ветку
*секретная информация* :)
планируется цикл уроков, в котором будет описано создание небольшой 3д игры
Но придется подождать.
Если интересны новые уроки — но на главной можно посмотреть видео урока с системой частиц (взрыв) ну и сам урок почитать :)

свернуть ветку
У меня хоть убей не видит Devil.dll. Скопировал данную библиотеку в систем32, в корневую винды, в папку проекта, но он ее в упор не видит. Подключал ссылку из всех этих мест. Ничего не помогает, библиотеку так и не видно…

свернуть ветку
на это жаловались уже. Вроде проблема все же решается

свернуть ветку
заменил исходный код проекта (предыдущий был немного косячный)

свернуть ветку
  • avatar
  • Sago
  • 15 ноября 2010, 17:42
  • #
  • 0
Скажи а ты заменил только исходный код для скачки, или теорию тоже?

свернуть ветку
Уже не помню, но теория вроде правилась параллельно с заменой кода проекта.

свернуть ветку
комментарий был удален
У меня предложение по поводу использования StreamReader:

// начинаем чтение файла
StreamReader sw = new StreamReader(FileName, Encoding.Default);

вместо

// начинаем чтение файла 
StreamReader sw = File.OpenText(FileName);

Просто File.OpenText(FileName) у меня не видел русские буквы в строке адрес текстуры.

Я использовал класс для загрузки модели на текстурированную плоскость(типо ландшафт), только столкнулся с проблемой, что модель не текстурируется(текстурируется только первый Box модели текстурой ландшафта), плиз подскажите в чем может быть причина?(если можно)
загрузка текстуры кодом из урока про текстурирование без измений.

свернуть ветку
хмм… Вы второй кто жалуется, что жалуется на то, что текстурируется только первый суб-объект (трехмерная модель может содержать ряд подобъектов).

Хотя я обкатывал на одном проекте загрузчик, и он текстурировал все части модели. Надо перепроверить, возможно случайно закрался баг.

На счет StreamReader — да, с кодировкой наверно будет по лучше. Сейчас добавлю, чтобы потом не забыть.

свернуть ветку
Я разобрался причина моих бедствий в софте «3d object converter» который при экспорте модели не использует в файле метку *MATERIAL_REF 0, хотя сам «3d object converter» грузит с текстурой.

Просто модели мне сделали в 3D Cybermotion(я в 3D моделинге дуб дубом), а он не умеет сохранять в .ase. Вот и пришлось конвертировать.

У меня был переконвертированный несколько раз и в конечном итоге экспортированный 3DMaxом, но модель оказалась в 800 раз больше, чем надо. А я не заметил, думал просто модель не грузиться))))
Но когда все разобрал и модель с Текстурой загрузилась на ландшафте, половина текстуры на ландшафте растянулась.Имено в том метсе где загрузилась модель. Ландшафт(типо) квадратный и ваще нарисован одним Quads
, но один из треугольников(если Quads рисовать 2-мя треугольниками) с растянутой текстурой(((((((
Теперь буду с этой проблемой воевать.
А с классом все в паряде! Работает на славу))

свернуть ветку
загружаю модель с meshsmooth`oм, и она меня вся квадратненькая, нету сглаживания, это так и должно? или надо какой-то флаг сглаживания в opengl включить?

свернуть ветку
Для сглаживание в OpenGL, вроде нужно создать окно с определенным форматом пикселей и включить расширение GL_ARB_MULTISAMPLE.

свернуть ветку
Разобрался в чем причина растягивания ландшафта, просто я делал по примеру в уроке про текстурирования, а там в неправильном порядке указывались атрибуты вершин.
Нужно сначала задавать атрибуты — текстурные координаты, нормали…
а потом сами вершины.
Gl.glVertex3d(1, 1, 0);// неверно
Gl.glTexCoord2f(0, 0);

Gl.glTexCoord2f(0, 0);
Gl.glVertex3d(1, 1, 0);// верно

свернуть ветку
Я попробовал загрузить другой 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))//Место возникновения ошибки

Подскажите решение проблемы и с чем это может быть связанно, заранее спасибо.

свернуть ветку
Вопрос закрыт, моя дурная голова пропустила инициализацию Devil *Wall*

свернуть ветку
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.