Форум программистов, компьютерный форум, киберфорум
Программирование графики
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для Hrethgir
421 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,206
Записей в блоге: 176

Воксельная графика - основные алгоритмы и концепты

01.02.2021, 23:16. Показов 2114. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почитал - вроде прорывная технология будущего.
У такой вопрос, так как нигде алгоритмы точно не расписывают, реализовано следующее или нет:

как-то давно я хотел создать игру шахматы, и встал вопрос как перетянуть свойства фигур на доске из 2D пространства в одномерное. И решение было найдено мной такое - я решил через 8 клеток доски вставлять 7 клеток технологического пространства, что позволило все свойства фигур (клетки котороые они перекрывают своим ходом) переносить в одномерный массив (линейная математика).

Вот есть воксели, понятно что смысл теряется технологических пространств, а вот для визуализации нет - технологические пространства можно делать фиктивными - не разбивая виртуальное на виртуальное и технологическое, просто держа его в "уме" алгоритма при расчёте лучей попадающих в камеру, и соответственно преобразовывать фиктивное технологическое пространство при движении камеры, вращении, и прочем. С вокселями мне кажется так удобно было-бы работать, через фиктивные технологические пространства.

В каком плане удобно - в том, что что закрыто вокселем можно скрыть через технологические пространства, оно уже не попадёт в расчёт, то что спрятано за чем-то.

И в то-же время через фиктивные технологические пространства можно наоборот приблизить то что далеко и не скрыто, фиктивно приблизить для обработки камерой. Через фиктивные технологические пространства, мне кажется, можно очень продуктивно работать с 3D графикой. Понятно что алгоритмы ещё нужно проработать, но сама идея проста, и если она применима в 2D, то почему её нее развить в 3D, с учётом того что нет нужды переносить свойства камеры в пространство, а технологическое пространство можно делать фиктивным и преобразовывать его по алгоритмам при работе с камерой.

ну вот
Этот процесс называется отбрасыванием невидимых вершин и полигонов (culling).
судя по полученной там информации - не используется...
значит надо расти из 2D на примере шахмат в 3D.

Вот ферзь или офицер ходит по диагонали допустим, соответственно как в примере шахматной переделанной доски у него ход вправо+вверх по диагонали будет как через 8(доска)+7(технологическое пространство)+1 вправо=16 клеток виртуальной одномерной доски, где 8 клеток доски чередуется через 7 клеток этого пространства.

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

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

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

Да...тут только так - если это одномерный массив, в который конвертировано трёхмерное пространство, то двигаться в нём в направлении рандомного луча этого трехмерного пространства, можно только через какой-то комплекс с технологическими пустотами. можно вычислить шаг конечно, или цикл шагов, но это уже будет работа с трёхмерным массивом.


в случае одномерного пустоты будут присутствовать если не явно, то внутри величин цикла шагов.
какой массив лучше...
мне как человеку видевшему в детстве и юности медленные ПК - одномерный. но это субъективно...
в одномерном массиве я могу любой вектор трёхмерный записать одной величиной..., при условии что это всё конвертировано через технологические пустоты...

Добавлено через 12 минут
Собственно, эти пустоты мной были тогда, лет 15 назад, придуманы именно для задачи отбрасывания клеток (но за пределами доски, лучи фигуры хранятся в массиве, и подрезать их при каждом расчёте хода - хлопотно) на которые не мог попадать луч ходов фигуры, и вот мной были придуманы пустоты. А тут
Цитата Сообщение от Hretgir Посмотреть сообщение
Этот процесс называется отбрасыванием невидимых вершин и полигонов (culling).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.02.2021, 23:16
Ответы с готовыми решениями:

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

Воксельная графика
Пожалуйста, объясните, на чем строится воксельная графика. Я понимаю, что все строится из кирпичиков - вокселей. Они задаются позицией и...

Основные комбинаторные алгоритмы и алгоритмы на графах
Виктор готовится к празднованию Нового года. Он должен поздравить бабушку, тетю и двух друзей. Но он никак не может решить в какой...

6
 Аватар для Hrethgir
421 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,206
Записей в блоге: 176
02.02.2021, 19:32  [ТС]
Да...когда я ввел 7 клеток пустоты через 8 доски, я откинул ненужные клетки лучей хода фигур, это факт, каких-либо проблем доски это не решало. То-есть для программирования каких-то свойств объектов виртуального пространства данное введение имеет смысл. А вот для представления самого пространства мне что-то пользы от этого никакой не представляется...надо подумать будет...
Цитата Сообщение от Hretgir Посмотреть сообщение
Этот процесс называется отбрасыванием невидимых вершин и полигонов (culling).
надо прочитать будет как именно это в воксельной графике происходит.

