Смена времени суток на DX8

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

Модератор: Mikle

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Смена времени суток на DX8

Сообщение djalex777 » 15.04.2007 (Вс) 19:43

Может есть у кого такой пример на VB и DX8? Интересует реализация динамического неба в зависимости от положения солнца (например как в GTA). Видел примеры пиксельных шадеров на DX9... мало чем они мне помогли...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 15.04.2007 (Вс) 20:26

Я делал такое вращение большой Sky-сферы. А также несколькими слоями, для регулировки состояния неба.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Сообщение djalex777 » 17.04.2007 (Вт) 12:15

Я делал перемещением текстуры с градиентом неба по полусфере и изменением цвета вертексов в точках, образующих полусферу, по текстуре градиента неба. Но модель неба получается привязанная к чему-либо. Слышал, что существует алгоритм Переза... Исходников найти не могу на dx 8, на 9 видел только пиксел и вертекс шадеры.... Сейчас разбираюсь со статьёй Переза на тему моделирования неба. Попробую что-нить изобразить на VB6 )

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 17.04.2007 (Вт) 15:36

djalex777
Небо должно двигаться вместе с камерой.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Сообщение djalex777 » 17.04.2007 (Вт) 20:05

Т.е. получается при повороте камеры небо остается неизменным? Скоро выложу демку с динамическим небом.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 17.04.2007 (Вт) 22:39

Поворот камеры не влияет на небо. А перемещение влияет. Либо можно создать очень большое небо, и рисовать его с большим фруструмом, при этом вообще не меняя его положения. Но зачем? От этого лучше нисколько не будет, а вот ФПС упадёт.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Сообщение djalex777 » 19.04.2007 (Чт) 12:59

Написал я динамичное небо! ) Не без помощи исходников stellarium-0.8.2 на сях под линух. )) Но! Не могу понять как перемещается солнце??? По какому закону? Еще вопрос - как сюда файлы выкладывать?? Выложу исходники на VB. Нет еще в инете такого.. А теперь будет!

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 19.04.2007 (Чт) 14:46

djalex777
Солнце перемещается по космосу с той же скоростью, что и Земля, так что данным перемещением можно пренебречь. Земля же вращается вокруг солнца по эллиптической орбиты. Также Земля вращается вокруг своей оси.

Таким образом, чтобы правильно отрисовать солнце необходимо:
1) Рассчитать позицию земли относительно солнца в это время года и поставить туды камеру.
2) Рассчитать поворот земли вокруг своей оси и развернуть камеру так же. Рекомендуется учесть наклон земной оси относительно орбиты.
3) Отрисовать солнце в начале координат.
Изображение

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Сообщение djalex777 » 20.04.2007 (Пт) 13:07

Всё демка готова!!! Допишу один класс и выложу исходники.
Пока есть демка:

http://www.gamedev.ru/download/?id=5352

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

И я после этого новичок? ;)

Сообщение djalex777 » 29.04.2007 (Вс) 19:24

Обещанные исходники на VB :)
Пользуйтесь! Если вдруг кто что доработает - выкладывайте - не стесняйтесь. Например lens flare, облачка и т.д.

http://www.gamedev.ru/download/?id=5383

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 30.04.2007 (Пн) 9:53

Чета както резко переходит от половинки солнца к полному
половинка рассеивается - увеличивается и исчезает
а потом только выходит маленькое солнце которое поднимаясь становится больше
хотя конечно может я закатов не видел )

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Сообщение djalex777 » 30.04.2007 (Пн) 16:16

Это для быстрого рассвета, заката. Исходники есть - можно поменять скорость. ;) На размер солнца и луны влияют несколько факторов - место положения так скажем, глаз - задается меридианом и дата...

Ktulhu
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 14.07.2007 (Сб) 14:03
Откуда: Киев, Р'льех

Re: Смена времени суток на DX8

Сообщение Ktulhu » 18.10.2008 (Сб) 20:00

djalex777, выложи плз исходники еще раз. С гэймдэва уже удалили(

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Смена времени суток на DX8

Сообщение djalex777 » 30.10.2008 (Чт) 20:12

Исходник динамического неба. Оформлен в виде класса.
1. В начале вызываем функцию skyBuild, тем самым создавая объект неба (сферу)
2. Функция skyCompute расчитывает цвет неба в каждой точке исходя из положения солнца. Т.е. если вы перемещаете солнце, то перед прорисовкой неба необходимо всегда вызывать эту функцию
3. Прорисовка неба (перед этим, небо хотя бы один раз должно быть рассчитано)
Рисуем так:
Код: Выделить всё
Dim sky as new classSkyHemisphere
...
d3ddevice.SetRenderState D3DRS_LIGHTING, 0
d3ddevice.SetRenderState D3DRS_CULLMODE, D3DCULL_CW
d3ddevice.SetRenderState D3DRS_ZENABLE, 0
d3ddevice.SetRenderState D3DRS_ZWRITEENABLE, 0

Dim mat As D3DMATRIX
Dim mat1 As D3DMATRIX
   
D3DXMatrixTranslation mat, CAMERA_X, CAMERA_Y , CAMERA_Z
D3DXMatrixRotationX mat1, -PI / 2
D3DXMatrixMultiply mat, mat1, mat

d3ddevice.SetTransform D3DTS_WORLD, mat
   
Sky.skyRender
...

Не забывайте восстановить параметры устройства рендера.
Ещё свойство Color можно использовать для задания цвета солнечного освещения.
8)
У вас нет доступа для просмотра вложений в этом сообщении.


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

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

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

    TopList