Снова Ландшафт

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

Модератор: Mikle

vitalik_b
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 16.02.2006 (Чт) 21:03

Сообщение vitalik_b » 18.08.2006 (Пт) 19:01

DirectXManiac
Скинь шейдер на email please.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 18.08.2006 (Пт) 19:40

vitalik_b
Я думал что получилось! Ага! С одной ещё можно сделать а с двумя не получаться... :)
#define ROFL 0xDDDD

vitalik_b
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 16.02.2006 (Чт) 21:03

Сообщение vitalik_b » 18.08.2006 (Пт) 19:58

Можно вообще 32 текстуры сделать,
но прежде лучше проблему со швами решить.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 19.08.2006 (Сб) 12:25

vitalik_b
Можно сделать мультитекстурирование подругому! Без шейдеров 1ой текстурой! Поделиться способом?
#define ROFL 0xDDDD

vitalik_b
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 16.02.2006 (Чт) 21:03

Сообщение vitalik_b » 19.08.2006 (Сб) 12:36

DirectXManiac
через VolumeTexture?

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 19.08.2006 (Сб) 12:43

vitalik_b
НЕЕ... Просто делим ландшафт на кубики размером 256x256 и меняем внутреность текстуры!
А как ты хотел через VolumeTexture? Поделись
#define ROFL 0xDDDD

vitalik_b
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 16.02.2006 (Чт) 21:03

Сообщение vitalik_b » 19.08.2006 (Сб) 13:17

Если я правильно понимаю что такое VolumeTexture, то можно:
В каждый уровень VolumeTexture загрузить по текстуре,
Немного изменить формат вершин и VS , добавив tw.
И можно будет просто менять значение tw для вершины,
чтобы менять текстуру на ней. :)

как здесь
http://www.robydx.altervista.org/DirectX8/Direct3DLess47.htm

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 19.08.2006 (Сб) 13:23

А я имею ввиду менять внутреность текстуры т.е. при нарисованом на ней квадрате(на ланде) мы копируем этот квадрат в текстуру в то место где был клик(можно через ps) и накладываем каждый цикл
#define ROFL 0xDDDD

vitalik_b
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 16.02.2006 (Чт) 21:03

Сообщение vitalik_b » 19.08.2006 (Сб) 13:50

DirectXManiac
Не понял, объясни подробнее.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 19.08.2006 (Сб) 15:21

vitalik_b
Есть текстуры 256х256... При нажатии на ландшафт в зависимости от tu,tv мы берем из текстуры пиксели в ложим их в нашу динамическую... Короче так:
1.Определяем на какой именно квадрат было нажатие
2.Определяем точку столкновения и крайние точки наложения(-1/2 brush, +1/2 brush)
3.Берем попиксельно перемещаем из тайла в динамическую текстуру(256х256 нужного квадрата)
4. Накладываем текстуру на ланд
#define ROFL 0xDDDD

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

Сообщение Bonesnapper » 19.08.2006 (Сб) 15:21

Давно видел этот пример
тогда подумал что он не в тему
а вот щас покопался и увидел что может не плохо получится
тока вот как с производительностью :?:
и сколько так можно тестур использовать(хотя 8 по мойму достаточно с головой)
У вас нет доступа для просмотра вложений в этом сообщении.

vitalik_b
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 16.02.2006 (Чт) 21:03

Сообщение vitalik_b » 19.08.2006 (Сб) 15:23

А вот с volumeTexture.
У вас нет доступа для просмотра вложений в этом сообщении.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 19.08.2006 (Сб) 15:35

Bonesnapper
А где то сам пример?
vitalik_b
Гы... А я как раз тоже сделал! :) Прочитай личку :wink:
#define ROFL 0xDDDD

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

Сообщение Bonesnapper » 19.08.2006 (Сб) 15:44

да пример все тот же просто текстуры заменены и их скаил поменян

:!:
Вот толькоя что то не пойму где указывается от чего зависит текстура
в уроке она зависит от tw а у vitalik_b от specular

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 19.08.2006 (Сб) 15:45

Bonesnapper
Посмотри вимательно VertexShader!!!! Там есть доп. строка
def c1 0.0f,0.0f,0.0f,10.0f
#define ROFL 0xDDDD

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

Сообщение Bonesnapper » 20.08.2006 (Вс) 11:57

у когонибудь есть идеи как избавится от неправильного перехода между текстурами :?
У вас нет доступа для просмотра вложений в этом сообщении.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 20.08.2006 (Вс) 13:27

