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Д программу). В далнейшем, хотелось бы сгладить контуры поверхностей...

Спасибо!
 
#2
>Макс говорит, что нехватает памяти.

МАХ говорит или MaxScript?
 
#3
MAXScript говорит:

-- Runtime error: Out of scripter memory - use options to increase

Похоже, можно как-то больше памяти ему дать... и это для жалких трёх массивов целочисленных с кол-вом элементов порядка 100е3:
file = openFile "d:/golem_outer.vxl"
n = (readLine file) as integer
i = #()
j = #()
k = #()
i[n] = 0
j[n] = 0
k[n] = 0

for ii = 1 to n do (
l = readLine file
ll = filterString l "="
i[ii] = ll[1] as integer
j[ii] = ll[2] as integer
k[ii] = ll[3] as integer
)
close file
 
#4
проблема с недостатком памяти решилась просто:

heapSize = 20e6 -- 20 MB instead of default 7.5 MB
 
Сверху