Height Map в 3DImport - Форум
W4Tweaks
Меню сайта
Последние файлы
Последние темы


Вход



Мини-чат
 
500

Статистика
Онлайн:

Сегодня заходили: Joker, 4erveR, Unaited, 12sunflowers


Друзья сайта

Если вы хотите увидеть в этом спиcке свой сайт загляните сюда

Наш баннер:



· Регистрация · Вход
[ Новые сообщения · Участники · Подписки · Поиск · RSS ]
Страница 1 из 212»
Форум » Worms 4 Mayhem » 3.3. Идеи карт и их обсуждение » Height Map в 3DImport
Height Map в 3DImport
AlexBond
Дата: ПТ, 13.03.2009, 18:18:14 | Сообщение # 1
AlexBond
Легендарный червь
Группа: Админы
Сообщений: 1029
Репутация: 105
Статус: Offline
Делая карту Сфинкс,

Я столкнулся с тем, что такую часть как ландшафт и островки нериально конвертнуть из 3DS в poxel чтобы она выглядела хорошо...

Поэтому помучавшись немного я решил что проще сделать дополнение к импорту в виде HMAP т.е. апокселяция модели будет не слоевой, а высотной, в теории это просто сделать, только вот на практике надо ковыряться....


 
Герыч
Дата: ПТ, 13.03.2009, 20:30:42 | Сообщение # 2
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
это надо как отдельную опцию(в окошке конвертации на выбор 2 режима-слоевой и высотный)
а вообще height map тупо задаёт смещение высоты? то есть если на выстоной карте покселя горка, то если перевернуть поксель другой стороной, то там дырка?


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
AlexBond
Дата: СБ, 14.03.2009, 03:30:51 | Сообщение # 3
AlexBond
Легендарный червь
Группа: Админы
Сообщений: 1029
Репутация: 105
Статус: Offline
Да я так и планирую, а что дырка это не страшно, зато можно будет делать плавные поверхности типа такани, волнообразной. горы, и т.п.
Я даже думаю с помощью высотной карты можно лицо человеческое переносить, а то приходилось вырезать нос и брови с глазами, чтобы хоть что-то было понятно....

Еще проблема в том что надо как-то определить где же верх у объекта... а это задача непростая...


 
Герыч
Дата: СБ, 14.03.2009, 10:51:13 | Сообщение # 4
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
по координате z) просто предварительно или в своём редакторе его повернуть или в 3dmax'е

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
AlexBond
Дата: СБ, 14.03.2009, 11:49:04 | Сообщение # 5
AlexBond
Легендарный червь
Группа: Админы
Сообщений: 1029
Репутация: 105
Статус: Offline
ну ты не забывай что в Worms координата высоты это Y , а не Z.
Хм, тогда предлагаешь не проводить корреляцию углов? Просто взять максимумы и минимумы и создать поксель высот?

Еще проблема с зернистостью, надо как-то масштаб устанавливать...


 
SW_Krash
Дата: СБ, 14.03.2009, 14:00:55 | Сообщение # 6
SW_Krash
BugagaXD
Группа: Проверенные
Сообщений: 818
Репутация: 28
Статус: Offline
вуху... нифигасики =))) ведь если это всё сделать то очень кул будет??? а как будут накладываться текстуры???

Всё что ни делается, делается в Китае(SW_Krash, 2009)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
Я отрицаю вашу реальность и заменяю её своей!(Адам Севидж, 200x)
OFFTOP SWEAT OFFTOP(фольклор)

 
AlexBond
Дата: СБ, 14.03.2009, 19:41:26 | Сообщение # 7
AlexBond
Легендарный червь
Группа: Админы
Сообщений: 1029
Репутация: 105
Статус: Offline
Не знаю про какие ты там текстуры говоришь, лично я сделал вот что

Работает вроде неплохо, только так и не знаю как =) Все переменные для формул поставлял вручную, потому что теория никак не хотела с относительностью дружить =)


 
Герыч
Дата: СБ, 14.03.2009, 21:14:30 | Сообщение # 8
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
я бы вообще сделал бы следующим образом:

