|
|
|||
Воксельная графика - основные алгоритмы и концепты01.02.2021, 23:16. Показов 2114. Ответов 6
Метки нет (Все метки)
Почитал - вроде прорывная технология будущего.
У такой вопрос, так как нигде алгоритмы точно не расписывают, реализовано следующее или нет: как-то давно я хотел создать игру шахматы, и встал вопрос как перетянуть свойства фигур на доске из 2D пространства в одномерное. И решение было найдено мной такое - я решил через 8 клеток доски вставлять 7 клеток технологического пространства, что позволило все свойства фигур (клетки котороые они перекрывают своим ходом) переносить в одномерный массив (линейная математика). Вот есть воксели, понятно что смысл теряется технологических пространств, а вот для визуализации нет - технологические пространства можно делать фиктивными - не разбивая виртуальное на виртуальное и технологическое, просто держа его в "уме" алгоритма при расчёте лучей попадающих в камеру, и соответственно преобразовывать фиктивное технологическое пространство при движении камеры, вращении, и прочем. С вокселями мне кажется так удобно было-бы работать, через фиктивные технологические пространства. В каком плане удобно - в том, что что закрыто вокселем можно скрыть через технологические пространства, оно уже не попадёт в расчёт, то что спрятано за чем-то. И в то-же время через фиктивные технологические пространства можно наоборот приблизить то что далеко и не скрыто, фиктивно приблизить для обработки камерой. Через фиктивные технологические пространства, мне кажется, можно очень продуктивно работать с 3D графикой. Понятно что алгоритмы ещё нужно проработать, но сама идея проста, и если она применима в 2D, то почему её нее развить в 3D, с учётом того что нет нужды переносить свойства камеры в пространство, а технологическое пространство можно делать фиктивным и преобразовывать его по алгоритмам при работе с камерой. ну вот
значит надо расти из 2D на примере шахмат в 3D. Вот ферзь или офицер ходит по диагонали допустим, соответственно как в примере шахматной переделанной доски у него ход вправо+вверх по диагонали будет как через 8(доска)+7(технологическое пространство)+1 вправо=16 клеток виртуальной одномерной доски, где 8 клеток доски чередуется через 7 клеток этого пространства. То-есть, это может быть направление камеры, его можно повернуть и бегло бежать по массиву в поиске предметов, а так как направление луча не меняется, то при встрече с вокселем всё что за ним - не обрабатывается, то-есть обработка данного луча пркращается. и далее другие лучи (это ведь камера). Возможно что проще вычислять ячейки трехмерного массива вокселей попадающих под луч камеры, но мне это как-то трудно представляется такое, проще построить имитацию трёхмерного луча в одномерном пространстве, хоть это тоже и требует вычислений...это надо ещё проанализировать как-то... да, двигаться по трехмерному пространству в каком-то рандомном, но постоянном направлении, при условии что это пространство преобразовано в одномерное - можно только через технологические пропуски, пусть это будут пропуски а не пустоты, хотя пропуск имеет два значения как слово, тогда технологические пустоты. они могут быть, если массив небольшой, а могут и не быть - они могут быть просто записаны при проходе луча в какой-то величине, являющейся его характеристикой, параметром. Да...тут только так - если это одномерный массив, в который конвертировано трёхмерное пространство, то двигаться в нём в направлении рандомного луча этого трехмерного пространства, можно только через какой-то комплекс с технологическими пустотами. можно вычислить шаг конечно, или цикл шагов, но это уже будет работа с трёхмерным массивом. в случае одномерного пустоты будут присутствовать если не явно, то внутри величин цикла шагов. какой массив лучше... мне как человеку видевшему в детстве и юности медленные ПК - одномерный. но это субъективно... в одномерном массиве я могу любой вектор трёхмерный записать одной величиной..., при условии что это всё конвертировано через технологические пустоты... Добавлено через 12 минут Собственно, эти пустоты мной были тогда, лет 15 назад, придуманы именно для задачи отбрасывания клеток (но за пределами доски, лучи фигуры хранятся в массиве, и подрезать их при каждом расчёте хода - хлопотно) на которые не мог попадать луч ходов фигуры, и вот мной были придуманы пустоты. А тут
0
|
|||
| 01.02.2021, 23:16 | |
|
Ответы с готовыми решениями:
6
Воксельная графика в приладах
Основные комбинаторные алгоритмы и алгоритмы на графах |
|
|
||
| 02.02.2021, 19:32 [ТС] | ||
|
Да...когда я ввел 7 клеток пустоты через 8 доски, я откинул ненужные клетки лучей хода фигур, это факт, каких-либо проблем доски это не решало. То-есть для программирования каких-то свойств объектов виртуального пространства данное введение имеет смысл. А вот для представления самого пространства мне что-то пользы от этого никакой не представляется...надо подумать будет...
Добавлено через 3 часа 51 минуту в общем понятно, я так и думал, когда писал про лучи. Raytracing теперь нужен хак. Добавлено через 18 минут Самый первый хак - если работать по моему методу, который я получил на решении задачи с шахматной доской - нужно получить развёртку геометрического объекта, а потом от фокуса камеры сделать шаблон технологических пустот, и работать с ними от расстояния камеры, при этом поворачивая развёртку от угла камеры. Всё через Raytracing, но луч проходит через призму шаблона технологических пустот. Теперь можно обсудить этот движок, правда он не воксельный, а на развертках. Если объект изменяется в реалтайме - перед рендерингом соответственно нужно изменять развёртку. Добавлено через 20 минут Посмотрел мапинг, я так не делал-бы, элементы должны быть связаны точками привязки вокруг точки на карте или центрального элемента, так сохраняется иерархия привязок и кроме того длинной связующих отрезков может быть выражена полезная информация. Время от времени я начну прорабатывать концепт начиная от развёрток, мапинга и призм. Ретрейсинг сохраняется, но проходит через призму технологических пустот. Добавлено через 10 минут Первый объект для рендеринга - будет куб. Добавлено через 2 часа 2 минуты Наконец-то можно что-то будет выложить на гитхаб, прорамма по параматрической оптимизации под управлением нейросетей и алгоритмов нечёткого управления хоть и на подходе, но за ней нет потенциала, хоть и полезна и будет использоваться - нет аудитории и кол-ва пользователей, единицы разработчиков и только. Ну посмотрим что с движком получится - интегрирую туда идею с шахмат или нет. Добавлено через 4 часа 0 минут Не...на гитхаб пока не буду, зачем распространяться сильно, если администрация тут в принципе нормальная, и зачем спешить на гитхаб, разве что за донатом, ... тут думаю и времени не много потратить надо, чтобы разобраться стоит это чего или нет. Ну в отличии от UVразвертки - это развертка с оригинальными размерами граней, если имеются полости, то вероятнее всего проще ввести слои. Размер камеры на разных её участках может вариароваться - она должна работать как самонастраиваемая (по алгоритму) линза, ну и чтобы не было артефактов - должны быть коллапсы, если надо. Что это даёт - так или иначе объект 3D для визуализации преобразуется в 2D изображение, стало быть теоретически можно и не тратить время на сложное преобразование, а внести искажения в камеру и вместо развертки она выдаст 3D объект на поверхности экрана. Если это стерео - это два 2D изображения, человек-паук он в комиксах, да и то у него 2 глаза. Вот примерно так, и сегодня всё, так как у меня доделывается другой проект (немного осталось - вечный "кубик рубика" для любителей изобретатать ВД), осталось 3 крепления отредактировать - вариант ВД, над параметрической оптимизацией которого можно достойно провести остаток жизни.
0
|
||
|
|
|
| 02.02.2021, 19:41 [ТС] | |
|
И кстати я стараюсь, даже опыт около месяца наз провёл
и симуляцию сделал потом , чтобы этот вариант был даже без колеса, а просто шарик в жёлобе (экран учасктка жёлоба, но всё равно работать не далжен, но крутилок- аж на 4-ре параметра, можно оптимизировать очень долго, кто не может кодить и не дружит с геометрией и математикой - может заняться вечной оптимизацией )
0
|
|
|
|
|
| 05.02.2021, 10:52 [ТС] | |
|
Первый хак, который приходит на ум - забыть что 3D объект мы наблюдаем снаружи, всё не так - мы наблюдаем снутри (внутри мы так-же можем перемещать камеру, производить наобходимые действия), внутри объекта видно всё его нутро, из слоджного он првращается в простой и доступный - до всего рукой подать. И на самом деле разницы большой нет, но на самом деле психологическая уверенность при этом возрастает.
К тому- отпадает проблема отбрасывания невидимых полигонов, глядя внутри объекта в сторону одних полигонов - мы никак не можем увидеть другие - всё логично. Итак, отбрасывание невидимых полигонов - взломано, шаг сделан - я проник в 3D объект.
0
|
|
|
|
|
| 06.02.2021, 21:33 [ТС] | |
|
нашёл только атлас текстур, согласно тому направлению в котором двигаюсь я - я могу заменить нормали атласом поверхностей - так мне не надо будет вычислять теневые, я их просто не увижу и всё.
И это видимо не последний атлас. К тому-же нужно продумать формат этого атласа. В любом случае не видеть то что в тени - вполне естественно и для этого не надо обрабатывать нормали, чтобы узнать вижу я это или не вижу. Тут понятно, теперь самое интересное. Сложные объекты. А всё просто, каждой поверхности на атласе теней присваивается точка, она заменяет нормаль. И таким образом - нормали я не обрабатываю. Нужно посмотреть как устроен атлас звёздного неба. В любом случае атлас трёхмерный, так как одна его точка может означать несколько поверхностей. Посмотрел, сетка из параллелей одних меня устроит, так как атлас у меня будет абсолютно плоский. Просто два "экватора", по двум осям. И по поводу многомерного массива , точнее сказать это просто будет карта с точками, точки где есть поверхности, и каждая точка - массив, потому что там может оказаться много поверхностей, ну с такой ненормальной нормалью. Хак номер 2 значит - ненормальные нормали. Вот так. И пусть эти ненормальные нормали имеют положителную и отрицательню глубину. Значит это уже хак рейкастинга получается - номер 3 (ненормальные нормали с положительной и отрицательной глубиною). Вроде можно и код какой-то написать в конце концов... производящий конвертацию какую-то... Пока хаков хватит. Наверное в этом глубоководном аквариуме ненормальных нормалей и будет происходить весь этот фестиваль визуализации...
0
|
|
|
|
|
| 10.02.2021, 17:48 [ТС] | |
|
Для рассмотрения варианта интеграции обратного волнового алгоритма я использую максимально основную концепцию хака "изнутри".
Так как данные для обратного волнового алгоритма - массив с векторами, я рассмотрю возможность и целесообразность создания карты внутренней трассировки отражений луча внутри 3D объекта. Нормаль - отвечает за один полигон, трассировка отражений - несёт в себе массу информации накопленной в процессе следования луча. Трассировка отражений исследуется напрямую волновым алгоритмом. Попытка - не пытка и всё последовательно и связанно от первого шага, от простого к сложному. Вот тут уже есть над чем подумать реально, согласно предыдущим шагам и не гадая. Я больше чем уверен, никто не использовал для 3D графики, для получения вида объекта снаружи, его исследование волновым алгоритмом внутри. Я уверен по одной простой причине - это нафиг никому было не нужно. Гадать вообще нет необходимости Либо как вариант я рассмотрю возможность исследования его снаружи, но заключённым внутрь какого-то геометрического правильного объекта, который будет переотражать луч. Добавлено через 2 часа 48 минут Вот что надо почитать, так как я читал вкратце, что по мешу строят какое-то дерево, и вот это может пересекаться как-то, это надо прочесть. Вкратце-то я пробежался по способам отображения, и вот на дерево я как-то внимания не обратил совсем, а надо-бы. Дерево - оно попроще подвергается исследованию волновым алгоритмом.
0
|
|
|
|
|
| 15.02.2021, 10:51 [ТС] | |
|
По факту, чтобы не инвертировать нормали для карты - достаточно инвертировать для этой обработки направление камеры.
0
|
|
| 15.02.2021, 10:51 | |
|
Помогаю со студенческими работами здесь
7
Основные алгоритмы Основные алгоритмы сортировки
Воксельная игра на DerictX 9 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
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, то после закрытия окошка. . .
|