Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нормальный Lightmap [VC, Hacked Win]


VolanD666 ©   (2006-06-30 20:35:00) 

Всем привет! Целый месяц пытаюсь реализовать нормальное освещение с помощью lightmap. Все вроде получилось, но есть несколько косяков.
Наиболее существенный из них- это полосы , которые возникают из-за фильтрации текстуры lightmap`а. Отсюда вопрос: Как сделать так, чтобы при фильтрации текстуры D3D не "выходил за грацицы текстурных координат" ( т.е. не брал пиксели которые не принадлежат этому треугольнику ). Во как...


VolanD666   (2006-07-08 09:55:00) [1]

Но полигоны все равно надо группировать?


_3d[Power]   (2006-07-08 09:32:00) [2]

Под опеном это лечится
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

Поищи аналог под д3д )


VolanD666   (2006-07-06 17:20:00) [3]

3) Нормали направлены в одну сторону


VolanD666   (2006-07-02 19:32:00) [4]

А группируют по какому принципу?
1) Полигоны должны иметь хотя бы две общие точки
2) Лежать в одной плоскости

Так?


XProger   (2006-07-02 18:27:00) [5]

Генерируют lightmap для группы полигонов ;)


VolanD666   (2006-07-02 18:05:00) [6]

А, ну это понятно )

А вот я еще косяк заметил, как только меняем разрешение текстур lightmap'а, то происходит не стыковка полигонов на границе. Как с этим борются?


XProger   (2006-07-02 12:51:00) [7]

VolanD666, считаем с нуля :)
0 - граница, 0.5 - первый тексель, следовательно 45.5 - 46 тексель


VolanD666   (2006-07-02 09:13:00) [8]

Why?


XProger   (2006-07-02 02:16:00) [9]

VolanD666, получишь 46 пиксель по счёту :)


Cash   (2006-07-01 17:10:00) [10]

Дак, а как ее еще из D3DX библиотеки создать??? 8)
D3DXCreateTexture... я и имел ввиду, после создания текстуры
возми у нее GetLevelDesc и посмотри, если размеры одинаковы, то
там примешана фильтрация, иначе - неверные текстурные координаты.


VolanD666   (2006-07-01 16:46:00) [11]

А если я ее гружу с помощью D3DXCreateTextureFromFile?


Cash   (2006-07-01 16:27:00) [12]

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

Размер самой текстуры можно узнать через GetLevelDesc, там она вернет
структуру, в которой и будут параметры Width и Height беззнакового целого
типа.

А вот из этих размеров уже можно TU и TV считать.


VolanD666   (2006-07-01 16:12:00) [13]

Это как? У меня текстура 512х512 => 45 пиксель будет иметь координату 45/512=0.087890625. Так?


Cash   (2006-07-01 15:51:00) [14]

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


VolanD666   (2006-07-01 15:35:00) [15]

Хм... А вот почему, например, есть 45 пиксель ( т.е. 45/512=0.087890625 ), а на полигоне я его не вижу?


VolanD666   (2006-07-01 07:35:00) [16]


> 2) вокруг lightmap'a для группы полигонов создавать рамку
> в 1-2 пикселя цвета lightmap'а %)

Вот этого я и боялся...


XProger   (2006-06-30 22:30:00) [17]

VolanD666,
1) освещать группы полигонов
2) вокруг lightmap'a для группы полигонов создавать рамку в 1-2 пикселя цвета lightmap'а %)


Cash   (2006-06-30 21:07:00) [18]

Это в дополнение к http://www.delphimaster.ru/cgi-bin/forum.pl?id=1150186032&n=9???

(я просто увидев тему решил порыскать, прочитал там твой последний пост и...)
Т. е. при создании текстуры ты ей говоришь, что Width и Height будут не
нулевыми, а такими, которые ты им даешь?
Так, а потом, когда формируешь текстурные координаты (0..1), ты
пользуешься теми же Width и Height?
Или размеры текстуры как то по другому указываешь?


Наверх

Титульная страница Поиск, карта сайта Написать письмо