| PMG http://forum.pmg.org.ru/ |
|
| 22 урок http://forum.pmg.org.ru/viewtopic.php?f=1&t=504 |
Страница 1 из 4 |
| Автор: | Weise [ 14 июн 2006 22:26 ] |
| Заголовок сообщения: | 22 урок |
Здровствуйте, дорогие друзья! Прошу пращения за ламерский вопрос, но всеже, никак не могу понять, для чего нужны s и t координаты и как их подсчитать для произвольной сетки из треугольников ... Попробовал реализовать без этих координат, но картинка получилась неестественная, т.к. сдвиг координат всегда был по x и по y одинаков. И еще. Почему нельзя чтобы текстура повторялась многократно? Код: glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP); // Не укладывать паркетом
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP); |
|
| Автор: | Assassin [ 14 июн 2006 22:56 ] |
| Заголовок сообщения: | |
Цитата: // Выполнение сдвига текстуры
// n : нормаль к поверхности. Должна иметь длину 1 // c : текущая вершина на поверхности (координаты местоположения) // l : положение источника света // s : направление s-координаты текстуры в пространстве объекта // (должна быть нормализована!) // t : направление t-координаты текстуры в пространстве объекта // (должна быть нормализована!) |
|
| Автор: | Assassin [ 14 июн 2006 22:59 ] |
| Заголовок сообщения: | |
Цитата: Попробовал реализовать без этих координат, но картинка получилась неестественная, т.к. сдвиг координат всегда был по x и по y одинаков. Ну для этого и нужны s,t что б картинка была не кривой. Цитата: Прошу пращения за ламерский вопрос
Ламерский вопрос на неламерский(даже очень неламерский) урок.
P.S:В вобще я сильно незалазил в Bump-Mapping. |
|
| Автор: | Weise [ 14 июн 2006 23:06 ] |
| Заголовок сообщения: | |
Это все понятно. Попробую задать вопрос по-другому: Есть треугольник, его нормали к каждой вершине извесны, известны и сами вершины, и их текстурные координаты. Также мы знаем координату источника света. Какие будут s и t к каждой вершине? К чему привязывать (0;0)? Цитата: Ламерский вопрос на неламерский(даже очень неламерский) урок. Если б этот урок был-бы ламмерским, я бы туда не полез ))) Цитата: P.S:В вобще я сильно незалазил в Bump-Mapping.
А зря... Лично я не представляю себе сцену без Бампмеппинга ) |
|
| Автор: | Assassin [ 14 июн 2006 23:13 ] |
| Заголовок сообщения: | |
Цитата: P.S:В вобще я сильно незалазил в Bump-Mapping.
Яже говорю это очень обьёмный урок и может тебе помочь только тот кто в нём копался и уже подобное делал. P.S:Но я попробую тебе помочь я всё таки прочитаю этот урок и попробую найти ответ.Но это будет не сегодня а возможно завтра. |
|
| Автор: | Weise [ 14 июн 2006 23:18 ] |
| Заголовок сообщения: | |
Спасибо. Буду очень благодарен. |
|
| Автор: | Assassin [ 15 июн 2006 10:51 ] |
| Заголовок сообщения: | |
Цитата: Это все понятно. Попробую задать вопрос по-другому:
Есть треугольник, его нормали к каждой вершине извесны, известны и сами вершины, и их текстурные координаты. Также мы знаем координату источника света. Какие будут s и t к каждой вершине? К чему привязывать (0;0)? Обьясни поконкретнее что ты хочеш этим добится какой эфект хочеш сделать
|
|
| Автор: | Weise [ 15 июн 2006 14:13 ] |
| Заголовок сообщения: | |
Помоему вопрос должен быть должен быть понятен... Определить s и t для произвольного треугольника... Эффект? Тоже самое что и впримере... |
|
| Автор: | Assassin [ 15 июн 2006 17:17 ] |
| Заголовок сообщения: | |
Цитата: Эффект? Тоже самое что и впримере...
Так нафига тибе что нить узнавать если то чего ты хочешь добится написано в примере.
|
|
| Автор: | Weise [ 15 июн 2006 20:21 ] |
| Заголовок сообщения: | |
Да. ужас прям какой-то... Эффект который я хочу сделать - Bump-Mapping. Что мне для этого нужно - просчитать s и t для треугольника ))), ВСЕ! |
|
| Автор: | MagicWolf [ 17 июн 2006 12:21 ] |
| Заголовок сообщения: | Re: 22 урок |
Weise писал(а): Здровствуйте, дорогие друзья! Прошу пращения за ламерский вопрос, но всеже, никак не могу понять, для чего нужны s и t координаты и как их подсчитать для произвольной сетки из треугольников ... NeHe урок N6 писал(а): Для того чтобы правильно отобразить текстуру на четырехугольник, вы должны отобразить правый верхний угол текстуры на правую верхнею вершину четырехугольника. Левый верхний угол текстуры отображается в левую верхнею вершину четырехугольника, правый нижний угол текстуры отображается в правую нижнею вершину четырехугольника, и в завершении, левый нижний угол текстуры отображается в левую нижнею вершину четырехугольника. Если углы текстуры не совпадают с углами четырехугольника, изображение может быть сдвинуто вниз, в сторону, или вообще отсутствовать. Первый аргумент glTexCoord2f - координата X. 0.0f - левая сторона текстуры. 0.5f - середина текстуры, и 1.0f - правая сторона текстуры. Втрое значение glTexCoord2f - это Y координата. 0.0f - низ текстуры. 0.5f - середина текстуры, и 1.0f - верх текстуры. Теперь мы знаем, что левая верхняя координата текстуры 0.0f по X и 1.0f по Y, и левая верхняя вершина четырехугольника -1.0f по X, и 1.0f по Y. Теперь осталось сделать так, чтобы оставшиеся три координаты совпали с тремя углами четырехугольника. Попробуйте поиграться со значениями x и y в glTexCoord2f. Изменение 1.0f на 0.5f будет только рисовать левую половину текстуры от 0.5f (середина) до 1.0f (право). Т.е. s,t - это координаты на текстуре! Как x,y в пространстве. Можно было бы писать вместо s,t = xt, yt! Weise писал(а): И еще. Почему нельзя чтобы текстура повторялась многократно? Код: glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP); // Не укладывать паркетом glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP); Заместо GL_CLAMP используй GL_REPEAT и при увеличении текстурных координат больше 1 текстура будет повторяться.[/quote] |
|
| Автор: | Weise [ 17 июн 2006 15:20 ] |
| Заголовок сообщения: | |
MagicWolf, спасибо за ответ. Но меня смущает следующее: s и t - это верктора, там 3 числа ))) Там еще написано что они нормализованы. Там еще кртинка нарисована, но я никак не могу понять, почему там в векторе 3 числа )))
Код: void SetUpBumps(GLfloat *n, GLfloat *c, GLfloat *l, GLfloat *s, GLfloat *t) {
GLfloat v[3]; // Вектор от текущей точки к свету GLfloat lenQ; // Используется для нормализации // Вычислим и нормализуем v v[0]=l[0]-c[0]; v[1]=l[1]-c[1]; v[2]=l[2]-c[2]; lenQ=(GLfloat) sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]); v[0]/=lenQ; v[1]/=lenQ; v[2]/=lenQ; // Получим величины проекции v вдоль каждой оси системы текстурных координат c[0]=(s[0]*v[0]+s[1]*v[1]+s[2]*v[2])*MAX_EMBOSS; c[1]=(t[0]*v[0]+t[1]*v[1]+t[2]*v[2])*MAX_EMBOSS; } Обратите внимание на две последние строчки в коде. Там 3 числа в массиве s и t - они вектора по-видимому ) |
|
| Автор: | MagicWolf [ 22 июн 2006 15:40 ] |
| Заголовок сообщения: | |
В данном случае идет речь о другом! Обычно s&t это координаты текструры. А здесь s&t два вектора, которые определяют местоположение грани куба. При этом по направлению этих векторов можно получить и текстурные координаты. |
|
| Автор: | Weise [ 02 июл 2006 22:57 ] |
| Заголовок сообщения: | |
Да, но третий вектор-то откуда брать? ))) |
|
| Автор: | Weise [ 02 июл 2006 23:07 ] |
| Заголовок сообщения: | |
Да, кстати, у меня возник еще один вопрос, немного не в тему, но все-же... Самое высокое количество полигонов, которое я отрендерил на 6600GT, составило 90 000 полигонов, далее уже менее 24 fps. Все это после поверхностной оптимизации. Рендерил так: есть список вершин, список нормалей, материалов и мешей. прохожу по всем мешам: если надо менять материал, меняю рендерю все вершины Целью экспиремента было выявить максимальное количество треугольников, которое я могу на своей машинке отрендерить. Так вот, вопрос, 90 000 полигонов, это нормально для моей машины (P4 2.8, 1024, GeForce 6600GT)? Ответьте хотя-бы примерно... за одно может и расскажете, сколько сами отрендерили... |
|
| Страница 1 из 4 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|