в окне импорта вращаешь модель так, чтобы определить верх и низ(или выбираешь дефолтное положение модели), ну и потом вводишь "зернистость", и потом просто сканируешь по всем x и z и вычисляешь среднее значение высоты в окрестности этой точки(ну с приорететом этой точки, то есть для точки (x,z) вычисляешь к примеру число yсреднее=(4*y(x,z)+3*y(x-1,z)+3*y(x+1,z)+3*y(x,z-1)+3*y(x,z+1)+2*y(x-1,z-1)+2*y(x+1,z-1)+2*y(x-1,z+1)+2*y(x+1,z+1))/(4+3+3+3+3+2+2+2+2) )


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
AlexBond
Дата: ВС, 15.03.2009, 18:53:34 | Сообщение # 9
AlexBond
Легендарный червь
Группа: Админы
Сообщений: 1029
Репутация: 105
Статус: Offline
ничего не понимаю не люблю теорию и формулы, у меня и так все работает, зернистость поставил от функции Round беру размер фигуры, округляю, и домножаю на size чтобы было точно. В итоге от юзера ни надо вообще никаких данных получать, По x и z получается из размера объекта, по Y я поставил 2 его и хватает для островов.
Code
function GetSizeH(var ArrayPoints: AVer;var PoxSize:TPoxSize): Tvector;
var
Size:Tvector;
j,i:integer;
begin
    j:=Length(ArrayPoints)-1;
    Size.X:=0;
    Size.Y:=0;
    Size.Z:=0;
     for i:=0 to j do
     begin
      IfAMinBMax(Size.X,abs(ArrayPoints[i][0]));
      IfAMinBMax(Size.Y,abs(ArrayPoints[i][1]));
      IfAMinBMax(Size.Z,abs(ArrayPoints[i][2]));
     end;
      PoxSize.XSize:=round(Size.X);
     if PoxSize.XSize>25 then PoxSize.XSize:=25;
      Result.X:=Size.X*2/PoxSize.XSize;

      Result.Y:=Size.Y*2/PoxSize.YSize;
      PoxSize.ZSize:=round(Size.Z);
      if PoxSize.ZSize>25 then PoxSize.ZSize:=25;
      Result.Z:=Size.Z*2/PoxSize.ZSize;
end;

Точку я вычесляю как пересечение прямой, т.е. высоты точкуи XnZn с треугольником через фунцию
LineFace(p1, p2, pa, pb, pc, p)
Которая дает истину если было пересечение прямой(p1,p2) с треугольником(pa, pb, pc) и возвращает в p координату пересечения.

А предпросмотр, это слишком шикарная опция, я ее делать не буду!

Задачу я выполнил, и это главное.


 
Герыч
Дата: ВС, 15.03.2009, 20:51:51 | Сообщение # 10
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
ну ладно) не любишь ты давать права юзерам) по-моему чем больше под контролем у юзера, тем лучше

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
AlexBond
Дата: ВТ, 24.03.2009, 19:18:12 | Сообщение # 11
AlexBond
Легендарный червь
Группа: Админы
Сообщений: 1029
Репутация: 105
Статус: Offline
Кстати кому нужна эта функция, то редактор с ней лежит тут http://worms3d-portal.com/download.php?id=497

 
firsacho
Дата: ВТ, 24.03.2009, 20:57:42 | Сообщение # 12
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3636
Репутация: 71
Статус: Offline
я чет так и не понял, че за функция\




Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
AlexBond
Дата: СБ, 28.03.2009, 18:54:10 | Сообщение # 13
AlexBond
Легендарный червь
Группа: Админы
Сообщений: 1029
Репутация: 105
Статус: Offline
У меня тут возникла идея, улучшить эту функцию. Т.е. сделать ее не одноуровневый, а многоуровневой.
Короче идея такая.
Шаг 1. Берется объект, к примеру каньен. Он делется сеткой на воксели, воксель который находится вне поверхности - принемает нулевую текстуру, в итоге получается высеченый остров,
Шаг 2. Каждый не нулевой воксель корректируется высотной картой полученной из сканирование 3d модели в зависимости от позиции.

В итоге мы получаем высокосхожий каньон но уже в виде покселя.

Вот кое какие зарисовки
Модель из 3DSMAX при помощи HeightMap 3DImport

Модель с убранными вокселями, но без Hmap коррекции.


 
AlexBond
Дата: ЧТ, 02.04.2009, 18:30:48 | Сообщение # 14
AlexBond
Легендарный червь
Группа: Админы
Сообщений: 1029
Репутация: 105
Статус: Offline
Герыч нужна твоя помощь... Я никак не могу найти лучший способ для проверки вхождения вокселя в 3D модель.
Ковырял исходники проги poly2vox.c но никак не разобрался, как он это там делает...

Вообще задача такая, имеется Куб, нужно проверить вхождения модели в этот куб, и в зависимости от этого поставить текстуру, нулевую или нет.

У меня пока только идея проверки пересечения высот куба с треугольниками модели, но тогда слишком большая погрешность.

Если проверять точки, на вхождение, будет еще большая погрешность...

Алгоритм в poly2vox неплох, но я его не понимаю <_<

Прикрепления: poly2vox.c(91Kb)


 
Герыч
Дата: ЧТ, 02.04.2009, 21:19:24 | Сообщение # 15
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
поподробней и попонятней опиши, что надо! Дано, получить, в какой форме дано, в какой форме получить)

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Форум » Worms 4 Mayhem » 3.3. Идеи карт и их обсуждение » Height Map в 3DImport
Страница 1 из 212»
Поиск:

Copyright W4Tweaks™ 2008-2016 Хостинг от uCoz