Модераторы: 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   Вверх
Rickert
Дата 10.10.2008, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor, я предлогаю тебе бросать мне скомпилированный файл, потому что ты используешь glaux, а у меня его нет. Зачем тебе подключать библиотеки сокетов и mysql?

Цитата(Reptor @  10.10.2008,  14:18 Найти цитируемый пост)
2. и опять же проблема в том что я не понимаю как я тут размещу свои объекты... ведь это передо мной то на самом деле просто стены с грамотными текстурами..

Я так понял у тебя куб сейчас размером [-0.5; 0.5] по всем координатам?
Естественно, это слишком малый куб. Делай его в интервале от [-100; 100] хотя бы.
+ кинь скомпилированный файл (с ресурсами, естественно - куртинками).
Дальше что нам надо добавить в сцену говори?


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


Эксперт
***


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

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



Rickert, прикрепил экзешник.

Цитата

Зачем тебе подключать библиотеки сокетов и mysql?

а у меня а БД есть информацыия про объекты (координаты дороги)

Цитата

Я так понял у тебя куб сейчас размером [-0.5; 0.5] по всем координатам?
Естественно, это слишком малый куб. Делай его в интервале от [-100; 100] хотя бы.


он у меня сейчас -10 до 10. Я этот старый с плохими картинками переделал (там был  [-0.5; 0.5]). А сейчас отыскал картинки ... Во тут ещё вопрос есть ли какието проги что б самому рисовать SkyBox. так как готовые не всегда подходят. 

Переделаю куб.

Цитата

Дальше что нам надо добавить в сцену говори? 



вот тут и нужен MySQL. Rickert, теперь в БД у меня есть дорога которая кем то была нарисована в экранных координатах. 
Они имеют такой вид (как пример)

т1(400, 500, 0)
т2(300, 500, 0)
т3(300, 300, 0)
т4(400, 300, 0)

эти точки соединяя линиями и получим дорогу (это может быть обычный перекрёсток или так Т-образный или как то более большой участок дороги). 

Достать из базы точки я их могу. Собственно теперь надо этот участок дороги добавить на сцену (нарисовать). Что б была дорога на земле.








 

Это сообщение отредактировал(а) Reptor - 11.10.2008, 17:44

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  file.rar 539,20 Kb
PM MAIL ICQ   Вверх
Rickert
Дата 11.10.2008, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Reptor @  11.10.2008,  12:50 Найти цитируемый пост)
Rickert, прикрепил экзешник.

Сразу дам совет: после сдвига камера, при движении мышью, позиционируй его в точку, от которой отталкиваешь в расчётках (как правило центр рабочего экрана окна) - курсовр будет фиксирован. + сделай его невидимым. Функция "ShowCursor(0);"

Цитата(Reptor @  11.10.2008,  12:50 Найти цитируемый пост)
он у меня сейчас -10 до 10. Я этот старый с плохими картинками переделал (там был  [-0.5; 0.5]). А сейчас отыскал картинки ... Во тут ещё вопрос есть ли какието проги что б самому рисовать SkyBox. так как готовые не всегда подходят. 

Привыкай, что программирование графики тесно связано с моделирование/анимацией и прочим из области 3D моделирования. Тебе нужна какая-нибудь программа по работе с моделированием (Maya, 3d studio, blender (бесплтаный и мощный)) + урок по созданию таких skyBox'ов. Бери поисковик и шустри, не найдёшь - помогу.

Цитата(Reptor @  11.10.2008,  12:50 Найти цитируемый пост)
Достать из базы точки я их могу. Собственно теперь надо этот участок дороги добавить на сцену (нарисовать). Что б была дорога на земле.

Отлично. Тут всё просто. Нас не устраивает две вещи:
0) Координаты в системе XY. Получая координаты дороги, указывай значение Y для Z - будем рисовать в плоскости XZ.
1) Они слишком большие по значения. Кастрируем на 100. Все приходящие значения. Давай, пробуй, жду ответов/приветов smile


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


Эксперт
***


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

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



Rickert, хмм не выходит сделать куб больше....

Оставил границы видимыми и они не отдалились (я понимаю что они должны стать дальше) + на углах появились дыры.

Цитата

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


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

    glRotated(rot_x, 1.0, 0.0, 0.0);    
    glRotated(rot_y, 0.0, 1.0, 0.0);    


да и ещё 2 exe: 1-ый [-10; 10] а 2-ой [-70; 70]

Что делать с этим кубом?


Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  files.rar 591,50 Kb
PM MAIL ICQ   Вверх
Rickert
Дата 12.10.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Всё правильно. По пунктам:
0) Границы видны, потому что тебе надо установить особые параметры для текстрирования. Читай здесь - http://www.gamedev.ru/faq/?id=91
1) У тебя вылазят зелёный грани потому что это плоскости отсечения. Их две: дальняя и ближняя. Их значения регулируются в функции "gluPerspective()" - последние два параметра. Помни, что буффер глубины 24 битный, следовательно значение не может быть больше 256^3.
2) glRotate - Это очень - очень плохо. Нет, конечно, для небольшого само-проектика покатит, но по идее надо всё переводить на вектора и вычислять значения по формулам. Опять-таким могу тебе дать экскурс в это.


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


Эксперт
***


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

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



Rickert, 

Цитата

0) Границы видны, потому что тебе надо установить особые параметры для текстрирования. Читай здесь - http://www.gamedev.ru/faq/?id=91

Это зделал.

Цитата

1) У тебя вылазят зелёный грани потому что это плоскости отсечения. Их две: дальняя и ближняя. Их значения регулируются в функции 
"gluPerspective()" - последние два параметра. Помни, что буффер глубины 24 битный, следовательно значение не может быть больше 256^3.

Это зделал.

Цитата

2) glRotate - Это очень - очень плохо. Нет, конечно, для небольшого само-проектика покатит, но по идее надо всё переводить на вектора и вычислять


если честно то мне самому совсем не нравилось как это работает. Переделал сейчас вот так (буду ещё эксперементировать).
Код


