Послойное Построение В Opengl

skeydee

New member
18.12.2011
4
0
#1
Доброго времени суток!
Никогда не работал с 3D графикой, поэтому такой вопрос: можно ли как-то в OpenGL построить трехмерный объект путем наложения двумерных изображений. Т.е. построить объект послойно.
Если нет, то другой вопрос: можно ли попиксельно построить трехмерный объект (опять же послойно)?
Исходные данные: либо картинки (двумерные изображения), либо массив 512х512, в каждой ячейке содержится интенсивность цвета.
 

sinkopa

Well-known member
17.06.2009
344
4
#2
Доброго времени суток!
Никогда не работал с 3D графикой, поэтому такой вопрос: можно ли как-то в OpenGL построить трехмерный объект путем наложения двумерных изображений. Т.е. построить объект послойно.
Если нет, то другой вопрос: можно ли попиксельно построить трехмерный объект (опять же послойно)?
Исходные данные: либо картинки (двумерные изображения), либо массив 512х512, в каждой ячейке содержится интенсивность цвета.
Вы уж определитесь что Вам нужно... :)
Либо трехмерный объект - тогда Вам точно в OpenGL "курить"...
Либо послойное наложение - тогда GDI+
В OpenGL можно описать трехмерный объект и наложить на него текстуру (натянуть, как на каркас)...
Послойным наложением можно конечно создать картинку очень похожую на 3D объект (курим "аффинные преобразования") но это другие техноголии (не OpenGL).
Короче. Вот Вам примеры OpenGL
Посмотреть вложение opengl.rar
А вот Вам примеры послойных наложений
Посмотреть вложение gdi.rar
Определяйтесь... :)
 

Вложения

  • 408.9 КБ Просмотры: 66
  • 599.6 КБ Просмотры: 56

skeydee

New member
18.12.2011
4
0
#3
Вы уж определитесь что Вам нужно... :)
Либо трехмерный объект - тогда Вам точно в OpenGL "курить"...
Либо послойное наложение - тогда GDI+
В OpenGL можно описать трехмерный объект и наложить на него текстуру (натянуть, как на каркас)...
Послойным наложением можно конечно создать картинку очень похожую на 3D объект (курим "аффинные преобразования") но это другие техноголии (не OpenGL).
Короче. Вот Вам примеры OpenGL
Посмотреть вложение 4786
А вот Вам примеры послойных наложений
Посмотреть вложение 4787
Определяйтесь... :facepalm:
Среди того, что вы мне скинули, нет ничего похожего, на то что мне нужно :angry: Вот никто с первого раза не понимает, что мне требуется получить ))
Нужно вот так наложить несколько изображений:
http://u.pikucha.ru/i7p9N
Вот видео того, что должно получиться в итоге:
http://www.xrayinspectionservice.com/
Разработчиком заявлено, что в основе лежит OpenGL.
Вы про томографию слышали, вот нечто такое и нужно реализовать!
 
09.11.2009
665
1
#4
В том видео реализовано не путём наложения огромного количества слоёв, а путём постороения среза трёх-мерной модели(похоже на модификатор Slice в 3ds Max, но реализовано на более качественном уровне).
 

skeydee

New member
18.12.2011
4
0
#5
В том видео реализовано не путём наложения огромного количества слоёв, а путём постороения среза трёх-мерной модели(похоже на модификатор Slice в 3ds Max, но реализовано на более качественном уровне).
Я видел эту программу в действии. Трехмерная модель получается путем наложения множества двумерных слоев, и, как я понял, для каждого слоя сначала высчитываются контура изображений, и строится трехмерная модель не по всем точкам среза, а по контурам, что соответственно требует меньше машинной памяти. Проблема в том, что данные срезов там запакованы в их формат, т.е. я не могу подставить свои данные.
У меня есть демо-версия другой программы, она позволяет загружать мои сечения и получать трехмерную модель. Т.е. все как надо. Но если в той программе (что на видео) сечения строятся по контурам, то в этой (что у меня) строятся по сечениям. И памяти она требует уже больше. Но проблема в том, что она реализована на Qt, и исходников, конечно же мне не дали. Мне нужно тоже самое реализовать именно на Delphi.
Заявлено, что обе программы используют OpenGL.

P.S. Понятия "слой", "срез" и "сечение" в томографии равнозначны. Поскольку слово "slice" переводится в разных источниках по-разному! Может быть вас именно слово слой и смутило)
 

sinkopa