Добавлено через 3 часа 51 минуту
в общем понятно, я так и думал, когда писал про лучи.
Raytracing
теперь нужен хак.

Добавлено через 18 минут
Самый первый хак - если работать по моему методу, который я получил на решении задачи с шахматной доской - нужно получить развёртку геометрического объекта, а потом от фокуса камеры сделать шаблон технологических пустот, и работать с ними от расстояния камеры, при этом поворачивая развёртку от угла камеры.
Всё через Raytracing, но луч проходит через призму шаблона технологических пустот.

Теперь можно обсудить этот движок, правда он не воксельный, а на развертках.
Если объект изменяется в реалтайме - перед рендерингом соответственно нужно изменять развёртку.

Добавлено через 20 минут
Посмотрел мапинг, я так не делал-бы, элементы должны быть связаны точками привязки вокруг точки на карте или центрального элемента, так сохраняется иерархия привязок и кроме того длинной связующих отрезков может быть выражена полезная информация.

Время от времени я начну прорабатывать концепт начиная от развёрток, мапинга и призм. Ретрейсинг сохраняется, но проходит через призму технологических пустот.

Добавлено через 10 минут
Первый объект для рендеринга - будет куб.

Добавлено через 2 часа 2 минуты
Наконец-то можно что-то будет выложить на гитхаб, прорамма по параматрической оптимизации под управлением нейросетей и алгоритмов нечёткого управления хоть и на подходе, но за ней нет потенциала, хоть и полезна и будет использоваться - нет аудитории и кол-ва пользователей, единицы разработчиков и только.

Ну посмотрим что с движком получится - интегрирую туда идею с шахмат или нет.

Добавлено через 4 часа 0 минут
Не...на гитхаб пока не буду, зачем распространяться сильно, если администрация тут в принципе нормальная, и зачем спешить на гитхаб, разве что за донатом, ... тут думаю и времени не много потратить надо, чтобы разобраться стоит это чего или нет.


Ну в отличии от UVразвертки - это развертка с оригинальными размерами граней, если имеются полости, то вероятнее всего проще ввести слои. Размер камеры на разных её участках может вариароваться - она должна работать как самонастраиваемая (по алгоритму) линза, ну и чтобы не было артефактов - должны быть коллапсы, если надо.

Что это даёт - так или иначе объект 3D для визуализации преобразуется в 2D изображение, стало быть теоретически можно и не тратить время на сложное преобразование, а внести искажения в камеру и вместо развертки она выдаст 3D объект на поверхности экрана. Если это стерео - это два 2D изображения, человек-паук он в комиксах, да и то у него 2 глаза.
Вот примерно так, и сегодня всё, так как у меня доделывается другой проект (немного осталось - вечный "кубик рубика" для любителей изобретатать ВД), осталось 3 крепления отредактировать - вариант ВД, над параметрической оптимизацией которого можно достойно провести остаток жизни.
Миниатюры
Воксельная графика - основные алгоритмы и концепты  
0
 Аватар для Hrethgir
421 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,206
Записей в блоге: 176
02.02.2021, 19:41  [ТС]
И кстати я стараюсь, даже опыт около месяца наз провёл
и симуляцию сделал потом


, чтобы этот вариант был даже без колеса, а просто шарик в жёлобе (экран учасктка жёлоба, но всё равно работать не далжен, но крутилок- аж на 4-ре параметра, можно оптимизировать очень долго, кто не может кодить и не дружит с геометрией и математикой - может заняться вечной оптимизацией )
0
 Аватар для Hrethgir
421 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,206
Записей в блоге: 176
05.02.2021, 10:52  [ТС]
Первый хак, который приходит на ум - забыть что 3D объект мы наблюдаем снаружи, всё не так - мы наблюдаем снутри (внутри мы так-же можем перемещать камеру, производить наобходимые действия), внутри объекта видно всё его нутро, из слоджного он првращается в простой и доступный - до всего рукой подать. И на самом деле разницы большой нет, но на самом деле психологическая уверенность при этом возрастает.
К тому- отпадает проблема отбрасывания невидимых полигонов, глядя внутри объекта в сторону одних полигонов - мы никак не можем увидеть другие - всё логично.