gluLookAt(
      xtranslate,ytranslate,ztranslate,
      0,0,0,
      0,1,0);

............................

    if(keys['P']){
                        xtranslate+=0.5f;
                    }
                    if(keys['O']){
                        xtranslate-=0.5f;
                    }
                    if(keys['I']){
                        ytranslate+=0.5f;
                    }
                    if(keys['U']){
                        ytranslate-=0.5f;
                    }
                    if(keys['Y']){
                        ztranslate+=0.5f;
                    }
                    if(keys['T']){
                        ztranslate-=0.5f;
                    }


Да и зделал как вы говорили ShowCursor(0);

Цитата

0) Координаты в системе XY. Получая координаты дороги, указывай значение Y для Z - будем рисовать в плоскости XZ.
1) Они слишком большие по значения. Кастрируем на 100. Все приходящие значения.


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

Кастрируемый на 100
).

Код

glColor3f(1.0f,0.0f,0.0f);

        glBegin(GL_POLYGON);
            glVertex3d (4.0f,-0,5.0f);
            glVertex3d (2.0f,-0,5.0f);
            glVertex3d (2.0f,-0,3.0f);
            glVertex3d (4.0f,-0,3.0f);

            glVertex3d (4.0f,-0,1.0f);
            glVertex3d (6.0f,-0,1.0f);
            glVertex3d (6.0f,-0,3.0f);
            glVertex3d (6.5f,-0,4.0f);

            glVertex3d (5.0f,-0,5.5f);

        glEnd();


Там правда его сразу не видно но попробуйте понажимать кнопочки (перемещать камеру и он там есть)


Теперь как то дорогу надо вписать в общий вид. Сейчас она както оторвана от общей сцены.


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

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  pr.rar 525,73 Kb
PM MAIL ICQ   Вверх
Rickert
Дата 12.10.2008, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Reptor @  12.10.2008,  13:50 Найти цитируемый пост)
Это зделал.

Сделал пишется через "с" smile
Цитата(Reptor @  12.10.2008,  13:50 Найти цитируемый пост)
Это зделал.

Сделал пишется через "С"  smile 
Код
glVertex3d (4.0f,-0,5.0f);

Почему по y = (-0) ?  smile 
Цитата(Reptor @  12.10.2008,  13:50 Найти цитируемый пост)
Теперь как то дорогу надо вписать в общий вид. Сейчас она както оторвана от общей сцены.

А почему вы её не из базы данных дёргаете. Давайте сразу уже смотреть чего там есть на выходе.
Перенестие кнопки движения либо на стрелки, либо на стандартные "WASD" - а то не ясно smile

Это сообщение отредактировал(а) Rickert - 12.10.2008, 17:32


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


Эксперт
***


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

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



Цитата

Сделал пишется через "с"


 smile . Исправлюсь.

Цитата

Почему по y = (-0)


это я просто пробовал опустить дорогу и забыл убрать "-";

Цитата

А почему вы её не из базы данных дёргаете. Давайте сразу уже смотреть чего там есть на выходе.


просто я хотел что б вы посмотрели.. если б из БД брал то у вас бы ошибка была так как БД нет. 

ok тогда сделаю из БД и выложу скрины того что вышло.

Это сообщение отредактировал(а) Reptor - 12.10.2008, 22:10
PM MAIL ICQ   Вверх
Rickert
Дата 13.10.2008, 03:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor, логично, не подумал smile


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


Эксперт
***


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

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



Rickert,  посмотрите я выложил скриншоты. Перекрёсток из БД. 

Ну теперь надо что то с ним делать.. что дальше? Теперь это всё надо привести к красивому и реалистичному виду. 

Это сообщение отредактировал(а) Reptor - 13.10.2008, 11:29

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  picture.rar 986,08 Kb
PM MAIL ICQ   Вверх
Rickert
Дата 13.10.2008, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor
0) Давайте на "ты", мы уже и так близки  smile 
1) В следующий раз, когда буду отправлять картинки, сохраняйте их в JPG формате, а то у меня adsl'я мало пока что. У нас тут ещё безлимиток не организовали нормальных smile 
2) Что дальше? Сейчас нам нужна местность на которой будет лежать эта дорога. Местность больших размеров. Как будем делать? Есть два варианта: генерировать исходя из дороги автоматически и случайно, или сделать модель местности заранее подогнав под дорогу, или ещё вариант: сделать через карту высот. Выбирайте.


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


Эксперт
***


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

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



Цитата

0) Давайте на "ты", мы уже и так близки 

Давайте....оо давай на "ты"

Цитата

1) В следующий раз, когда буду отправлять картинки, сохраняйте их в JPG формате, а то у меня adsl'я мало пока что. У нас тут ещё безлимиток не организовали нормальных

Хорошо.

Цитата

2) Что дальше? Сейчас нам нужна местность на которой будет лежать эта дорога. Местность больших размеров. Как будем делать? Есть два варианта: генерировать исходя из дороги автоматически и случайно, или сделать модель местности заранее подогнав под дорогу, или ещё вариант: сделать через карту высот. Выбирайте.


Вот тут я б хотел выслушать тот вариант который ты считаеш правильным или более простым для начала. Просто пока высот у меня нет - дорога ровная (но они потом буду это 100%). Мне кажется сначало надо сделать без карты высот и местность сделать наверно хмм... - подогнав заранее под дорогу... или нет наверно....да наверно под дорогу подогнав.
PM MAIL ICQ   Вверх
Rickert
Дата 14.10.2008, 03:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor, значит твоя задача состоит из двух этапов:
0) Ты берёшь любой редактор для 3D моделирования: Maya, 3D studio, blender.
1) Сохраняешь данные о дороге в тот же OBJ файл.
2) Импортируешь данные в редактор, через этот OBJ файл. Благо его все понимают.
3) Рисуешь местность, глядя на свою дорогу.
4) Эскпортируешь полученную модель в любой формат.
5) Грузишь эту модель в своём проекте.
Это если самому руками делать. Если ты возьмёшься делать через Maya, то я тебя могу провести по всем пунктам, от и до, включая само создание местсноти.

Это сообщение отредактировал(а) Rickert - 14.10.2008, 03:46


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


Эксперт
***


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

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



Rickert, 

Цитата

если ты возьмёшься делать через Maya, то я тебя могу провести по всем пунктам, от и до, включая само создание местсноти.


хорошо давай так и поступим.

Только если честно я пока мало что понял как это всё будет происходить... Ведь дорога может быть разной...  Это мне надо будет что б в Maya всё автоматически это выполнялась.. или как?

Цитата

2) Импортируешь данные в редактор, через этот OBJ файл. Благо его все понимают.
3) Рисуешь местность, глядя на свою дорогу.
4)  Эскпортируешь полученную модель в любой формат.


как например эти пункты автоматизировать мне пока не ясно совсем... smile 


Хорошо с чего начинать....??

Да и ещё какой версии Maya мне нужна (я никогда с ней не работал). И где её можно скачать?







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


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


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

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



А, так дорога у тебя разная будет? В таком случае тебе только автоматическая генерация местности нжна, иначе никак. Пока шутсри поиском по гуглу и gamedev.ru "генерация ландшафта"


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


Эксперт
***


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

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



Цитата

А, так дорога у тебя разная будет? 


Да, разная.

Цитата

Пока шутсри поиском по гуглу и gamedev.ru "генерация ландшафта" 



Rickert,  я посмотрел про ландшафты в уроках Nehe  и идею понял. Только вот как мне это поможет? я пока не понимаю.
Это ж мне надо генерить этот raw-файл?

Одним словом я пока не понимаю как это связать с моими дорогами и skyBox.  smile 
 

Это сообщение отредактировал(а) Reptor - 14.10.2008, 22:42
PM MAIL ICQ   Вверх
Rickert
Дата 15.10.2008, 04:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor, пока научись просто открывать raw файл и формировать поверхность.
Мы будем генерировать ландшафт случайным образом, а затем подгонять его под дорогу.


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


Эксперт
***


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

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



Rickert, я не могу понять как создавать raw файл. Есть в примере но там какаято абра кодабра. Как им пользоваться я понял а вот как свой сделать пока мне не ясно. Отыскал какойто редактор -  терагон вроде... но он тоже мне не подходит... хотя редактор меня и не интересует... мне ж надо автоматом генерить файл..

Цитата

Reptor, пока научись просто открывать raw файл и формировать поверхность.


Это я понял как делать.. что дальше делать?

я так понимаю сейчас как раз таки и надо мне создать этот raw-файл... Исходя из того какая у меня дорога? 

PM MAIL ICQ   Вверх
Rickert
Дата 16.10.2008, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Хорошо, ладно. Забудь про raw файл.
Сделай следующее: напиши функцию, которая будет принимать четыре значения:
0, 1) Длинна и ширина поверхности.
2, 3) Длинна и ширина каждой клеточки.
Каждая клеточка - это полигон -  два треугольника (6 вершин).
Функция должна создавать плоскую поверхность.
Справишься?


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


Эксперт
***


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

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



Rickert, ну постараюсь... 

PM MAIL ICQ   Вверх
Reptor
Дата 16.10.2008, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Rickert,  вот функция 

Код

void landscape(GLfloat length, GLfloat width, GLfloat step_length, GLfloat step_width){
    
    float X = 0;
    float Y = 0;
    float x, y;

    X = length/2;
    Y = width/2;

    glBegin(GL_TRIANGLES);

    glColor3f(1.0f, 0.0f, 0.0f);
    for(x=-X; x<=X; x+=step_length){
        for(y=-Y; y<=Y; y+=step_width){
            glVertex3f(x, 0, y); 
            glVertex3f(x, 0, y+step_length); 
            glVertex3f(x+step_length, 0, y+step_length); 


            glVertex3f(x+step_length, 0, y+step_length);
            glVertex3f(x+step_length, 0, y); 
            glVertex3f(x, 0, y);

        }
    }

    glEnd();

}

.....................

landscape(64.0f, 64.0f, 8.0f, 8.0f);





и в атаче результат работы.



Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  untitled.rar 28,88 Kb
PM MAIL ICQ   Вверх
Rickert
Дата 16.10.2008, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor, не-не-не!
Ты должен создать массив вершин, который будешь модифицировать и отображать. А сейчас ты просто в цикле вывел координаты.


Это сообщение отредактировал(а) Rickert - 16.10.2008, 16:03


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


Эксперт
***


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

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



Rickert, ага во как надо. Хорошо переделаю. 
PM MAIL ICQ   Вверх
Reptor
Дата 17.10.2008, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Rickert, вот я переделал.

Код

int** landscape_mas;

..........................................

void createLandscape(int length, int width){
    int i,j;

    landscape_mas = new int *[length];
    for(i=0; i<length; i++){
        landscape_mas[i] = new int[width];
    }

    for(i=0; i<length; i++){
        for(j=0; j<width; j++){
            landscape_mas[i][j] = 0;
        }
    }
}

void drawLandscape(int length, int width, int step_length, int step_width){
    
    int X = 0;
    int Y = 0;
    int x, y;

//    X = length/2;
//    Y = width/2;

    /*glBegin(GL_TRIANGLES);
    glColor3f(1.0f, 0.0f, 0.0f);
    for(x=-X; x<=X; x+=step_length){
        for(y=-Y; y<=Y; y+=step_width){
            glVertex3f(x, 0, y); 
            glVertex3f(x, 0, y+step_width); 
            glVertex3f(x+step_length, 0, y+step_width); 

            glVertex3f(x+step_length, 0, y+step_width);
            glVertex3f(x+step_length, 0, y); 
            glVertex3f(x, 0, y);
        }
    }
    glEnd();*/

    glBegin(GL_TRIANGLES);
    glColor3f(1.0f, 0.0f, 0.0f);

    for(x=0; x<length-step_length; x+=step_length){
        for(y=0; y<width-step_width; y+=step_width){            

            glVertex3i(x, landscape_mas[x][y], y); 
            glVertex3i(x, landscape_mas[x][y+step_width], y+step_width); 
            glVertex3i(x+step_length, landscape_mas[x+step_length][y+step_width], y+step_width); 

            glVertex3i(x+step_length, landscape_mas[x+step_length][y+step_width], y+step_width);
            glVertex3i(x+step_length, landscape_mas[x+step_length][y], y); 
            glVertex3i(x, landscape_mas[x][y], y);
        }
    }
    glEnd();
}

