|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
А можно ли непосрдсвенно отобразить воксели?06.03.2012, 10:01. Показов 6681. Ответов 43
Метки нет (Все метки)
Спросил на форуме игроделов, как визуализипровать воксели, они предложили алгоритм шагающих кубов. Но этот алгоритм выполняет полигонолизацию вокселей, а потом полигоны всё равно подлежат тесселяции и уже тексели проецируются в квад. А можно ли непосредственно с вокселей получить тот же квад? Без относительно применимости готовых 3D библиотек и оптимизации алгоритма под существующее железо и железа под полигоны. Пусть прога в итоге тормозит. Возможно ли это вообще? И если возможно, то как это сделать? И как отсечь то, что не попадает в пирамиду видимости?
0
|
|
| 06.03.2012, 10:01 | |
|
Ответы с готовыми решениями:
43
Воксели. Научная работа Как написать воксели? Можно ли отобразить в combobox progressbar? |
|
|
|
| 06.03.2012, 11:22 | |
|
Возможно вам поможет эта статья.
http://habrahabr.ru/blogs/algorithm/133769/
1
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 06.03.2012, 11:31 [ТС] | |
|
За статью спасибо, но мне чего то не хочется начинать с оптимизации. Поэтому пока не дерево, а просто массив без какой либо рекурсии, все воксели имеют одинаковые размеры. Задача отрисовать только этот массив. Как это сделать? И правильно ли я понял, что все воксели будут именно кубами, а нормали параллельны координатным осям?
0
|
|
|
|
|
| 06.03.2012, 11:53 | |
|
Все зависит от вашей задачи. Наиболее простым случаем будет следующая структура вокселя:
1. Координата левого нижнего угла 2. Линейные размеры (если куб, то один размер) 3. Вектор ориентации По данным такой структуры рассчитываем 12 образующих полигонов с нормалями или используем команду создания примитива параллелепипеда (BOX). Если не использовать вектор ориентации, то задача упрощается. Из таких структур можно собрать матрицу для вывода. В таком случае координаты угла можно заменить на индексы в массиве. В свое время я пробовал в лоб выводить воксельный объем по такому принципу средствами огра. К сожалению исходники уже не сохранились. В вашем случае вы правильно поняли - это будет вывод кубов с фиксированными размерами и нормалями параллельными координатным осям
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 07.03.2012, 11:38 [ТС] | ||
|
Все воксели имеют один размер, то есть этот размер - характеристика всего растра. И если сцену собирать из кубов в притык, то у всех кубов будет одна ориентация, так что этот параметр вообще теряет всякий смысл. Координата угла или центра вокселя регулярно зависит от его индексов. Но сам воксель теряет всякий смысл без цвета и прозрачности.
Добавлено через 1 минуту
0
|
||
|
|
|||
| 07.03.2012, 13:13 | |||
|
0
|
|||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||
| 07.03.2012, 13:47 [ТС] | |||||
|
Добавлено через 2 минуты Добавлено через 6 минут Добавлено через 4 минуты
0
|
|||||
|
|
||
| 07.03.2012, 14:33 | ||
|
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 08.03.2012, 08:48 [ТС] | |
|
Визуализация = вывод на экран. Но сделать это можно различно. Экран у нас растровый, то есть состоит из отдельных 2D пикслей. Тогда задача визуализации вокслей стоит так: дан массив вокселей, надо получить пиксели. Как это сделать? Можно преобразовать в полигоны и сказать: а из полигонов пиксели мы получать уже умеем. И как минимум можно даже это сделать различно: выделить грани вокселей, или пустить по ним шагающие кубы. Но это поступок математика, вылившего кипяток, чтоб свести задачу к уже решенной. А можно ли получить пиксели без полигонов? В принипе можно. Как минимум на воксельном дисплее (есть и такие) можно воксели отобразить непосредственно, а полигоны подлежат вокселизации, а потом можно сфоткать дисплей на плёнку, проявить и отсканировать. Разумеется, этот вариант меня не устраивает. А можно ли цвета всех пикслей вычилить полностью в системнике и на обычный растровый, а не воксельный дисплей вывести уже готовый RGB, но при этом вообще не связываться с полигонами?
0
|
|
|
|
||
| 10.03.2012, 08:43 | ||
|
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 11.03.2012, 06:48 [ТС] | ||
|
0
|
||
|
|
||
| 11.03.2012, 09:06 | ||
|
http://webmath.exponenta.ru/s/pyartli1/node72.htm Потом все воксели в новой системе координать сортируем по убыванию по расстоянию до плоскости проекции (если использовать классическую левостороннюю систему координат, где вектор z направлен по направлению взгляда, то отсортировать их по Z координате). Самые дальние воксели будут проецироваться первыми и так до самых близких. Вам нужно будет выводить 3 видимые грани каждого вокселя замкнутыми залитыми полилиниями (если вы хотите отображать все ребра). Этого будет достаточно для вывода в аксонометрической проекции. Если вы хотите вывести в перспективе, то вам стоит почитать по внутренней реализации стандартных камер (например как реализована проекция в DX или OpenGL) http://www.mirgames.ru/articles/opengl/camera.html Это будет самый простой способ спроецировать все воксели на экран.
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 11.03.2012, 09:31 [ТС] | ||
|
0
|
||
|
|
||
| 11.03.2012, 10:39 | ||
|
http://shatalov.su/ru/articles... tion_2.php
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 11.03.2012, 12:21 [ТС] | |
|
Спроецировать я могу, проблема в отсечениях. Причём, отсечение по расстоянию не проблема. А как отсекать по боковым граням пирамиды видимости? И как определить цвет пиксела, в который наложились сразу несколько частично прозраных вокселей и максимум один совсем не прозрачный? И ещё. Я хочу сделать хроматическую прозрачность. То есть чтоб прозрачный воксел мог по разному пропускать красный, синий и зелёный свет от дальних вокселей. Ещё аспект проблемы. Прозрачный воксел находится между источником света и дальним вокселом. Например, свет проходит через стекло, падает на предмет и отражается в камеру, возможно опять через то же стекло. Как учесть такое освещение? И тритий аспект. Как считать рассеяние?
0
|
|
|
|
||
| 11.03.2012, 13:00 | ||
|
Цвет определяют средневзвешенным от смешиваемых цветов. В простейшем случае это среднеарифметическое по каждой составляющей РГБ. В вашем случае можно использовать взвешенную модель смешивания, причем смешать по следующему принципу: 1. Сортируем все накладываемые воксели по увеличению расстояния. 2. Для каждого вокселя вычисляем коэффициент видимости (КВ) и вес: КВ(i)=КВ(i-1) * (1 - КП(i)), где КП - коэффициент прозрачности i-го вокселя (от 0 до 1). вес=КВ(i-1) * КП(i); Коэффициент видимости отражает весовой вклад дальшележащих вокселей. Таким образом воксель с КП=1 является непрозрачным и КВ будет равен 0. После вычисления весов проверяем их. Их сумма должна быть равна 1. Далее просто суммируем цвета всех вокселей по каждой составляющей цвета с рассчитанными весами. С освещением тяжелее, но думаю можно пройтись от каждого источника света по аналогичной методике для смешивания цветов и рассчитывать цвет луча после прохождения через воксель и изменение цвета вокселя. Правда до конца не уверен в результате. Рассеивание света от источника можно посчитать исходя из расстояния от объекта до источника света, причем оно обратнопропорционально квадрату расстояния (исходя из формулы площади сферы).
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||
| 11.03.2012, 14:06 [ТС] | |||
|
Добавлено через 17 минут
0
|
|||
|
|
|||
| 11.03.2012, 16:02 | |||
|
http://cgm.computergraphics.ru... lobalillum Забыл добавить, что еще желателен GPU для ускорения http://gpgpu.org/2005/06/14/ra... -algorithm
0
|
|||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 11.03.2012, 16:04 [ТС] | |
|
0
|
|
|
|
|
| 12.03.2012, 16:59 | |
|
0
|
|
| 12.03.2012, 16:59 | |
|
Помогаю со студенческими работами здесь
20
Можно ли в папке отобразить дерево
Как можно отобразить разноцветный текст? Можно ли отобразить GIF изображение на форме
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 23.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит значение перечислений.
/ / Событие "НачалоВыбора" реквизита на форме. . .
|