Итак, отбрасывание невидимых полигонов - взломано, шаг сделан - я проник в 3D объект.
0
 Аватар для Hrethgir
421 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,206
Записей в блоге: 176
06.02.2021, 21:33  [ТС]
нашёл только атлас текстур, согласно тому направлению в котором двигаюсь я - я могу заменить нормали атласом поверхностей - так мне не надо будет вычислять теневые, я их просто не увижу и всё.
И это видимо не последний атлас. К тому-же нужно продумать формат этого атласа. В любом случае не видеть то что в тени - вполне естественно и для этого не надо обрабатывать нормали, чтобы узнать вижу я это или не вижу. Тут понятно, теперь самое интересное. Сложные объекты. А всё просто, каждой поверхности на атласе теней присваивается точка, она заменяет нормаль. И таким образом - нормали я не обрабатываю. Нужно посмотреть как устроен атлас звёздного неба. В любом случае атлас трёхмерный, так как одна его точка может означать несколько поверхностей.
Посмотрел, сетка из параллелей одних меня устроит, так как атлас у меня будет абсолютно плоский. Просто два "экватора", по двум осям. И по поводу многомерного массива , точнее сказать это просто будет карта с точками, точки где есть поверхности, и каждая точка - массив, потому что там может оказаться много поверхностей, ну с такой ненормальной нормалью.

Хак номер 2 значит - ненормальные нормали. Вот так.
И пусть эти ненормальные нормали имеют положителную и отрицательню глубину.
Значит это уже хак рейкастинга получается - номер 3 (ненормальные нормали с положительной и отрицательной глубиною).
Вроде можно и код какой-то написать в конце концов... производящий конвертацию какую-то...
Пока хаков хватит.
Наверное в этом глубоководном аквариуме ненормальных нормалей и будет происходить весь этот фестиваль визуализации...
0
 Аватар для Hrethgir
421 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,206
Записей в блоге: 176
10.02.2021, 17:48  [ТС]
Для рассмотрения варианта интеграции обратного волнового алгоритма я использую максимально основную концепцию хака "изнутри".
Так как данные для обратного волнового алгоритма - массив с векторами, я рассмотрю возможность и целесообразность создания карты внутренней трассировки отражений луча внутри 3D объекта. Нормаль - отвечает за один полигон, трассировка отражений - несёт в себе массу информации накопленной в процессе следования луча. Трассировка отражений исследуется напрямую волновым алгоритмом.
Попытка - не пытка и всё последовательно и связанно от первого шага, от простого к сложному. Вот тут уже есть над чем подумать реально, согласно предыдущим шагам и не гадая.
Я больше чем уверен, никто не использовал для 3D графики, для получения вида объекта снаружи, его исследование волновым алгоритмом внутри.
Я уверен по одной простой причине - это нафиг никому было не нужно.

Гадать вообще нет необходимости

Либо как вариант я рассмотрю возможность исследования его снаружи, но заключённым внутрь какого-то геометрического правильного объекта, который будет переотражать луч.

Добавлено через 2 часа 48 минут
Вот что надо почитать, так как я читал вкратце, что по мешу строят какое-то дерево, и вот это может пересекаться как-то, это надо прочесть.
Вкратце-то я пробежался по способам отображения, и вот на дерево я как-то внимания не обратил совсем, а надо-бы. Дерево - оно попроще подвергается исследованию волновым алгоритмом.
0
 Аватар для Hrethgir
421 / 143 / 3
Регистрация: 25.01.2012
Сообщений: 6,206
Записей в блоге: 176
15.02.2021, 10:51  [ТС]
По факту, чтобы не инвертировать нормали для карты - достаточно инвертировать для этой обработки направление камеры.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.02.2021, 10:51
Помогаю со студенческими работами здесь

Основные алгоритмы
знающие люди посоветуйте какие основные алгоритмы должен знать любой программист

Основные алгоритмы сортировки
Пом-гите решить, заранее благодарен Билет 3 1 Сортировка. Основные алгоритмы сортировки. 2 Решить задачу: представлен фрагмент...

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

C++14 концепты. Использование, статус реализации
В этой тебе я хотел бы обсудить тему концептов. Благо g++-4.9 их поддерживает Proof: https://gcc.gnu.org/gcc-4.9/changes.html ...

Воксельная игра на DerictX 9
Всем привет, решил попробовать свои силы в написании воксельной игры похожую на minecraft только на с++ + DerictX 9. Вроде как получилось...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru