Модераторы: Rickert, Alexeis, BorisVorontsov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сцена и объекты на ней 
:(
    Опции темы
Reptor
Дата 8.10.2008, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



вот... проблема у меня такого характера...
Я хочу нарисовать местность похожую на реальность.. тоесть чтоб было небо земля на земле дорогт и тротуары...а надороге например светофоры. Но я пока не могу понять как это сделать что б красиво выглядело..что б объекты были не очень большими и не очень маленькими.. ну как бы всё было в меру..

Вот у меня сейчас есть координаты дороги (это как бы структура дороги).
ну например вот будет одна сторона перекрёстка.

т1(400, 500, 0)
т1(600, 500, 0)
т1(600, 300, 0)
т1(400, 300, 0)

 вот перекрёсток я нарисовал.. таким образом...взял самую большую координату и сказал что это будет 1 в опенГЛ там же от -1 до 1 вот в примере это будет 600. И рисовал точки таким образом через GL_POLYGON. Тут как бы находил через пропорцию

600 - 1
400 - х  и значит точка с координатой  400, 500, 0 это будет (400/600, 500/600, 0) вот но тут этот перекрёсток рисеутся но по У вниз уежает надо его ловить.. сразу его не видно . Нарисовал светофор в виде куба получился какойто огромный размером с камаз...

Вот если ав играли в игры то видели как так если со стороны игрока смореть например GTA там какой город...

видел что небо и землю можно сделать 2-умя огромными квадратами и наложить на них текстуру...


Помогите пожалуста с чего начать и как двигаться что б сделать сценку с нормальным видом.. ? smile 

Я всё понемногу знаю а вот как с этого сделать что то стоящие то пока не знаю ... и не знаю как поступить в том или 2-ом случаи
PM MAIL ICQ   Вверх
Rickert
Дата 8.10.2008, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 2
Всего: 52



И теперь у нас всё время шесть часов, и всё время пора пить чай smile

Добавлено через 3 минуты и 3 секунды
Уважаемый, давайте по пунктам перечислите проблемы. Медленно, обдумывая каждое слово, и перед постом перечитав свой текст несколько десятков раз. А то вот лично я понял что две проблемы:
0) Вы не знаете как сохранить соответствие пропорций. Тут ответ прост - вы выбираете некую меру, допустим 1 единица числа типа float = 1 метру. Исходя из этого вы делаете модели, экспортируете их, или же рисуете сами (я понял что вы вроде так светофор сделали).
1) Вы не знаете с какой стороны и за что взяться в вашем вопросе. В этом слуае опиши задачу чётко smile 

Это сообщение отредактировал(а) Rickert - 8.10.2008, 14:33


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Reptor
Дата 8.10.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Rickert, извеняюсь за некоректные посты просто у меня мысли все поперепутывались.. не знаю за что взяться...

Значит так.

Я хочу для начала сделать какойто пейзаж ну что б была какаято земля (ну обычный асвальт) и небо.  Потом на этом асвальте нарисовать дорогу ну мой перекрёсток который у меня задан вот теми координатами которые я привел в первом примере. И на этот перекрёсток добавить светофоры.

Вот я отыскал какуюто картинку (в атаче) там конесно всё красиво но мне вот не так уж клёво можно всё попроще но конечно в идеале было б неплохо и что то вроде этого.
Я не знаю с чего начать... как декомпозировать задачу и что за чем делать и как правильно делаь?

у меня всё какоето кривое выходит без соответствия размерам. Так как координаты экранные x=600 a y=500 то изображение кудато убегает и непонятно дн его искать.. Светофор большой (как камаз). Короче дурдом а не сцена и всё на какомто зелёном фоне.

Это сообщение отредактировал(а) Reptor - 8.10.2008, 15:22

Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  untitled1.rar 3,24 Kb
PM MAIL ICQ   Вверх
Reptor
Дата 8.10.2008, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Ой только что посмотрел картинку и увидел что она поломана... странно.. то что у меня то тоже уже чорная.. може скачалась как то плохо..

