Render.ru

Симулятор ультразвукового сканнера

DimDau

Пользователь сайта
Рейтинг
2
#1
Доброго времени суток, господа!


Обращаюсь к уважаемому Форуму за подсказками, советами… Я врач, УЗ диагност, знакомый с некоторыми графическими 3D пакетами и способный к не самому сложному моделингу/текстурингу. Какое-то время назад ощутил потребность иметь в РС модель (модели) отдельных органов (и их сочетаний) с возможностью построения произвольных (управляемых) их сечений. На данном этапе четкого (жесткого) представления о конечном результате и способах его достижения нет, т.е., возможны варианты. В качестве основного инструмента выбрана Maya 2017. На РС стоит еще 3DS Max 2018 и Houdini FX. Для вывода сцен/анимации в исполняемую программу предполагается использовать Unreal Engine или последний Stingrey (оба установлены). Как это должно быть:

1. Стенки моделей органов должны иметь толщину – состоять как минимум из двух сеток. Поверхностный текстуринг либо с картой неровностей, либо со смещением

2. Между сетками (в стенках) должны быть трубчатые протяженные ветвистые структуры (сосуды -полые, нервы, соединительная ткань - сплошные)

3. При построении сечения органа (булевским пересечением?) на срезе межсеточное содержимое должно визуализироваться и текстурироваться.

4. Для межсеточного текстуринга предполагается использовать встроенные в Майю и подправленные в гипершейде 3Д текстуры.

5. Модель органа выше и ниже плоскости сечения также должна визуализироваться (с управляемой прозрачностью)

Если моя тема найдет отклик у форумчан, то вопросов будет много.. на часть из них я ищу ответы сам методом тыка. Ответы на некоторые вопросы, приведенные ниже, могут сильно мне помочь:

1. Правильно ли я выбрал в качестве основного инструмента Maya?

2. Как, чем, кроме булевского пересечения можно построить управляемое сечения одной плоскостью (тонким параллелепипедом приветствуется) нескольких объектов?

3. Какой вид (2Д или 3Д) текстуринга лучше выбрать с прицелом на экспорт сцены в вышеуказанные движки?

4. Как увязать текстурирование сечения с текстурой поверхности отсекаемой модели? Пока у меня они живут по отдельности, несмотря на одну текстуру..
 

Вложения

Andots

Знаток
Рейтинг
66
#2
Я конечно не спец в анатомических программах, но помоему все что вы хотите есть в различных интерактивных анатомических атласах, коих много. Если же делать с нуля то это получится целая долгая и нудная разработка в которой потребуются не только 3Dшники и и програмеры, коли уж решили в игровые движки полезть. Во всяком случае базовых познаний 3D для этого будет более чем недостаточно.
 

DimDau

Пользователь сайта
Рейтинг
2
#3
Того, чего надо, к сожалению нет.. Я немного приложил руку к разработке РУДН http://www.arteksa.ru/index.php/ru/ . Статичные каркасные модели есть, надо понять как их довести до отдельных профессиональных дополнений, для УЗИ в частности. Уточню основной вопрос: можно в Майе построить управляемое сечение 3Д объектов? Макс мне знаком меньше Майи, там вроде есть что-то похожее на то что нужно..
 

Andots

Знаток
Рейтинг
66
#5
Сечение вам не поможет. В 3D программах все объекты полые внутри. Т.е при разрезе вы просто будите наблюдать полый орган. Тут задача гораздо и гораздо сложнее чем кажется на первый взгляд. Да и копать надо в сторону проги в которой будет происходить интерактивная визуализация. В майке вы просто создадите и оттекстурите объекты, потом перегоните например в анреал, в котором уже надо будет делать управление, логику итп итд.. Это задача для студий, а не для одного человека. Если я конечно правильно понял что вы хоите добиться. Прийдется и програмить, дабы научить прогу заполнять мясом пустоты итд. В общем швах.
 

