Lightmap

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Maxwell
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 182
Зарегистрирован: 01.10.2003 (Ср) 15:48
Откуда: Russia

Lightmap

Сообщение Maxwell » 27.10.2004 (Ср) 21:16

Принцип его работы понятен, помогите его реализовать.
Начнём с малого. Есть треугольник,

(-1, 1, 5)
(1, 1, 5)
(0, -1, 5)

как расчитать tu и tv каждой точки для ligthmap-а?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 31.10.2004 (Вс) 13:55

Проектируешь вертекс на плоскость, перпендикулярную вектору света - получаешь текстурные координаты для LiteMap.

Maxwell
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 182
Зарегистрирован: 01.10.2003 (Ср) 15:48
Откуда: Russia

Сообщение Maxwell » 31.10.2004 (Вс) 21:31

Может я, что-то не понимаю. В инете я вычитал, что текстура lightmap-а на треугольник накладывается таким методом:
Изображение
Для первых двух точек координаты будут (0,0) и (1,0), а для третей точки их надо найти при помощи вектора v и n. Находим v из 2 точки в 1, далее u, который перпендикулярен v и нормали полигона. А потом для каждого текселя lightmap-а его освёщенность. Лядно с текселями потом, как вычислить tv и tu для 3-ей точки имеея эти вектора?

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 02.11.2004 (Вт) 22:59

я бы просто посоветовал порыться на http://gamedev.ru там очень много было инфы по созданию карт освещенности.
ХЎ

Maxwell
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 182
Зарегистрирован: 01.10.2003 (Ср) 15:48
Откуда: Russia

Сообщение Maxwell » 04.11.2004 (Чт) 11:40

Да, но я досих пор не понимаю, как расчитать текстурные координаты для lightmap-а. Моё прошлое высказывсание было ошибочным, если треугольник неправильный то этот способ не работает.
Надо создать типа bounding box-а для него, для 2D не проблема рассчитать, но для 3D, тем более надо получить 2 координаты для tv и tu? :?

Maxwell
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 182
Зарегистрирован: 01.10.2003 (Ср) 15:48
Откуда: Russia

Сообщение Maxwell » 04.11.2004 (Чт) 22:25

Ладно вопрос другого рода: как узнать имя subset-а?

Maxwell
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 182
Зарегистрирован: 01.10.2003 (Ср) 15:48
Откуда: Russia

Сообщение Maxwell » 08.11.2004 (Пн) 14:01

У меня ещё вопрос?
:wink: Есть треугольник первая точка 0;0, вторая 1;0, а третья не известна и известны длины всех сторон.
Как найти 3 точку?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 08.11.2004 (Пн) 14:34

Это возможно только на плоскости, в пространстве этих условий недостаточно.
Даже на плоскости - и то имеем два варианта решения.

Maxwell
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 182
Зарегистрирован: 01.10.2003 (Ср) 15:48
Откуда: Russia

Сообщение Maxwell » 08.11.2004 (Пн) 17:42

Это и есть на плоскости. По идеи можно по соотношению сторон, по какой формуле это реально решить?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 09.11.2004 (Вт) 11:55

Задачка для восьмого класса.

a^2=x^2+y^2
b^2=(x-1)^2+y^2
b^2=x^2+y^2-2*x+1
b^2=a^2-2*x+1
2*x=a^2-b^2+1

x=(a^2-b^2+1)/2
y=sqr(a^2-x^2)

Последние две строчки - искомые формулы.
Когда под корнем положительное число - два ответа, ноль - один ответ, отрицательное - решений нет.

Maxwell
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 182
Зарегистрирован: 01.10.2003 (Ср) 15:48
Откуда: Russia

Сообщение Maxwell » 10.11.2004 (Ср) 20:59

Спасибо, всё работает. :D Получилось рассчитать координаты для lightmap, теперь надо её создать.
Как создать пустую тектуру и програмно забить ей цаета пикселей?

Maxwell
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 182
Зарегистрирован: 01.10.2003 (Ср) 15:48
Откуда: Russia

Сообщение Maxwell » 14.11.2004 (Вс) 14:07

Ну как же это работает?

Код: Выделить всё
Dim pRect As D3DLOCKED_RECT

Set pTexture = d3dx.CreateTexture(d3dDevice, 128, 128, 0, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED)
pTexture.LockRect 0, pRect, 0, 0
 
Как изменить байты pRect?
     
pTexture.UnlockRect 0


У кого есть SDK, может там это есть.


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28

    TopList