Форум: "Игры";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
ВнизНормальный Lightmap Найти похожие ветки
← →
VolanD666 (2006-06-30 20:35) [0]Всем привет! Целый месяц пытаюсь реализовать нормальное освещение с помощью lightmap. Все вроде получилось, но есть несколько косяков.
Наиболее существенный из них- это полосы , которые возникают из-за фильтрации текстуры lightmap`а. Отсюда вопрос: Как сделать так, чтобы при фильтрации текстуры D3D не "выходил за грацицы текстурных координат" ( т.е. не брал пиксели которые не принадлежат этому треугольнику ). Во как...
← →
Cash © (2006-06-30 21:07) [1]Это в дополнение к http://delphimaster.net/view/9-1150186032/ ???
(я просто увидев тему решил порыскать, прочитал там твой последний пост и...)
Т. е. при создании текстуры ты ей говоришь, что Width и Height будут не
нулевыми, а такими, которые ты им даешь?
Так, а потом, когда формируешь текстурные координаты (0..1), ты
пользуешься теми же Width и Height?
Или размеры текстуры как то по другому указываешь?
← →
XProger © (2006-06-30 22:30) [2]VolanD666,
1) освещать группы полигонов
2) вокруг lightmap"a для группы полигонов создавать рамку в 1-2 пикселя цвета lightmap"а %)
← →
VolanD666 (2006-07-01 07:35) [3]
> 2) вокруг lightmap"a для группы полигонов создавать рамку
> в 1-2 пикселя цвета lightmap"а %)
Вот этого я и боялся...
← →
VolanD666 (2006-07-01 15:35) [4]Хм... А вот почему, например, есть 45 пиксель ( т.е. 45/512=0.087890625 ), а на полигоне я его не вижу?
← →
Cash © (2006-07-01 15:51) [5]Потаму, что размеры текстуры могут отличаться от размеров исходной картинки.
← →
VolanD666 (2006-07-01 16:12) [6]Это как? У меня текстура 512х512 => 45 пиксель будет иметь координату 45/512=0.087890625. Так?
← →
Cash © (2006-07-01 16:27) [7]Так, э-э-э, текстура или исходная картинка?
Как правило размер текстуры чуть больше чем исходник.
(но этого может и не быть)
Размер самой текстуры можно узнать через GetLevelDesc, там она вернет
структуру, в которой и будут параметры Width и Height беззнакового целого
типа.
А вот из этих размеров уже можно TU и TV считать.
← →
VolanD666 (2006-07-01 16:46) [8]А если я ее гружу с помощью D3DXCreateTextureFromFile?
← →
Cash © (2006-07-01 17:10) [9]Дак, а как ее еще из D3DX библиотеки создать??? 8)
D3DXCreateTexture... я и имел ввиду, после создания текстуры
возми у нее GetLevelDesc и посмотри, если размеры одинаковы, то
там примешана фильтрация, иначе - неверные текстурные координаты.
← →
XProger © (2006-07-02 02:16) [10]VolanD666, получишь 46 пиксель по счёту :)
← →
VolanD666 (2006-07-02 09:13) [11]Why?
← →
XProger © (2006-07-02 12:51) [12]VolanD666, считаем с нуля :)
0 - граница, 0.5 - первый тексель, следовательно 45.5 - 46 тексель
← →
VolanD666 (2006-07-02 18:05) [13]А, ну это понятно )
А вот я еще косяк заметил, как только меняем разрешение текстур lightmap"а, то происходит не стыковка полигонов на границе. Как с этим борются?
← →
XProger © (2006-07-02 18:27) [14]Генерируют lightmap для группы полигонов ;)
← →
VolanD666 (2006-07-02 19:32) [15]А группируют по какому принципу?
1) Полигоны должны иметь хотя бы две общие точки
2) Лежать в одной плоскости
Так?
← →
VolanD666 (2006-07-06 17:20) [16]3) Нормали направлены в одну сторону
← →
_3d[Power] © (2006-07-08 09:32) [17]Под опеном это лечится
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-08 09:55) [18]Но полигоны все равно надо группировать?
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.063 c