.........................................


createLandscape(64,64);
drawLandscape(64, 64, 8, 8);

....................................................



картинка в атаче 


Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  untitled.rar 34,31 Kb
PM MAIL ICQ   Вверх
Rickert
Дата 17.10.2008, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor, уже лучше. Немного поправь код: что тебе мешает в первой функции, сразу же расчитать позиции вершин и потом их только выводить в "drawLandscape()" ?
Теперь ещё усложним. Добавь третью координату. И пусть значение по Y будет случайным.
Смотри описание функций "srand()" и "rand()" Пусть интервал значений будет  от (-1.0) до (1.0)


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


Эксперт
***


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

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



Rickert, вот смотри сделал случайные высоты.

Код

#define random_init() srand((unsigned int)time(NULL))
#define random_gen(min, max) ((rand()%(max-min+1))+min)

..........................................

float** landscape_mas;

...........................................................

void createLandscape(int length, int width){
    int i,j;
    float x;

    random_init();    

    landscape_mas = new float *[length];
    for(i=0; i<length; i++){
        landscape_mas[i] = new float[width];
    }

    for(i=0; i<length; i++){
        for(j=0; j<width; j++){
            x =  (float)(random_gen((-10), 10))/10;
            landscape_mas[i][j] = x;
        }
    }
}

void drawLandscape(int length, int width, int step_length, int step_width){
    
    int X = 0;
    int Y = 0;
    int x, y;

//    X = length/2;
//    Y = width/2;

    /*glBegin(GL_TRIANGLES);
    glColor3f(1.0f, 0.0f, 0.0f);
    for(x=-X; x<=X; x+=step_length){
        for(y=-Y; y<=Y; y+=step_width){
            glVertex3f(x, 0, y); 
            glVertex3f(x, 0, y+step_width); 
            glVertex3f(x+step_length, 0, y+step_width); 

            glVertex3f(x+step_length, 0, y+step_width);
            glVertex3f(x+step_length, 0, y); 
            glVertex3f(x, 0, y);
        }
    }
    glEnd();*/


    glBegin(GL_TRIANGLES);
    glColor3f(1.0f, 0.0f, 0.0f);

    for(x=0; x<length-step_length; x+=step_length){
        for(y=0; y<width-step_width; y+=step_width){

            glVertex3f(x, landscape_mas[x][y], y); 
            glVertex3f(x, landscape_mas[x][y+step_width], y+step_width); 
            glVertex3f(x+step_length, landscape_mas[x+step_length][y+step_width], y+step_width); 

            glVertex3f(x+step_length, landscape_mas[x+step_length][y+step_width], y+step_width);
            glVertex3f(x+step_length, landscape_mas[x+step_length][y], y); 
            glVertex3f(x, landscape_mas[x][y], y);
        }
    }

    glEnd();
}


Картинка в атаче.



Rickert, 

 
Цитата

Немного поправь код: что тебе мешает в первой функции, сразу же расчитать позиции вершин и потом их только выводить в "drawLandscape()" ?


Вот тут я не совсем понял..... тоесть надо делать масив например не 64x64 (к примеру) а как то исходя из шага?

Добавлено через 4 минуты и 50 секунд
или наоборот просто в масив писать вотету информацию 

Код

landscape_mas[x+step_length][y+step_width]


а там просто брать и все подряд выводить?

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  untitled.rar 37,09 Kb
PM MAIL ICQ   Вверх
Rickert
Дата 17.10.2008, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Reptor @  17.10.2008,  12:39 Найти цитируемый пост)
Вот тут я не совсем понял..... тоесть надо делать масив например не 64x64 (к примеру) а как то исходя из шага?

Да, подумай хорошенько, если что я тебе потом помогу с кодом. Ну у тебя там хоть проясняется всё по-немногу: по полкам раскладывается? smile 

Теперь значит смотри: в raw файле смысл такой же - это картинка, а значение цвета этой картинки - значение высоты точки. Сообразил?

Итак, у нас сейчас должен получится случайно сгенерированный ландшафт. Он у нас топорный как ты можешь заметить. Надо бы его, наверное сгладить?
Есть такая вещь "кривые безье". Кури общую информацию тут - http://ru.wikipedia.org/wiki/Кривые_Безье
Потом иди на тот же gamedev.ru и смотри как их применяют. Также в поисковиках пошустри.

И найди какую - нибудь текстурку, да наложи на сгенерированную повехность. Для этого, естественно, тебе понадобиться расчитать uv координаты. Но так как у нас простая плоскость, по сути, то проблем думаю не будет.

Это сообщение отредактировал(а) Rickert - 17.10.2008, 18:53


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


Эксперт
***


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

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



Цитата

Ну у тебя там хоть проясняется всё по-немногу: по полкам раскладывается?


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

Цитата

теперь значит смотри: в raw файле смысл такой же - это картинка, а значение цвета этой картинки - значение высоты точки. Сообразил?


да это я понял. 


Хорошо попробую разобраться с "кривые безье".. вот что б сгладить ландшафт и потом текстура.
PM MAIL ICQ   Вверх
Rickert
Дата 18.10.2008, 05:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Reptor @  17.10.2008,  21:43 Найти цитируемый пост)
Да немного проясняется, но всеровно как выйти на конечный результат пока не до конца ясно (как это всё потом в купу собрать), а так до  этого времени всё ясно.

А мы разве не выходим на него по-тихоньку?
Сделали окружающую среду, сейчас добавим местноть и дорогу. Что там ещё надо будет?


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


Эксперт
***


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

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



Цитата