Ну тогда без картинки... там собственно ничего такого просто местность нарисована.
PM MAIL ICQ   Вверх
Rickert
Дата 9.10.2008, 06:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 2
Всего: 52



Короче я буду задавать вопросы, а вы отвечайте: вам нужно двухмерное изображение или трёхмерное?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Reptor
Дата 9.10.2008, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Rickert, спасибо огромное.

Мне нужно изображение 3-оьх мерное... но информация (точки) по которым будет происходить прорисовка дороги 2-ух мерные (экранные). Как в примере который я наводил. т1(400,500)....
PM MAIL ICQ   Вверх
Rickert
Дата 9.10.2008, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 2
Всего: 52



Значит так, тормозим и делаем всё последовательно.
Сначала небо. Проще всего его сделать через skyBox.
Берём в руки поисковик и пишем там что-нибудь типа "как реализовать skybox".
Также идём поиском на www.gamedev.ru
Вот вам одна прямая ссылка - http://sidvind.com/wiki/Skybox_tutorial

По сути skybox - Это коробка, внутри которой находится вся сцена. Текстура этой коробки - это текстра неба, либо ещё какого-то окружения. Коробка движется вместе с камерой.

Теперь остановитесь, не метайтесь, а сделайте сначала skybox, потом пойдём дальше. Буду вашим гидом в создании ВР smile 


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Reptor
Дата 9.10.2008, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Rickert, это я посмотрел и понял идею... мы делаем просто коробку в которую потом всё поместим...
Но я взял тот код который по той ссылке.. и зделал но у меня не вышло иак красиво как там..

вот тут я загрузил текстуры. (тут пока код не очень красив я знаю что его надо переделать - не ругайте)
Код

GLvoid LoadGLTextures(){
    
    AUX_RGBImageRec *texture1;
    texture1 = auxDIBImageLoad("Ground.bmp");
    glGenTextures(1,&texture[0]);
    glBindTexture(GL_TEXTURE_2D, texture[0]);

    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);

    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,GL_RGB, GL_UNSIGNED_BYTE, texture1->data);

    texture1 = auxDIBImageLoad("t1.bmp");
    glGenTextures(1,&texture[1]);
    glBindTexture(GL_TEXTURE_2D, texture[1]);

    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);

    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,GL_RGB, GL_UNSIGNED_BYTE, texture1->data);


    texture1 = auxDIBImageLoad("t2.bmp");
    glGenTextures(1,&texture[2]);
    glBindTexture(GL_TEXTURE_2D, texture[2]);

    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);

    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,GL_RGB, GL_UNSIGNED_BYTE, texture1->data);

    texture1 = auxDIBImageLoad("t3.bmp");
    glGenTextures(1,&texture[3]);
    glBindTexture(GL_TEXTURE_2D, texture[3]);

    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);

    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,GL_RGB, GL_UNSIGNED_BYTE, texture1->data);

    texture1 = auxDIBImageLoad("t4.bmp");
    glGenTextures(1,&texture[4]);
    glBindTexture(GL_TEXTURE_2D, texture[4]);

    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);

    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,GL_RGB, GL_UNSIGNED_BYTE, texture1->data);

    texture1 = auxDIBImageLoad("t5.bmp");
    glGenTextures(1,&texture[5]);
    glBindTexture(GL_TEXTURE_2D, texture[5]);

    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);

    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,GL_RGB, GL_UNSIGNED_BYTE, texture1->data);

    texture1 = auxDIBImageLoad("t6.bmp");
    glGenTextures(1,&texture[6]);
    glBindTexture(GL_TEXTURE_2D, texture[6]);

    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);

    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,GL_RGB, GL_UNSIGNED_BYTE, texture1->data);

}


а вот собственно то де я рисую. Координаты камеры я меняю при нажатии на кнопки и делаю к переменным +0.1 или -0.1

Код