DimDau

Пользователь сайта
Рейтинг
2
#6
А что насчет булевского пересечения? На простых примитивах (на pipe например) к плоскости пересечения можно прицепить ту же 2Д текстуру что прицеплена к поверхности трубы, руками в гипершейде (см. приложенный файл в начале топика). И еще вопрос. Использование 3Д текстуры не поможет заполнить пустоты?
И еще одна идея. А если заполнить пустоту (между сетками) объемным материалом, неподвижными частицами, плотным туманом и т.п.? Она порежется мульткутом?
 
Последнее редактирование:

Andots

Знаток
Рейтинг
66
#8
А что насчет булевского пересечения? На простых примитивах (на pipe например) к плоскости пересечения можно прицепить ту же 2Д текстуру что прицеплена к поверхности трубы, руками в гипершейде (см. приложенный файл в начале топика). И еще вопрос. Использование 3Д текстуры не поможет заполнить пустоты?
И еще одна идея. А если заполнить пустоту (между сетками) объемным материалом, неподвижными частицами, плотным туманом и т.п.? Она порежется мульткутом?
Да вариантов то можно много придумать и заполнить чем нибудь, не такая уж и проблемма, вопрос то не в этом. Каким образом все это вы собираетесь прикрутить в сторонний движек. Для статичного рендера решаемо, даже для анимации майской тоже решаемо. Но вот как быть с движком, можно перегнать конечно геокешем, но я как понял вам нужен интерактив а не тупо заготовленная заранее анимация. Или я неверно понял?
 

DimDau

Пользователь сайта
Рейтинг
2
#9
Гм... этим вопросом пока не заморачивался... Да, интерактив нужен.. До перевода в него реальной модели хочу на простых примитивах пройти весь путь. В чем делать-то эти управляемые сечения? Откуда можно потом модель, плоскость сечения со всеми текстурами и манипулятор плоскости в движок перегнать? И в какой? Пока это зуд в моей заднице - прямо вижу как это должно работать и как это будет здорово. В перспективе это может получится профессиональный симулятор, с двигающимися стенками сердца, с потоком крови через клапаны... Причем я точно как узи-спец понимаю что хочу получить в интерактиве.. У забугорников есть девайсы, выполненные с искусственным человеческим телом и УЗ датчиками, реальным УЗ сканнером, которые прямо так и называются - УЗ симуляторы. Стоят безумных денег. Интерактивная РС модель, с управлением мышью наверняка заинтересует много кого.. Если иметь представление как это сделать, то под это можно и денег вытрясти из каких либо венчурных фондов..
 

Andots

Знаток
Рейтинг
66
#10
Ну если разбирать по полочкам то я не вижу вменяемой альтернативы (без тонны строк кодинга) кроме как делать кучку (штук 200-300) продольных срезов тела, правя их вручную. Потом наложением друг на друга делать макет человека в игровом движке, и соотв при перемещении плоскости среза пошагово их делать невидимыми. Поперечные срезы в таком случае будет попроще сделать. Но в любом варианте надо понимать что подобные гениальные идеи приходили в голову не только вам, и реализация была возможно заброшена тупо по причине "трудозатраты/выхлоп". Там много работы, и поверьте люди которые умеют тягать кубики туды сюда мало чем смогут помочь, нужные реальные програмисты. Не скажу что хорошо знаю анреал, но к примеру на блюпринте имхо прописать это достаточно сложно. Нужно вложение реальных денег на программеров (хз каких, они все мачо и великие хакеры), в одиночку не потяните, даже не пытайтесь. В голове всегда все просто кажется, а при попытке реализации приходит понимание.
 
Последнее редактирование:

DimDau