А мы разве не выходим на него по-тихоньку?



Rickert, конечно выходим.

Цитата

Сделали окружающую среду, сейчас добавим местноть и дорогу. Что там ещё надо будет? 


Хотелось бы ещё потом какойто светофор добавить и домик(дерево)   smile 



Вернёмся к кривые безье.... я почитал и разобрался с ними... вот.. и попробовал их применить но не вышло (результат в атаче).

Вот код. 

Код


typedef struct tagBEZIEPOINT{
    float x;
    float y;
    float z;
} BEZIEPOINT;


..................................................


BEZIEPOINT calc(float t, BEZIEPOINT p1, BEZIEPOINT p2, BEZIEPOINT p3){
    BEZIEPOINT p;
    
    float kof1 = pow((1-t),2);
    float kof2 = 2*t*(1-t)*t;
    float kof3 = pow(t,2);

    p.x = kof1*p1.x + kof2*p2.x + kof3*p3.x;
    p.y = kof1*p1.y + kof2*p2.y + kof3*p3.y;
    p.z = kof1*p1.z + kof2*p2.z + kof3*p3.z;
    

    return p;

}

.......................

void drawLandscape(int length, int width, int step_length, int step_width){
    
    int X = 0;
    int Y = 0;
    int x, y;
    


//    X = length/2;
//    Y = width/2;

    /*glBegin(GL_TRIANGLES);
    glColor3f(1.0f, 0.0f, 0.0f);
    for(x=-X; x<=X; x+=step_length){
        for(y=-Y; y<=Y; y+=step_width){
            glVertex3f(x, 0, y); 
            glVertex3f(x, 0, y+step_width); 
            glVertex3f(x+step_length, 0, y+step_width); 

            glVertex3f(x+step_length, 0, y+step_width);
            glVertex3f(x+step_length, 0, y); 
            glVertex3f(x, 0, y);
        }
    }
    glEnd();*/



//glBegin(GL_TRIANGLES);
//    glBegin(GL_LINES);
//    glColor3f(1.0f, 0.0f, 0.0f);

/*    for(x=0; x<length-step_length; x+=step_length){
        for(y=0; y<width-step_width; y+=step_width){

                glColor3f(1.0f, 0.0f, 0.0f);

            glVertex3f(x, landscape_mas[x][y], y); 
            glVertex3f(x, landscape_mas[x][y+step_width], y+step_width); 
            glVertex3f(x+step_length, landscape_mas[x+step_length][y+step_width], y+step_width); 

            glVertex3f(x+step_length, landscape_mas[x+step_length][y+step_width], y+step_width);
            glVertex3f(x+step_length, landscape_mas[x+step_length][y], y); 
            glVertex3f(x, landscape_mas[x][y], y);


            glColor3f(0.0f, 1.0f, 0.0f);
            glVertex3f(x, landscape_mas[x][y], y); 
            glVertex3f(x+step_length, landscape_mas[x+step_length][y+step_width], y+step_width); 
        }
    }

    glEnd();*/


    for(x=0; x<length-step_length*2; x+=step_length*2){
        for(y=0; y<width-step_width*2; y+=step_width*2){

            float t;
            glColor3f(1.0f, 0.0f, 0.0f);
            
            BEZIEPOINT p1;
            p1.x = float(x);
            p1.y = landscape_mas[x][y];
            p1.z = float(y);

            BEZIEPOINT p2;
            p2.x = float(x);
            p2.y = landscape_mas[x][y+step_width];
            p2.z = float(y+step_width);

            BEZIEPOINT p3;
            p3.x = float(x);
            p3.y = landscape_mas[x][y+step_width*2];
            p3.z = float(y+step_width*2);

            glBegin(GL_LINE_STRIP);
            for(t=0.0f; t<=1.0f; t+=0.1f){
                BEZIEPOINT res = calc(t,p1,p2,p3);
                glVertex3f(res.x, res.y, res.z);
            }
            glEnd();


            BEZIEPOINT p4;
            BEZIEPOINT p5;
            BEZIEPOINT p6;

            p4.x = float(x);
            p4.y = landscape_mas[x][y];
            p4.z = float(y);

            
            p5.x = float(x+step_length);
            p5.y = landscape_mas[x+step_length][y];
            p5.z = float(y);

        
            p6.x = float(x+step_length*2);
            p6.y = landscape_mas[x+step_length*2][y];
            p6.z = float(y);

            glBegin(GL_LINE_STRIP);
            for(t=0.0f; t<=1.0f; t+=0.1f){
                BEZIEPOINT res = calc(t,p4,p5,p6);
                glVertex3f(res.x, res.y, res.z);
            }
            glEnd();

        
        }
    }

}





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





Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  __________.rar 47,44 Kb
PM MAIL ICQ   Вверх
Rickert
Дата 18.10.2008, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor
Значит так: делаешь пустой проект, в котором идёт только инициализация OpenGL и отображение. И реализовываешь в нём простой вариант кривой безье. Если хочешь, я могу прислать тебе уже готовый код с ныне платного gametutorials.com - покопаешься: там всё так писалось, чтобы исходник служил неким уроком в определённой области.
Кинуть или сам повозишься?


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


Эксперт
***


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

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



Цитата

Кинуть или сам повозишься? 


Да скинь пожалуйста если можно. 

И сейчас ещё зделаю сам простой вариант кривой безье.
PM MAIL ICQ   Вверх
Reptor
Дата 18.10.2008, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



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

Вот код  и атач.

Код

struct BEZIE{
    float x;
    float y;
    float z;
};

................

BEZIE calc(float t, BEZIE p1, BEZIE p2, BEZIE p3){
    BEZIE p;
    
    float kof1 = pow((1-t),2);
    float kof2 = 2*t*(1-t)*t;
    float kof3 = pow(t,2);

    p.x = kof1*p1.x + kof2*p2.x + kof3*p3.x;
    p.y = kof1*p1.y + kof2*p2.y + kof3*p3.y;
    p.z = kof1*p1.z + kof2*p2.z + kof3*p3.z;
    

    return p;

}