int DrawGLScene(GLvoid)                                    // Here's Where We Do All The Drawing
{

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);

      // Store the current matrix
    glPushMatrix();

    // Reset and transform the matrix.
    glLoadIdentity();
    gluLookAt(
        0,0,0,
        xtranslate,ytranslate,ztranslate,
        0,1,0);

    // Enable/Disable features
    glPushAttrib(GL_ENABLE_BIT);
    glEnable(GL_TEXTURE_2D);
    glDisable(GL_DEPTH_TEST);
    glDisable(GL_LIGHTING);
    glDisable(GL_BLEND);

    // Just in case we set all vertices to white.
    glColor4f(1,1,1,1);

    // Render the front quad
    glBindTexture(GL_TEXTURE_2D, texture[1]);
    glBegin(GL_QUADS);
        glTexCoord2f(0, 0); glVertex3f(  0.5f, -0.5f, -0.5f );
        glTexCoord2f(1, 0); glVertex3f( -0.5f, -0.5f, -0.5f );
        glTexCoord2f(1, 1); glVertex3f( -0.5f,  0.5f, -0.5f );
        glTexCoord2f(0, 1); glVertex3f(  0.5f,  0.5f, -0.5f );
    glEnd();

    // Render the left quad
    glBindTexture(GL_TEXTURE_2D, texture[2]);
    glBegin(GL_QUADS);
        glTexCoord2f(0, 0); glVertex3f(  0.5f, -0.5f,  0.5f );
        glTexCoord2f(1, 0); glVertex3f(  0.5f, -0.5f, -0.5f );
        glTexCoord2f(1, 1); glVertex3f(  0.5f,  0.5f, -0.5f );
        glTexCoord2f(0, 1); glVertex3f(  0.5f,  0.5f,  0.5f );
    glEnd();

    // Render the back quad
    glBindTexture(GL_TEXTURE_2D, texture[3]);
    glBegin(GL_QUADS);
        glTexCoord2f(0, 0); glVertex3f( -0.5f, -0.5f,  0.5f );
        glTexCoord2f(1, 0); glVertex3f(  0.5f, -0.5f,  0.5f );
        glTexCoord2f(1, 1); glVertex3f(  0.5f,  0.5f,  0.5f );
        glTexCoord2f(0, 1); glVertex3f( -0.5f,  0.5f,  0.5f );

    glEnd();

    // Render the right quad
    glBindTexture(GL_TEXTURE_2D, texture[4]);
    glBegin(GL_QUADS);
        glTexCoord2f(0, 0); glVertex3f( -0.5f, -0.5f, -0.5f );
        glTexCoord2f(1, 0); glVertex3f( -0.5f, -0.5f,  0.5f );
        glTexCoord2f(1, 1); glVertex3f( -0.5f,  0.5f,  0.5f );
        glTexCoord2f(0, 1); glVertex3f( -0.5f,  0.5f, -0.5f );
    glEnd();

    // Render the top quad
    glBindTexture(GL_TEXTURE_2D, texture[5]);
    glBegin(GL_QUADS);
        glTexCoord2f(0, 1); glVertex3f( -0.5f,  0.5f, -0.5f );
        glTexCoord2f(0, 0); glVertex3f( -0.5f,  0.5f,  0.5f );
        glTexCoord2f(1, 0); glVertex3f(  0.5f,  0.5f,  0.5f );
        glTexCoord2f(1, 1); glVertex3f(  0.5f,  0.5f, -0.5f );
    glEnd();

    // Render the bottom quad
    glBindTexture(GL_TEXTURE_2D, texture[6]);
    glBegin(GL_QUADS);
        glTexCoord2f(0, 0); glVertex3f( -0.5f, -0.5f, -0.5f );
        glTexCoord2f(0, 1); glVertex3f( -0.5f, -0.5f,  0.5f );
        glTexCoord2f(1, 1); glVertex3f(  0.5f, -0.5f,  0.5f );
        glTexCoord2f(1, 0); glVertex3f(  0.5f, -0.5f, -0.5f );
    glEnd();

    // Restore enable bits and matrix
    glPopAttrib();
    glPopMatrix();

    


    return TRUE;                                        // Everything Went OK
}