Well-known member
17.06.2009
344
4
#6
:) Вот никто с первого раза не понимает, что мне требуется получить ))
Возможно просто у Вас не получается с первого раза правильно вопрос задать? :)
Я видел эту программу в действии. Трехмерная модель получается путем наложения множества двумерных слоев, и, как я понял, для каждого слоя сначала
...
У меня есть демо-версия другой программы...
... Но проблема в том, что она реализована на Qt, и исходников, конечно же мне не дали. Мне нужно тоже самое реализовать именно на Delphi.
Заявлено, что обе программы используют OpenGL.
OpenGL - это средство ВИЗУАЛИЗАЦИИ трехмерных объектов. Использование OpenGL (указанными Вами программами) начинается с момента, когда имеется что отображать... Т.е. самостоятельно эти объекты он не строит и ни про какие слайсы не знает.
Поэтому копать Вам нужно (на данном этапе) не в сторону OpenGL, а в сторону специализированных библиотек (или алгоритмов) которые по Вашим "контурам" построят описание 3D объекта.
 

skeydee

New member
18.12.2011
4
0
#7
Возможно просто у Вас не получается с первого раза правильно вопрос задать? ;)OpenGL - это средство ВИЗУАЛИЗАЦИИ трехмерных объектов. Использование OpenGL (указанными Вами программами) начинается с момента, когда имеется что отображать... Т.е. самостоятельно эти объекты он не строит и ни про какие слайсы не знает.
Поэтому копать Вам нужно (на данном этапе) не в сторону OpenGL, а в сторону специализированных библиотек (или алгоритмов) которые по Вашим "контурам" построят описание 3D объекта.
В вашем ответе какое-то двумыслие кроется, то вы говорите, что OpenGL начинается с визуализации (т.е. с его помощью можно построить объект), то говорите, что OpenGL там вообще ничего не строит (т.е. не используется). OpenGL - это средство визуализации, это да, вот с помощью него мне и нужно визуализировать мои данные. Данные ИМЕЮТСЯ! Проблема в том, что я не знаю как их визуализировать.
Какое описание объекта? Зачем оно? Нужно просто вывести как-то картинку за картинкой (послойно), и таким образом получить трехмерное изображение. Неужели не понятно?
P.S. В указанных программах ТОЛЬКО визуализация и используется, я подаю им набор данных (bmp изображения) и они строят трехмерное изображение объекта. По сути как-то нужно вывести одно изображение, изменить координату по z и вывести второе изображение и так далее. Может кто-нить знает, как загружить картинку средствами OpenGL, при этом указать прозрачный цвет и его не выводить?

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

sinkopa

Well-known member
17.06.2009
344
4
#8
Не нежно тут умничать, если с такой областью вы не сталкивались. Мне сказали, что отталкиваться нужно от октодеревтьев и рендеринга, которые можно реализовать с помощью OpenGL.
Хм... Ну прежде всего (я думаю народ со мной согласится) "не нежно" тут хамить если не сталкивались с OpenGL... :)
Октодеревья - это и есть математическое описание объекта, которое (если вы его "подсуните" движку OpenGL) он OpenGL Вам отобразит (читай визуализирует, произведет рендеринг)
 

skeydee

New member
18.12.2011
4
0
#9
Хм... Ну прежде всего (я думаю народ со мной согласится) "не нежно" тут хамить если не сталкивались с OpenGL... :)
Октодеревья - это и есть математическое описание объекта, которое (если вы его "подсуните" движку OpenGL) он OpenGL Вам отобразит (читай визуализирует, произведет рендеринг)
Ну опечатку допустил. Оскорблять или хамить кому-то я не хотел. Реально по делу ничего не было сказано, что здесь, что на другом форуме. Область так-то не простая, и все, сотрясая воздух, пытаются что-то посоветовать, что по сути ко мне вообще никак не относится. Мне до сир пор кажется, что никто не понял сути вопроса. Просто я человек работающий в науке, причем долгое время. Поэтому я надеялся, что кто-то приведет реальное решение, с некоторым объянением того, как это всё реализовать. Прежде чем советовать, кто-нибудь пробовал это реализовать? Кто-нибудь делал это ранее? Конечно нет.
Связался с коллегами из Германии, они мне предоставили для ознакомления пакеты Avizo и Amiro, так же существует пакеты для визуализации VGStudio MAX и VolView, но все они, являясь коммерческими, стоят довольно таки не дешево, если учесть, что из всего функционала мне необходима только сама визуализация, без прочих различных наворотом. Более простого на рынке программного обеспечения я увы не нашел. Так что решения существуют, и задача не тупиковая. Однако я до сих пор не знаю, с чего начать. Просмотрел кучу статей по визуализации в промышленности (в том числе и в томографии), везде описывают, что они (разработчики) добились результатов и всё у них получилось, всё замечательно, но вот как они получали эти результаты - нигде не сказано. На данный момент топчусь на одном месте, не зная в какую сторону мне шагнуть.