int DrawGLScene(GLvoid)                                    
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);     
    glLoadIdentity();                        
    glTranslatef(0.0f,0.0f,-12.0f);

    glBegin(GL_LINE_STRIP);

    BEZIE p0;
    p0.x = -3.0f;
    p0.y = -5.0f;
    p0.z = -1.0f;


    BEZIE p1;
    p1.x = 0.0f;
    p1.y = 3.0f;
    p1.z = -1.0f;

    BEZIE p2;
    p2.x = 3.0f;
    p2.y = -4.0f;
    p2.z = -1.0f;

    for(float t=0.0; t<=1.0f; t+=0.05f){        
        BEZIE res = calc(t,p0,p1,p2);
        glVertex3f(res.x, res.y, res.z);            
    }


    glEnd();



    return TRUE;                                        // Everything Went OK
}


Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  ww.rar 12,92 Kb
PM MAIL ICQ   Вверх
Rickert
Дата 19.10.2008, 05:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor, ну так правильно работает или нет?
В понедельник с рабочей машины сдёрну безье и вышлю.


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


Эксперт
***


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

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



Цитата

Reptor, ну так правильно работает или нет?



Rickert, ну да, правильно работает.

Что ж у меня там напутано.... smile   буду смотреть..   
PM MAIL ICQ   Вверх
Reptor
Дата 19.10.2008, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Rickert, в атаче то что получилоь... (правда с кривыми безье не до конца понял что получилось но пока пусть так будет).... Сделал текстуру... ну вроде не плохо..

Что дальше? Теперь надо как то дорогу положить на этот ландшафт?.. она сейчас телипается немного ниже и с самого краю + оня ещё какаято очень маленькая..


Rickert, знаеш что я не могу до конца себе представить... -  как всё это будет в конце... просто сейчас есть SkyBox, дорога, ландшафт и эти 3 компонента как то оторваны друг от друга...

Это сообщение отредактировал(а) Reptor - 19.10.2008, 11:42

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  p.rar 76,06 Kb
PM MAIL ICQ   Вверх
Rickert
Дата 19.10.2008, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Reptor @  19.10.2008,  09:29 Найти цитируемый пост)
Rickert, ну да, правильно работает.

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

Цитата(Reptor @  19.10.2008,  11:37 Найти цитируемый пост)
Rickert, знаеш что я не могу до конца себе представить... -  как всё это будет в конце... просто сейчас есть SkyBox, дорога, ландшафт и эти 3 компонента как то оторваны друг от друга...

А какая целостность требуется? Нет, ну конечно ты можешь создать классы, разбить всё это дело по функциям, оптимизировать, но это долгая песня, который ты уже должен заниматься самостоятельно в течении пары недель.
Так, вот теперь поверхность вроде сглаженная, отлично.

Теперь что нам нужно? Чтобы ландшафт генерировался и состыковывался с дорогой? Попробуй сам придумать алгоритм или найти по поисковикам. Я тож пока подумаю что-нибудь.


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


Эксперт
***


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

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



Цитата

А какая целостность требуется? Нет, ну конечно ты можешь создать классы, разбить всё это дело по функциям, оптимизировать....


Нет Rickert,   ты меня не понял наверно..   smile  я говорю о картинке... что на взгляд как  то ландшафт и SkyBox отдельно друг от друга.. ландшафт как ковёр-самолт летает  в воздухе.

PM MAIL ICQ   Вверх
Rickert
Дата 19.10.2008, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor, А ну так естественно smile
Давай, подумай, как от этого избавиться?
0) Во-первых сделать ограничение на движениее камеры как-то. Может сделать имитацию человеческого движения по поверхности: прыжок, вперёд, назад и всё такое.
1) Можно генерировать большой ландшафт и отображать его по кускам: те, которые видны.
2) Можно добавить туман, чтобы не было видно конца горизонта и опять-таки генерировать большой ландшафт.
Это всё то, что пришло первое на ум.
Поразмышляй smile

Это сообщение отредактировал(а) Rickert - 19.10.2008, 15:12


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


Эксперт
***


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

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



Rickert, а как мне добавить лёгкий туман на углах skyBox... так что б было всё видно но с легкой серостью...У меня сильно затуманено выходит... картинка в атаче.

я уже использую glFogf(GL_FOG_DENSITY, 0.01f); 

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  tyman.rar 46,64 Kb
PM MAIL ICQ   Вверх
Rickert
Дата 19.10.2008, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



http://www.progz.ru/articles.php?issue=5
Глава 6, пункт 6.3 и дальше. Изучай...


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


Эксперт
***


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

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



Rickert, а как нанести текстуру на мою дорогу... она рисуется как glBegin(GL_POLYGON);??

1-ое что мне приходит на ум так это отказаться от POLYGON

Это сообщение отредактировал(а) Reptor - 19.10.2008, 19:52
PM MAIL ICQ   Вверх
Rickert
Дата 20.10.2008, 03:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Reptor @  19.10.2008,  19:51 Найти цитируемый пост)
Rickert, а как нанести текстуру на мою дорогу... она рисуется как glBegin(GL_POLYGON);??

Что значит "как"? А как ты её наложил на ландшафт?


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


Эксперт
***


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

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



Цитата

Что значит "как"? А как ты её наложил на ландшафт? 


ну брал и кусочками вырезал пошагово... но там проще там же треугольниками... а тут много вершин..


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

PM MAIL ICQ   Вверх
Rickert
Дата 20.10.2008, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor, z - обычно под ней подразумевают либо отдалённость от смотрящего, либо глубину.
Цитата(Reptor @  20.10.2008,  11:04 Найти цитируемый пост)
ну брал и кусочками вырезал пошагово... но там проще там же треугольниками... а тут много вершин..

