The Marching Cubes

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

Re: The Marching Cubes

Сообщение Tolking 21 окт 2014, 23:37

bwolf88 писал(а): И еще нет вариантов с 90 градусными углами, то есть остроугольный куб не отрисовать, собственно поэтому Иенс (разраб BlockScape) отказался в свое время от этого алгоритма.

Не совсем так. Если помучаться то можно. Для этого нужно брать не центры ребер, а края, тогда "угловая грань" редуцируется в ребро, а "угловой треугольник" в вертекс. Чтобы не менять сильно алгоритм можно оставить малюсенький треугольник и узенькую грань. Визуально будут кубики.

bwolf88 писал(а):Что мне пока остается непонятно как такие треугольники текстурить. Допустим с Marching Squares все легко - отрисовываем нужный куб в единичном масштабе и присваиваем те же координаты UV развертке. В 3Д я пока не понял как перенести это на текстуру, чтобы получилось красиво, хотя если честно я пока вообще без развертки делал, может все окажется просто :D.

:)) Если придумаешь как на генерируемый меш накладывать больше 4 материалов с плавным переходом отпишись... И разберешься с трилиниарной разверткой тоже хвались... Да и освещение еще... :)
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: The Marching Cubes

Сообщение bwolf88 21 окт 2014, 23:49

Если придумаешь как на генерируемый меш накладывать больше 4 материалов с плавным переходом отпишись... И разберешься с трилиниарной разверткой тоже хвались... Да и освещение еще..


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

Re: The Marching Cubes

Сообщение Tolking 21 окт 2014, 23:53

Да пофиг... Пусть будет 1 материал с больше чем 4 текстурами... :) Главное чтобы плавный переход был...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: The Marching Cubes

Сообщение bwolf88 22 окт 2014, 20:15

Переосмыслил немного алгоритм и покурил еще доков (задолбался подбирать правильную расстановку по принципу тайлинга пространства), оказалось что Marchin Cubes это нифига не 3Д тайлинг, по типу кубической сетки. Пришел к выводу что правильный MC - это работа с вершинами кубов, а не соседними клетками. Переписал код и получилось, что алгоритм подбора правильной ячейки (суть MC) с замолнением List-а вершин и треугольников !!, без библиотеки треугольников, углов и т.п. занимает всего...

11 строчек 8() . БЛ*, я 4 дня потратил чтобы прийти к коду длиной в 11 строчек (ну у меня чуть больше поскольку я вместо одного цикла полностью расписываю подбор). Вообщем MC окончательно побежден, моя мечта сбылась :D.


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

Re: The Marching Cubes

Сообщение bwolf88 26 окт 2014, 07:51

Соединил чанки в единую конструкцию. На видео миникарта с потолком и полом, чтобы показать, что меши соединяются правильно и без артефактов. Можно копать, можно не копать :) и меши обновляются довольно шустро, если не перебаршивать с размерами. Теперь будут думать как к этому всему прикрутить Octree дерево, поскольку небольшой мирок 128х128х32 грузится секунды полторы и жрет почти 200 метров оперативки, да и само обновление быстренько ее поедает :(.

Буду рад, если подскажете как можно, кроме деревьев, оптимизировать по памяти сложные меши:).

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

Re: The Marching Cubes

Сообщение GeoGraf 27 окт 2014, 09:40

bwolf88,
(3A4OT)
Аватара пользователя
GeoGraf
UNITрон
 
Сообщения: 341
Зарегистрирован: 10 сен 2014, 16:53
Откуда: Тверь, Россия

Re: The Marching Cubes

Сообщение seaman 26 ноя 2014, 22:13

seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: The Marching Cubes

Сообщение bwolf88 27 ноя 2014, 18:01

По первой ссылке - слишком избыточные скрипты (перевод на тетраэдроны и т.п.), + здесь (на форуме тема есть) уже пытались его перевести эти скрипты на генерируемый и изменяемый террейн, вообщем больше времени провозишься, чем писать с нуля.

Если цель делать террейн - на ГПУ нет смысла переносить, геометрия обсчитывается и на ЦПУ достаточно быстро, самая затратная операция обсчет коллайдеров (это по второй ссылке), вычисления которого дальше майн потока не перенести.

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

Re: The Marching Cubes

Сообщение bwolf88 04 дек 2014, 01:55

Тест скорости загрузки чанков MarchinCubes под оптимизацией по скорости :).
2560 чанков размерами 16х16х16 - 25 - 30 секунд (с коллайдером). FPS 120-150. Странно, время корутины выставил 0,0025, но он отказывается повторять цикл чаще, чем 100 раз в секунду. Среднее время загрузки чанка порядка 5 млс полагаю (при таком ФПС).

В других тестах, при одномоментной загрузке на 1000 чанков уходит порядка 5,5 секунд, что сопровождается соответствующим провисанием :D. Полагаю на 5 Юньке время сократится секунд до 3-3,5, поскольку коллайдеры в ней обрабатываются в два раза быстрее.
Теперь нужно разобраться как сгладить кубичность рельефа, и поколдовать над шумами :).


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

Re: The Marching Cubes

Сообщение DbIMok 04 дек 2014, 03:06

bwolf88 писал(а):FPS 120-150. Странно, время корутины выставил 0,0025, но он отказывается повторять цикл чаще, чем 100 раз в секунду.

корутина это некие действия, "размазанные" по кадрам. корутина не может "вызываться" чаще Update. нужно либо ставить время большее, чем время кадра, либо "покадрово" ожидать null, либо вообще отказаться от корутины в пользу Update, чтобы не нести доп. расходы
viewtopic.php?f=87&t=11811
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: The Marching Cubes

Сообщение bwolf88 04 дек 2014, 03:29

DbIMok писал(а):viewtopic.php?f=87&t=11811


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

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

Re: The Marching Cubes

Сообщение DbIMok 04 дек 2014, 04:05

bwolf88 писал(а):и вообще о потоках имею довольно смутное представление

но их нужно задействовать в Update? [-x сам не пробовал, но выглядит многообещающе
https://www.assetstore.unity3d.com/en/#!/content/3586
https://github.com/spicypixel/concurrency-kit (Tor вам в помощь ;) )
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: The Marching Cubes

Сообщение bwolf88 04 дек 2014, 04:45

Я в третий раз пытаюсь закинуть невод в море :D.

Немного поразмыслив, я понял, что нифига не разобрался с Marching Cubes. То, что видео выше - немного другой подход к алгоритму, скорее его разновидность, наравне с Марширующими тетраэдронами т.п., так что если бы патент сейчас был в силе, я под него не попал бы, поскольку моя тяга к упрощению, вкупе с непонятливостью позволила изобрести свой велосипед. Мой подход отличается тем, что работает не с ячейками сетки, а с его вершинами и у меня отсутствует таблица углов, и расчеты упростились, да и вообще от марширующих кубов осталась только таблица треугольников... Это скорее уже Marching Vertex получается. Пока я не знаю всех преимуществ и недостатков этого велосипеда, по сравнению с оригиналом, но работает он шустро.

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

Re: The Marching Cubes

Сообщение waruiyume 04 дек 2014, 05:17

Скрытый текст:
Изображение
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: The Marching Cubes

Сообщение Order 04 дек 2014, 06:59

тесты сделать , сравнить производительность...

Тоже разбирался как то, но начал с 2д..
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34

Пред.След.

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

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

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