The Marching Cubes

Научился сам? Помоги начинающему.

Re: The Marching Cubes

Сообщение Diab10 04 дек 2014, 09:50

bwolf88 писал(а):нужно многопоточность задействовать, а я пока не умею синхронизировать отдельный поток с Main, да и вообще о потоках имею довольно смутное представление.


Там делов то, на 1 вечер изучения, а то и меньше.
Раньше тоже боялся к ним подступиться, а оказалось, что это десяток строк кода :D
Аватара пользователя
Diab10
Адепт
 
Сообщения: 3401
Зарегистрирован: 17 мар 2011, 20:42
Откуда: 123 RUS
Skype: diab1023

Re: The Marching Cubes

Сообщение gnoblin 04 дек 2014, 19:10

Diab10 писал(а):
bwolf88 писал(а):нужно многопоточность задействовать, а я пока не умею синхронизировать отдельный поток с Main, да и вообще о потоках имею довольно смутное представление.


Там делов то, на 1 вечер изучения, а то и меньше.
Раньше тоже боялся к ним подступиться, а оказалось, что это десяток строк кода :D

да, еще расскажи мне про сокеты тож самое - я второй раз поржу )
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: The Marching Cubes

Сообщение Diab10 04 дек 2014, 19:16

gnoblin писал(а):
Diab10 писал(а):
bwolf88 писал(а):нужно многопоточность задействовать, а я пока не умею синхронизировать отдельный поток с Main, да и вообще о потоках имею довольно смутное представление.


Там делов то, на 1 вечер изучения, а то и меньше.
Раньше тоже боялся к ним подступиться, а оказалось, что это десяток строк кода :D

да, еще расскажи мне про сокеты тож самое - я второй раз поржу )


Нет, сокеты у меня затянулись на месяц. Но это вместе с сервером, сериализацией данных, связью с БД, и общей структурой сервера.
Но считаю, что это тоже не долго. Оно того стоит :D
Аватара пользователя
Diab10
Адепт
 
Сообщения: 3401
Зарегистрирован: 17 мар 2011, 20:42
Откуда: 123 RUS
Skype: diab1023

Re: The Marching Cubes

Сообщение bwolf88 05 дек 2014, 05:15

Не смог я допилить оригинальный, он у меня совсем не хочет правильно строить треугольники. Часов 5 продолбился, в итоге плюнул и допиливал свой вариант, он мне более понятен. Позаимствовал нормальный PerlinNoise с кучей настроек и изменил логику расчета позиции вершины (точнее логику позаимстовал, но перепилил под себя). На предыдущем видео все квадратичное, потому что вершины присваивались из простой самопальной таблички с шагом в 0.5f, теперь они считаются.

Рельеф выглядит более сглажено. Все, надо немного отвлечься на что нибудь другое, а то мозг разрывается, чуть позже прикручу деформацию и будет конфетка . :-o

Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Re: The Marching Cubes

Сообщение Tolking 05 дек 2014, 09:39

Прям завидую! :) Неплохая генерация. Как вершины считаешь?
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2714
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: The Marching Cubes

Сообщение bwolf88 05 дек 2014, 15:01

Tolking писал(а):Прям завидую! :) Неплохая генерация. Как вершины считаешь?


float GetOffset(float v1, float v2)
{
float delta = v2 - v1;
return (delta == 0.0f) ? 0.5f : (MCW.isoNoise - v1) / delta;
}

v1, v2 - углы которые образуют ребро. IsoNoise - это предельное значение вершины посчитанная перлином, на нее ориентируется расчет куба (выше/ниже). До этого у меня были простые bool (есть/нет) и перлин из этого видео https://www.youtube.com/watch?v=d-L5xPi1qwE&index=5&list=PLW2i42bgplOmRWRmo116mUA4N9-i17dIk. Кстати по его урокам я вообще в свое время учился меши строить ;;).

Я с бесплатного ассета (в инете сейчас не найду, но этот ассет Вот в этой теме парень использовал viewtopic.php?f=5&t=28823&st=0&sk=t&sd=a) скрипт перлина взял и формулу расчета вершин что выше. Пришлось таки прикручивать таблицу углов, так что теперь он больше похож на оригинал :).
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Re: The Marching Cubes

Сообщение bwolf88 05 дек 2014, 18:31

Кстати, советую вынести расчеты разверки в шейдер (обычный трипланарный, в инете их целая куча на любой вкус) - значительно сокращает время генерации, у меня раза в 2 быстрее стало, по сравнению с первыми вариантами, а видеокарту не сказал бы что очень уж грузит, точнее вообще не заметно :). Все никак руки не дойдут начать их изучать, а хотелось бы.
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Re: The Marching Cubes

Сообщение Tolking 05 дек 2014, 23:03

bwolf88 писал(а):float GetOffset(float v1, float v2)
{
float delta = v2 - v1;
return (delta == 0.0f) ? 0.5f : (MCW.isoNoise - v1) / delta;
}

:) Меняешь только y координату?
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2714
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: The Marching Cubes

Сообщение bwolf88 05 дек 2014, 23:17

Нет, там смещение идет от направления ребра. Нужно посчитать смещение между двумя углами (вершинами): 0,0,0 и 1,0,0 - смещение будет по Х, если между 1,0,0 и 1,0,1 - то по Z. Можно было и без таблицы углов обойтись, но так меньше условий :).
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Re: The Marching Cubes

Сообщение bwolf88 30 дек 2014, 21:28

Добрались руки переделать последний вариант. Ускорил еще на 15% генерацию, переписав все с нуля. Карта размерами 256х256х64 (1024 чанка) грузится 4,3 сек. Среднее ФПС при деформации 60-80. Максимальная просадка (до 35-40) когда деформируются сразу 8 чанков. Но в 5 юньке скорость обработки коллайдеров ускорят в 2 раза, так что не страшно :).

Размер "кисти" деформации 2х2х2.
В ближайших планах сделать бесконечную карту :).

Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Re: The Marching Cubes

Сообщение bwolf88 31 дек 2014, 12:41

Провел эксперимент по получению кубов с ровными гранями используя Marching Cubes. И это оказалось возможным :D, теперь осталось систематизировать. Чуствую себя скульптором.

Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Re: The Marching Cubes

Сообщение bwolf88 31 дек 2014, 15:07

Эксперимент 2. Первый вариант модифицированного MC - генерация кубов неплоха, а вот удалять кубами пока не научился :). Немного уменьшил силу деформирования.

Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Re: The Marching Cubes

Сообщение bwolf88 16 янв 2015, 14:06

Тест мультиматериалов.

Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Аватара пользователя
bwolf88
Адепт
 
Сообщения: 2184
Зарегистрирован: 30 апр 2014, 06:40
Skype: bwolf331

Пред.

Вернуться в Уроки

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

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