Всмысле "вырезал"?
У тебя должно было бы быть так: ландшафт из треугольников. Если смотреть на него в плоскости XZ, то самая нижняя левая вершина будет иметь UV координаты(0.0, 0.0), а самая верхняя правая (1.0, 1.0), а те, что между ними - промежуточные значения, исходя из их положения относительно крайних.
Теперь дорога. Оказывается она у нас с проблемой... Нет UV координат у плоского выпуклого тела. Если у нас дорога будет использовать текстуру например "асфальт", без разметок - то проблем не будет, а вот если нужны разделительные полосы, то тут мы ничего поделать не сможем - нам нужно заранее знать направления.
Вопрос такой: тебе данные о вершинах дороги поступают кучей, не какими - то опред. партиями, которые бы характеризовали: допустим некие дороги?

Это сообщение отредактировал(а) Rickert - 20.10.2008, 11:20


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


Эксперт
***


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

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



Цитата

У тебя должно было бы быть так: ландшафт из треугольников. Если смотреть на него в плоскости XZ, то самая нижняя левая вершина будет иметь UV координаты(0.0, 0.0), а самая верхняя правая (1.0, 1.0), а те, что между ними - промежуточные значения, исходя из их положения относительно крайних.


Rickert,  Ну да так и сделал.

Цитата

Теперь дорога. Оказывается она у нас с проблемой... Нет UV координат у плоского выпуклого тела. Если у нас дорога будет использовать текстуру например "асфальт", без разметок - то проблем не будет, а вот если нужны разделительные полосы, то тут мы ничего поделать не сможем - нам нужно заранее знать направления.
Вопрос такой: тебе данные о вершинах дороги поступают кучей, не какими - то опред. партиями, которые бы характеризовали: допустим некие дороги?


Да ко мне информация поступает просто кучей вершин...и я просто знаю последовательность ту по которой необходимо их соеденить.. но как бы разметка.... я знаю количество полос в каждом направлении... на каждой стороне....может просто линиями их нарисовать?


PM MAIL ICQ   Вверх
Rickert
Дата 20.10.2008, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Давай пока забудем про полосы и решим проблему с генерацией uv карты. Сделай текстуру размером 256х256: чёрная стрелка на белом фоне и загрузи её в проект - это будет наша текстура для дороги на время дебага.
Теперь расскажи мне про
Цитата
последовательность ту по которой необходимо их соеденить



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


Эксперт
***


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

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



Rickert,  идёт в базе просто последовательность точек... табличка такого вида

id | x       |   y
1  | 600   |  300
2 |  300   | 300
3 |  300   | 350

вот... и вот так их надо сондинять: 1->2->3  (попорядку).

Цитата

Сделай текстуру размером 256х256: чёрная стрелка на белом фоне 


вот тут я не совсем понял: будет белая область 256х256 и по середине будет просто чорная полоска?



PM MAIL ICQ   Вверх
Rickert
Дата 20.10.2008, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor, не - не: белый квадрат размером 256х256, а по середине чёрная стрелку любым размером, но чтоб, есесно, влазила в квадрат.


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


Эксперт
***


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

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



Rickert, сделал.
PM MAIL ICQ   Вверх
Reptor
Дата 20.10.2008, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Rickert, и ещё как можно избежать... сделать так что б не было видно границ моего ландшафта..а именно я ж рисую ландшафт треугольниками и из-за этого весь ландшафт в линиях... На картинке всё видно...я там для примера чорным цветом их обрисовал..Очень в глаза кидаются эти границы треугольников.

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

Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  p.JPG 26,03 Kb
PM MAIL ICQ   Вверх
Rickert
Дата 20.10.2008, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor, где там ландшафт? Там какая-то сливающаяся текстура?


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


Эксперт
***


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

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



Rickert, ну да...а как сделать что б такого не было? я взял обычно зделал и наложил текстуры c координатами u,v на треугольники

Это сообщение отредактировал(а) Reptor - 20.10.2008, 15:58
PM MAIL ICQ   Вверх
Rickert
Дата 21.10.2008, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor, так ты текстуру-то возьмите какую-нибудь другую, отличную от Skybox'а


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


Эксперт
***


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

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



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

и всеровно даже на 2-ой тектуре видны эти места склейки триугольников.

Это сообщение отредактировал(а) Reptor - 21.10.2008, 15:09
PM MAIL ICQ   Вверх
Rickert
Дата 22.10.2008, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor, ты зря занялся сейчас вылизыванием картинки - это последнее дело. Оставь пока эти грани. Сейчас нам надо сгенерить uv карту для дороги. Так, точки короче идут одна за другой, создавая контур. Что ж - это легче уже.
Ты можешь показать мне дорогу вид сверху, с включёным отображением вершин и линий. Вершины - зелёные, линии - синие.
А лучше скомпиленную прогу кинь: надо узнать расположение вершин относительно друг друга.


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


Эксперт
***


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

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



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

Вот эти точки мне даны... причём дороги могуть быть разные... но все описываются так же просто каждая сторона 4 точками и эти точки соединяются.

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  1.rar 21,88 Kb
PM MAIL ICQ   Вверх
Rickert
Дата 22.10.2008, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor, т.е. правая полоса на скрине, и нижняя полоса на скрине состоят из 4 вершин? а та хрень что их соединяет - многоугольник: из скольки? smile 


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


Эксперт
***


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

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



Rickert, 
Цитата

Reptor, т.е. правая полоса на скрине, и нижняя полоса на скрине состоят из 4 вершин? а та хрень что их соединяет - многоугольник: из скольки? 


а там это просто 2 точки... это не отдельный многоугольник а просто последние 2 какието контрольные точки что б соеденить обе части.. если будет 3 полосы то будет  так как на картинке в атаче...

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  2.JPG 13,64 Kb
PM MAIL ICQ   Вверх
Rickert
Дата 23.10.2008, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor
Я предлогаю так: у нас есть четыре точки для полосы. Значит мы можем измерить размеры полосы. Теперь предположим, что наша текстура 256х256 будет расчитана на 1 ед. Т.е., если взять размеры полосы такими (5.0, 1.0), то получается что наша текстура должна быть наложена по длинне (U координата) - 5 раз, а по V - 1 раз. Следовательно, у левой (левая - меньшая по значению по длинне) точки будет координата U = 0.0, а у правой - U = 5.0. Таким образом текстура наложится 5 раз по длинне. А по V - 1.
Сообразил?


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