Пользователь сайта
Рейтинг
2
#11
Есть простенькая интерактивная прога, сделанная энтузиастом-врачом уже лет 15 как. Запускается без установки. Весит в развернутом виде всего 13 мб(!) Выложил в облаке https://yadi.sk/d/HZNN7qZb3Us2xQ Чем, как сделано - не имею представления. Воткнуть бы эти частицы в межсеточное пространство, внутрь напихать чего нибудь интересного, на сетки текстуры с бампом для красоты ....
 
Последнее редактирование:

DimDau

Пользователь сайта
Рейтинг
2
#15
Связался с автором. Создано в 3DS Max, движок Open GL, код в С++. Прога заброшена аж с 2003 года
 

4i4ikov

Знаток
Рейтинг
37
#16
Связался с автором. Создано в 3DS Max, движок Open GL, код в С++. Прога заброшена аж с 2003 года
Качественная и продуманная вещь, но ничего необычного. Уверен, автор заказывал, так как сделано профессионально, врач такое сам не сделает, он мог руководить созданием, выкупил права и сперва она была платная с usb-ключом(в хелпе это есть), через 10 лет выложил на форум как свободную http://valsalva.ru/viewtopic.php?t=2169

Технология там - point cloud (никаких гифок в движке нет). Режим поинт клуд можно включить и посмотреть. Есть обычная полигональная модель, её анимация собрана в виде бленд шейпов(если по-майски говорить), то есть несколько полигональных сеток, движок между ними блендит. И тоже самое сделано с поинт клуд - несколько облаков, между ними бленд для анимации. Все трехмерные данные собраны в data.tdf.

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

point cloud тоже стандартная технология, погуглите, очень много информации и инструментов. Майя под это не заточена, хотя это не проблема, поинт клуд это всего лишь набор точек с позицией и цветом. (Есть OpenVDB, что-то сходное с поинт клуд, но это так, для полноты вопроса можно глянуть)

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

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

DimDau

Пользователь сайта
Рейтинг
2
#17
4i4ikov
Спасибо за анализ сторонней программы! Увидел пути движения к цели... Полигональные майские модели есть - они в нашем статическом атласе http://www.arteksa.ru/index.php/ru/ уже работают. Точно я понял одно - быстро и просто не получится... Может перегнать модели куда нибудь, в Гудини например?
 

4i4ikov

Знаток
Рейтинг
37
#18
4i4ikov
Спасибо за анализ сторонней программы! Увидел пути движения к цели... Полигональные майские модели есть - они в нашем статическом атласе http://www.arteksa.ru/index.php/ru/ уже работают. Точно я понял одно - быстро и просто не получится... Может перегнать модели куда нибудь, в Гудини например?
По моделям нужно сетку смотреть, насколько хороший с неё будет поинт клуд. Хороший - это равномерной плотности, без резких уплотнений и разряжений. Если сетка годная, то без сложностей можно и в майе сделать, генерить партиклы с полигонов и раскрашивать можно стандартно без скриптов. Плюс заполнить стенки объектов партиклами. Это вам изучать nParticle.
Это минимум, далее можно усложнять, например сохранять ещё и нормали в партиклах, это потом улучшит визуализацию, но тут уже надо скриптовать.
Если поинт клуд получается нехороший, то тут уже активно скриптовать в майке, чтобы его улучшить. Про другие пакеты конкретно не скажу. И в UE потом возможно надо будет кодить, чтобы срезы генерить, хотя математика простая - пересечение секущей плоскости и точек.
Да, и это предварительно всё, практически если делать, может вылезти ещё что-то непредсказуемое.
 

maiden666

Мастер
Рейтинг
112
#19
Автор упомянул Гудини, в ней и нужно делать, по крайней мере все что связано с разрезами, используя vdb, то есть воксели
 

DimDau

Пользователь сайта
Рейтинг
2
#20
Гудини я параллельно уже какое-то время ковыряю.. Скорее всего придется что-то допилить в полигональных моделях в Майе, затем экспортировать в Гудини и далее там готовить для движка. В правильном направлении мыслю?
 
Сверху