anonymous@RULINUX.NET~# Last login: 2024-11-05 20:46:20
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать] Фильтры
  • изображения
Скрыть

Воксельный рендерер

Я тут давно пишу воксельный рендерер. Ссылка на github. Продвинулся не то чтобы очень далеко, результаты на картинках. Скорость рендеринга зависит от формы объекта -- чем меньше в нём дырок и чем он выпуклее, тем быстрее. Чайник рендерится примерно 30 кадров в секунду, череп -- 25. Ещё можно удалять и добавлять воксели в объект прямо на лету. Ещё я намеренно не использую возможности видеокарты, рендеринг целиком на CPU. Если интересно, инструкции по сборке по ссылке. Увы, требуется уникальная для FreeBSD и MacOS библиотека -- Grand Central Dispatch, позволяющая распараллелить работу по нескольким ядрам. Под linux тоже работает, но соответственно, медленнее. Можно ускорить, создав файл с содержимым

text

[Window]

Width = 640
Height = 480
 


и запустить рендерер с опцией -c и этим файлом. Исходные данные в основном отсюда. Это всё. Ставьте лайки))

[путь к изображению некорректен]

[путь к изображению некорректен]

Больше картинок

Vasily(*) (2016-06-14 09:38:44)
Отредактировано Vasily по причине "не указана"
Mozilla/5.0 (X11; FreeBSD amd64; rv:40.0) Gecko/20100101 Firefox/40.0