Эксперт
***


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

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



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


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


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

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



Reptor, в чём проблема? У тебя данные о дороги поступают постоянно в процессе выполнения программы?


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


Эксперт
***


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

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



Rickert, 
Цитата

в чём проблема? У тебя данные о дороги поступают постоянно в процессе выполнения программы? 


да.. так и есть..

я беру первую точку и мне надо приписать ей координату с текстуры u,v. Нет что то я не понимаю... Есть тукстура это та стрелочка на белом фоне?... так а там же есть белые области.. не что то я всеровно не понимаю..
PM MAIL ICQ   Вверх
Rickert
Дата 24.10.2008, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor
Вот какими должны быть действия:
0) Приходит 4 точки - полоса дороги.
1) Мерим длинну и высоту.
2) Считаем UV координаты.
3) Присваиваем их полосе.

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


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


Эксперт
***


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

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



Rickert, да я понял... теперь..сначала надо подготовить всю информацию а потом уже с ней что то делать...буду делать класс
PM MAIL ICQ   Вверх
Reptor
Дата 25.10.2008, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



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


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


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

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



Reptor, предлогаешь вылезать картинку или просто хочешь порядок в коде и голове навести?


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


Эксперт
***


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

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



Цитата

Reptor, предлогаешь вылезать картинку или просто хочешь порядок в коде и голове навести?



Rickert, предлагаю вылезать картинку  smile ... ну и заодно порядок а голове..а в коде уже попоже - после первой демонстрации так как уже не успею всё поменять. Думаю если будет порядок в голове то код это уже дело техники  smile 

Так что надо браться за вылизывание вида.. и порядка в голове (всеровно остались моменты непонятные мне.) 




PM MAIL ICQ   Вверх
Reptor
Дата 1.11.2008, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Rickert, привет  smile  есть вопрос... а могу ли я используя glBegin(GL_LINE_STRIP);  залить цветом полученную фигуру?
PM MAIL ICQ   Вверх
Rickert
Дата 1.11.2008, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor, Нет, тебе надо сначала вывести фигуру через GL_POLYGON, GL_TRIANGLES, а затем вывести фигуру через GL_LINE_STRIP - тогда ты отобразишь и "заливку" и конутр полигонов. Ты ведь именно этого добиваешься?


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


Эксперт
***


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

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



Rickert, та дело в том что через GL_POLYGON у меня дорога выходит как то не совсем так...в атаче картинки..

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

Вот код. 
Код


//    glBegin(GL_LINE_STRIP);
    glBegin(GL_POLYGON);

    float tx = 0.0f;
    float ty = 0.0f;

    
    for(int i=0; i<crossroad1.numpoints; i++){

            glVertex3f(crossroad1.point[i].x, crossroad1.point[i].y, crossroad1.point[i].z);        
        

    }
    glEnd();




Да и ещё так и не решил проблему с ландшафтом...как сделать что б не было видно границ.. выходит что он как то из кубиков состоит.


Это сообщение отредактировал(а) Reptor - 2.11.2008, 11:59

Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  picture.rar 141,26 Kb
PM MAIL ICQ   Вверх
mes
Дата 2.11.2008, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

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



Цитата(Reptor @  2.11.2008,  11:57 Найти цитируемый пост)
Да и ещё так и не решил проблему с ландшафтом...как сделать что б не было видно границ.. выходит что он как то из кубиков состоит.

Сделать подходящую текстуру, такую которая стыкуется без шва.  smile 
поиши в гугле как, вот пример : http://chain2k.blogspot.com/



--------------------
PM MAIL WWW   Вверх
Reptor
Дата 3.11.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Так а почему через полигон так страно рисуется? что можно сделать что б дорога рисовалась нормально? так как линиями всё точно но без заливки а полигоном криво но зато заливка есть.
PM MAIL ICQ   Вверх
Rickert
Дата 3.11.2008, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Странно. Попробуй включить вместо GL_LINES_STRIP - GL_LINES.
По всей видимости порядок перечисления вершин нарушен, при выводе через полигон.


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


Эксперт
***


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

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



Rickert, в атаче картинка с линиями. 

Присоединённый файл ( Кол-во скачиваний: 17 )
Присоединённый файл  lines.jpg 56,03 Kb
PM MAIL ICQ   Вверх
Rickert
Дата 4.11.2008, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Reptor, всё верно. Тогда остаётся одно: выводить по 2 - 3 вершины от всего кол-ва полгонов: сначала 1 - 3, потом с 3 - 6 и т.д. Смотреть результат, как они соединяются.


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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 1.1.2008

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



я сделал трехмерную квартиру ,аналогию той в которой живу.На опенгл.И знаю как эта твоя местность должна рисоваться.
Вот екзешник хаты:http://unlater.narod.ru/OpenGl.html
могу кинуть код.Такая квартира писалась 10 часов непрерывно,я представляю сколько ты будешь делать квартал.

Добавлено через 4 минуты и 45 секунд
вы лажу пишете что координаты вашего 3Дмира надо вычислять при перемещении.Для этого просто рисуете мир через glTranslatef и потом меняете позицию gluLookAt,и надо прописать перемещение камеры от мышки и от клавы.Все это у меня есть-пример,в коде моей проги 3D_Flat
PM MAIL   Вверх
Rickert
Дата 15.2.2009, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Gongex, я описал способы, которые используются при разработке игр. Пусть автор сам оценит какой вариант лучше: вращать мир вокруг себя, или действительно перемещаться в нём.


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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 1.1.2008

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



Rickert, 
Думаю лучше перемещаться в мире,я подозреваю что Экшены именно так пишутся.
PM MAIL   Вверх
sawtooth
Дата 19.2.2009, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 4.8.2008

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



Gongex

Реализация непосредственно от предпочтений разработчика. Каждый сам решает, как ему удобнее. Стандартов не существует (и не будет, ибо это процесс созидательно-творческий)
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

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

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


 




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


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

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