![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нормальный 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?
Или размеры текстуры как то по другому указываешь?