[Ответить на это сообщение]
[#] [Добавить метку] [Редактировать] Ответ на: Воксельный рендерер от Vasily 2016-06-14 09:38:44
avatar
Скрыть

Re:Воксельный рендерер

> я намеренно не использую возможности видеокарты, рендеринг целиком на CPU.

Необычный способ уничтожить всё человечество посредством нагревания атмосферы.

anonymous(*)(2016-06-14 11:28:40)

Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0
[#] [Добавить метку] [Редактировать] Ответ на: Re:Воксельный рендерер от anonymous 2016-06-14 11:28:40
avatar
Скрыть

Re:Воксельный рендерер

Скажи это любителям конпелять ведро

Vasily(*)(2016-06-14 12:27:09)

Mozilla/5.0 (X11; FreeBSD amd64; rv:40.0) Gecko/20100101 Firefox/40.0
[#] [Добавить метку] [Редактировать] Ответ на: Воксельный рендерер от Vasily 2016-06-14 09:38:44
avatar
Скрыть

Re:Воксельный рендерер

Ты бы алгоритм описал в двух словах.

anonymous(*)(2016-06-14 13:24:23)

[#] [Добавить метку] [Редактировать] Ответ на: Re:Воксельный рендерер от anonymous 2016-06-14 13:24:23Фильтры
avatar
  • изображения
Скрыть

Re:Воксельный рендерер

Это запросто. Называется октодеревья. Берем все воксели и считаем для них bounding box, а также точку (x0,y0,z0), такую, что при разбиении пространства на 8 частей плоскосями x=x0, y=y0, z=z0, в полученных подмножествах будет примерно равное количество вокселей. Я предположил, что распределение вокселей примерно равномерно и считаю просто среднее из координат вокселей. Далее для каждого из подмножеств повторяем процедуру, пока количество вокселей в каждом отдельном подмножестве не будет меньше некоего числа. Строим из этих разбиений дерево

Примерно суть [путь к изображению некорректен]

Далее, если для какого-то подмножества оно совпадает с bounding box'ом, помечаем это отдельным флагом и далее не разбиваем.

Рендерим, ища пересечения лучей (для каждого пикселя по лучу) с деревом. Смотрим, пересекается ли луч с внешним bounding box'ом, если да, то находим, в какое подмножество он пойдёт, ищём в нём. Если в нём пересечение не найдено, идём в следующее подмножество, итд.

Для каждой полосы 1x4 пикселя пытаемся искать пересечения луча не со всем деревом, а с листом от предыдущего пересечения (как правило, близкие лучи пересекаются в одном листе). Иногда это дает искажения, но в целом увеличивает скорость

Vasily(*)(2016-06-14 13:56:41)

Mozilla/5.0 (X11; FreeBSD amd64; rv:40.0) Gecko/20100101 Firefox/40.0
[#] [Добавить метку] [Редактировать] Ответ на: Re:Воксельный рендерер от Vasily 2016-06-14 13:56:41
avatar
Скрыть

Re:Воксельный рендерер

Ага, рейтрейсинг. А почему тогда у черепа куча побочных пикселей, висящих в воздухе? Это раз. Второе - почему всё такое корявое?

anonymous(*)(2016-06-14 14:33:11)

[#] [Добавить метку] [Редактировать] Ответ на: Re:Воксельный рендерер от anonymous 2016-06-14 14:33:11
avatar
Скрыть

Re:Воксельный рендерер

"Побочные пиксели" находятся в самом датасете. Просто в датасете хранится трехмерный массив с плотностью в каждой точке, а в дереве хранятся полностью непрозрачные воксели. Вот у побочных просто была высокая плотность.

Vasily(*)(2016-06-14 15:08:26)

Mozilla/5.0 (Android 5.0; Mobile; rv:47.0) Gecko/47.0 Firefox/47.0
[#] [Добавить метку] [Редактировать] Ответ на: Re:Воксельный рендерер от Vasily 2016-06-14 15:08:26
avatar
Скрыть

Re:Воксельный рендерер

Красиво.

anonymous(*)(2016-06-14 16:53:45)

Mozilla/5.0 (X11; Linux x86_64; rv:43.0) Gecko/20100101 Firefox/43.0 SeaMonkey/2.40
[#] [Добавить метку] [Редактировать] Ответ на: Воксельный рендерер от Vasily 2016-06-14 09:38:44
avatar
Скрыть

Re:Воксельный рендерер

А МПХ сможешь отрендерить? Алсо, вроде кто-то пилил вагнеров под линукс. Там тоже воксели были. И даже вроде что-то у них там работало. Ну увы, быдло с фулЭЙЧДИ уже не оценит.

Silvy(*)(2016-06-14 23:49:42)

Mozilla/5.0 (X11; Linux i686; rv:45.0) Gecko/20100101 Firefox/45.0
[#] [Добавить метку] [Редактировать] Ответ на: Re:Воксельный рендерер от Silvy 2016-06-14 23:49:42
avatar
Скрыть

Re:Воксельный рендерер

Выточи себе МПХ из черенка от лопаты, тебе походу там все равно нечем занять))) Или механизаторов попроси, пусть тебе из города привезут из секшопа)))

anonymous(*)(2016-06-15 02:32:47)

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36
[#] [Добавить метку] [Редактировать] Ответ на: Re:Воксельный рендерер от Silvy 2016-06-14 23:49:42
avatar
Скрыть

Re:Воксельный рендерер

Шли нам свой мпх в цифровом виде, сходи кт сделай. А мы потом поставим тебе диагноз

Vasily(*)(2016-06-15 20:31:15)

Mozilla/5.0 (X11; FreeBSD amd64; rv:40.0) Gecko/20100101 Firefox/40.0
[#] [Добавить метку] [Редактировать] Ответ на: Re:Воксельный рендерер от Vasily 2016-06-15 20:31:15
avatar
Скрыть

Re:Воксельный рендерер

Да мы и без анализов можем диагноз поставить какой хошь. У нас тут форум профессионалов или чо!

anonymous(*)(2016-06-15 23:36:38)

Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0
[#] [Добавить метку] [Редактировать] Ответ на: Re:Воксельный рендерер от Silvy 2016-06-14 23:49:42Фильтры
avatar
  • изображения
Скрыть

Re:Воксельный рендерер

[путь к изображению некорректен]

anonymous(*)(2016-06-16 00:15:29)

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36
[#] [Добавить метку] [Редактировать] Ответ на: Воксельный рендерер от Vasily 2016-06-14 09:38:44
avatar
Скрыть

Re:Воксельный рендерер

годно!

vilfred(*)(2016-06-17 15:05:34)

Mozilla/5.0 (Windows NT 6.3; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0
[#] [Добавить метку] [Редактировать] Ответ на: Re:Воксельный рендерер от vilfred 2016-06-17 15:05:34
avatar
Скрыть

Re:Воксельный рендерер

Ты ведь сам, без посторонней помощи догадался что там череп изображен, да?

anonymous(*)(2016-06-17 17:55:04)

[#] [Добавить метку] [Редактировать] Ответ на: Re:Воксельный рендерер от anonymous 2016-06-17 17:55:04
avatar
Скрыть

Re:Воксельный рендерер

А ты спрашивал кого-то?

Vasily(*)(2016-06-17 19:32:14)

Mozilla/5.0 (X11; FreeBSD amd64; rv:40.0) Gecko/20100101 Firefox/40.0
[#] [Добавить метку] [Редактировать] Ответ на: Re:Воксельный рендерер от Vasily 2016-06-17 19:32:14
avatar
Скрыть

Re:Воксельный рендерер

А я до сих пор не могу найти череп на этих картинках :(

anonymous(*)(2016-06-17 19:42:39)

[#] [Добавить метку] [Редактировать] Ответ на: Re:Воксельный рендерер от anonymous 2016-06-17 17:55:04
avatar
Скрыть

Re:Воксельный рендерер

вроде там черепа нет, скорее внутренности человека

просто самому это писать большой труд

vilfred(*)(2016-06-18 00:21:47)

Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0
Этот тред читают 2 пользователя:
Анонимных: 2
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!