Bonesnapper
Возможно проблема в VolumeTexture! Потому как у меня бывает что некоторые участки просто становяться черными или в артефактах :(
#define ROFL 0xDDDD

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

Сообщение Bonesnapper » 20.08.2006 (Вс) 14:23

как я понимаю эта проблема возникает вследствии "интерполяции"
между 2 текстурами

если они расположены рядом то проблем нет
а если между ними есть еще текстуры то между теми 2 появятся и другие

т.е
tw=0.1 - первая текстура
tw=0.2 - 2 текстура
tw=0.3 - 3 текстура
tw=0.4 - 4 текстура
tw=0.5 - 5 текстура

тогда tw=0.15 - что то средне между 1 и 2
так что если рядом получатся 1 и 5 текстура
tw между ними будет интерполироваться от 0.1 до 0.5
вследствие этого появятся 2,3,4 текстура

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 20.08.2006 (Вс) 14:39

Bonesnapper
Интересная мысль... Но как избавиться?
#define ROFL 0xDDDD

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

Сообщение Bonesnapper » 20.08.2006 (Вс) 14:56

я думаю только сортировкой и назначением значений tw так чтоб
все текстуры были рядом
при этом в volume texture будет намного больше текстур (зависит от сложности рисунка) и они будут повторятся

вот как все это реализовать....

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 20.08.2006 (Вс) 15:57

Bonesnapper
Пока что я занимаюсь более серйозными делами... Например разбираю систему ROAM(ландшафт с LODами) и Octree
#define ROFL 0xDDDD

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

Сообщение Mikle » 20.08.2006 (Вс) 16:06

Чтобы избавиться от перехода, нужно выбирать слой из Volume не через VS Specular, а на пиксельном шейдере, используя вторую текстуру в качестве маски. На эту текстуру нужно отключить фильтрацию.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 20.08.2006 (Вс) 20:18

Mikle
Ты вроде как улучшаешь ландшафт? Ты собираешся делать ЛОДы?
#define ROFL 0xDDDD

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

Сообщение Mikle » 21.08.2006 (Пн) 8:23

Делаю LODы, могу показать промежуточный результат.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 21.08.2006 (Пн) 10:10

Mikle
Давай! Кстати а Octree или Quadtree ты сделаешь? Просто у меня немного невыходит но по скорости быстрее на 10-15 fps было а если бы получилось я думаю выграли бы под 20...
ЗЫ. Как сделать ландшафт если спользуеться LookAt?
Делаю так:
LS.Render CamPos.X, CamPos.z, 0, Atn(4/12)
Но не получаеться... Мне надо сплайн камеру сделать но без этого никак! :(
#define ROFL 0xDDDD

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

Сообщение Mikle » 22.08.2006 (Вт) 8:49

Давай!

Даю! :)
Тут QTree, зачем на ландшафте OcTree? Выводит карту 2048*2048 без ограничения дальности примерно с той же скоростью, как старый вариант выводил фрейм 256*256. Между LOD уровнями видны швы - это еще не доделано, так же еще нет Frustum Colling, когда будет - быстродействие еще выростет.
Вместо TGA применяю карту с Single 32bit значениями высот, 256 градаций высоты уже мало, поэтому карту предварительно сгенерируйте (это 16 мБ), генератор прилагается.

DirectXManiac
Код: Выделить всё
LS.Render CamPos.X, CamPos.z, 0, Atn(4/12)

Это для камеры, которая смотрит под фиксированным углом 0 с фиксированным наклоном Atn(4/12), подставь нужное.

Правка:
Что-то файл не аттачится, выкладываю сюда:
http://tuapse-mikle.narod.ru/Qtls.rar

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 23.08.2006 (Ср) 14:32

Mikle
Красота! Только вот детализация раньше была лучше помойму! Слишком острые углы! А так по скорости суперски! Как всегда жжошь!
У меня есть сплайн камера которая идёт по 2 сплайнам 1 - Pos, 2 - Look... Как посчитать этот угол?
#define ROFL 0xDDDD

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

Сообщение Mikle » 23.08.2006 (Ср) 16:42

Код: Выделить всё
dx=look.x-pos.x
dy=look.y-pos.y
dz=look.z-pos.z
r=sqr(dx*dx+dz*dz)
diff = +-atn(dy/r)

+ или - выбираешь сам, что подойдет.
А угол angle определяется, как в примере с автофизикой.
В этом примере детализация вблизи такая же, как и раньше, но при удалении уменьшается, в этом и состоит LOD.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 23.08.2006 (Ср) 16:46

Mikle
Я понимаю в чём состоит LOD! Даже разбирался с ним но не смог поборость артефакты... Как у тебя в примере с интерполяцией... Но вот в статье это есть!
Спасибо!
#define ROFL 0xDDDD

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 23.08.2006 (Ср) 18:34

Mikle
А как писать в s32? Формат интересный! Ты просто побайтово пишешь высоту ландшафта?
Код: Выделить всё
Open "land.s32" For Binary As #1
Put #1
Close
#define ROFL 0xDDDD

Пред.След.

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

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

Сейчас этот форум просматривают: Google-бот и гости: 0

    TopList  
cron