а вот картинка в атаче то что у меня получилось.  И добпавил картинки для коробки

Это сообщение отредактировал(а) Reptor - 9.10.2008, 13:05

Присоединённый файл ( Кол-во скачиваний: 21 )
Присоединённый файл  3DModel_v0.1.2.rar 167,83 Kb
PM MAIL ICQ   Вверх
Rickert
Дата 9.10.2008, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 2
Всего: 52



Reptor, А что тебя удивляет? Квадраты? Во-первых вы поставили такой тип фильтрации: GL_NEAREST.
Код
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_NEAREST);

Меняем на GL_LINEAR:
Код
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR);

К тому же у вас изображения размером 64х64 - это вообще убийство. В современных графических проектах используется минимум 256х256.
После этого идём на www.progz.ru, в статьях по OpenGL глава 9 посвящена текстурированию. Вообще советую вам всем там статьи прочитать - очень многое узнаете. + к этому идите на http://pmg-ru.narod.ru/russian/nehe/index.html - здесь есть уроки по OpenGL последовательные. Для старта поможет сильно.




--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Reptor
Дата 9.10.2008, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



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

 smile   не понимаю

вот как там на картинке с ящиками в статье про SkyBox

Это сообщение отредактировал(а) Reptor - 9.10.2008, 15:54
PM MAIL ICQ   Вверх
Reptor
Дата 9.10.2008, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



http://www.gamedev.ru/articles/?id=60113&page=2

вот тут вторая картинка (небо, дорога, домики) - это то что я хочу сделать у себя... что б можно было приблежать, отдалять, перемещаться...

Это сообщение отредактировал(а) Reptor - 9.10.2008, 16:48
PM MAIL ICQ   Вверх
Reptor
Дата 9.10.2008, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Rickert,  до меня наконецто тугодума дошло что у меня всё верно выходило со SkyBox. Я отыскал ещё один хороший пример и разобрал его детально и понял что вотето всё пространство (что я не мог понять от куда оно) всего лиш илюзия и грамотно нарисованые картинки. 

Но тут у меня возникают новые непонятки...как это бокс поможет мне?? это ж на самом та деле такое маленькое пространство...как сделать так как на той картинке (что по линке на gamedev)?? 

У меня одна мысля по этому поводу - просто увеличивать квадраты из которых бокс зделан.

Rickert, поправьте если что не так. И от сюда такие вопросы
Что делать дальше? Бокс мне подходит? делать его с нужными мне текстурами (более большим)? а потом к следующему этапу..
PM MAIL ICQ   Вверх
Rickert
Дата 10.10.2008, 03:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 2
Всего: 52



Reptor, у тебя бокс будет двигаться вместе с камерой, таким образом получится, что пространство всё время будет находится вокруг тебя.
Вторая картинка - это тоже вариант создания среды. Как она сделана? Постоянно рисуется плоскость над тобой - небо и добавлен туман, чтобы не видеть конца горизонта.
SkyBox можно и не тоскать за камерой, а просто сделать его неприлично большим.
Если разобрался с ним можем переходить к следующему вопросу?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Reptor
Дата 10.10.2008, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Rickert, да я разобрался со SkyBox... вот только я пока не понимаю как я в него помещу свои объекты. Зделать его большим или тоскать за камерой... мне сложно всё пока представить..
PM MAIL ICQ   Вверх
Reptor
Дата 10.10.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Rickert, в прикреплёном файле то что у меня получилось....

От сюда замечания такие что
1. плохое качество картинок (256х256) и когда фулскрин - не очень красиво...
2. и опять же проблема в том что я не понимаю как я тут размещу свои объекты... ведь это передо мной то на самом деле просто стены с грамотными текстурами..  smile 


ну собственно это наверно и будет следущий шаг. 

Цитата

Если разобрался с ним можем переходить к следующему вопросу?


да я думаю можно


Это сообщение отредактировал(а) Reptor - 10.10.2008, 14:21

Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  3DModel_v0.1.2.rar 496,82 Kb
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0597 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.