1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

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

Тема в разделе "Общие вопросы", создана пользователем -, 9 апр 2005.

Модераторы: Артер
  1. Guest

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

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

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

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

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

    Спасибо!
     
  2. Guest

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

    МАХ говорит или MaxScript?
     
  3. Guest

    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. Guest

    проблема с недостатком памяти решилась просто:

    heapSize = 20e6 -- 20 MB instead of default 7.5 MB
     
Модераторы: Артер

Поделиться этой страницей