Render.ru

импорт 200е3 кубиков -- фантом человека

#1
У меня есть фантом человека состоящий из кубиков (который используется для расчёта доз облучения в научных целях), фантом задан на трёхмерной прямоугольной сетке каждой ячейки которой присвоен индекс -- номер органа или пустота (id=0). В сетке 7 миллионов кубиков (из них 5 лимонов пустые, т.е. кубиков с информацие всего 2 лимона).

ЗАДАЧА: сделать классную 3Д презентацию органов (всего тела).

Я написал скрипт, который высасывает из фантома индексы (i,j,k) нужного органа. Для щитовидной железы (~500 кубиков) усё путём: т.е. я импортирую массивы индексов через MAXScript, затем вторым скриптом организую массив кубиков, который затем в меш перегоняется. Эта хрень работает если мало кубиков. Если из несколько десятков тысяч то на моей домашней тачке (512 МБ ОЗУ) Макс говорит, что нехватает памяти. На работе есть тачка с 2 ГБ ОЗУ, но мне кажется, что я неправильный подход использую, что нужно не кубики множить, а, к примеру, сразу поверхность внешнюю рисовать.

Чтобы уменьшить кол-во кубиков, при помощи внешнего скрипта, я нахожу только кубики границы тела (органа), но вся равно для всего тела это 200 тысяч кубиков и я не могу всосать три массива индексов i() j() k() для такого кол-ва элементов, а уж тем более наплодить эти кубики и загнать их в меш.

Пожалуйста, посоветуйте как можно загнать такую геометрию в 3d max 7 (или другую 3Д программу). В далнейшем, хотелось бы сгладить контуры поверхностей...

Спасибо!
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#2
Ни одна программа пожалуй не будет рада такому количеству объектов
Обычно для таких задач, по расчету, пишутся программы на языках способных выдать более продуктивный код
Если потом нужно просмотреть результат, то используют программы рендера
без редактора обычно (например renderman совместимого стандарта)

Для импорта лучше писать полноценный плаг
Можно конечно и скриптом, вот некоторые мысли по оптимизации:
Отключить Undo !!!
бинарный доступ к файлу
читать поблочно, не пытатся загнать сразу весь в память(если он большой)
или прямо из файла
уменьшить в сцене число обьектов (обьединять в один меш)
(нелюбит макс большое количество обьектов)
правда и в один меш все может не влезть
если нужно, увеличить размер стека для скрипта
 
Сверху