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

Монстрам 3D max, работа со скриптами и внеш.данными

Тема в разделе "MAXScript", создана пользователем -, 12 авг 2005.

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

    Задача - 1:

    имееются координаты точек (xyz) хранящееся в файлах. Необходимо в соответствии с этими точками расставить сферы (радиус и цвет фиксирован). удалось наклипать сей скрипт:

    DataPath=getSavePath caption:"Папка с данными"

    --DataPath=copy "c:\\out"
    AtomArray=#(); AtomColor=#()
    -- Читаем файлы со сферами
    fname1=copy DataPath; fname1=fname1+"\\xsset.dat"
    fname2=copy DataPath; fname2=fname2+"\\ysset.dat"
    fname3=copy DataPath; fname3=fname3+"\\zsset.dat"
    f1=OpenFile fname1 mode:"r"; f2=OpenFile fname2 mode:"r"; f3=OpenFile fname3 mode:"r"
    do ( x=(readLine f1) as float; y=(readLine f2) as float; z=(readLine f3) as float
    p=Point3 x y z; print p
    append AtomArray p; append AtomColor green
    )
    while ((not (eof f1))and(not (eof f2))and(not (eof f3)))
    close f1; close f2; close f3
    -- Читаем файлы с красными сферами
    fname1=copy DataPath; fname1=fname1+"\\idxx.dat"
    fname2=copy DataPath; fname2=fname2+"\\idxy.dat"
    fname3=copy DataPath; fname3=fname3+"\\idxz.dat"
    f1=OpenFile fname1 mode:"r"; f2=OpenFile fname2 mode:"r"; f3=OpenFile fname3 mode:"r"
    do ( x=(readLine f1) as float; y=(readLine f2) as float; z=(readLine f3) as float
    p=Point3 x y z; print p
    n=findItem AtomArray P
    if (n==0) then ( append AtomArray p; append AtomColor red )
    else ( AtomColor[n]=red )
    )
    while ((not (eof f1))and(not (eof f2))and(not (eof f3)))
    close f1; close f2; close f3
    -- Строим сферы
    for i=1 to AtomArray.count do
    ( sphere radius:2 pos:AtomArray[i*100] wireColor:AtomColor[i*100] segs:8
    print i
    )

    в итоге получил требуемое изображение, посмотреть на которое можно здесь http://www.cite.pisem.net/3D/atom.jpg

    далее была сделана попытка при помощи этого скрипта загнать несколько большее кол-во точек... (это файлы xsscr_mcd.dat, ysscr_mcd.dat, zsscr_mcd.dat, которые обнаружить можно здесь http://www.cite.pisem.net/3D/data/ скипт был модернизирован, (закоментированы красные сферы), цель этого действа получить 3d картинку по сути похожую на эту http://www.cite.pisem.net/3D/data/pic.jpg

    после 3х часового ожидания когда cpu 100% занят чем-то... результата пока нет...

    вопрос к задаче 1, КАК РЕАЛИЗОВАТЬ более грамотно эту задачу (думаю стоит считать N сфер, нарисовать, считать следущие N, чтобы не ехала крыша у макса, как это сделать я не пойму ибо макс вижу 2ой день)


    Задача 2, идеал, или же заветная цель....

    Упращенно её можно описать так. Имеется 2 точки, координаты которых тоже хранятся в файле, для простоты дадим им координаты 1точка (0,0,0) и 2точка (10,10,10). 1 точка решила переместиться на координату (0,1,4), вторая тоже на (11,10,10.08). эти координаты ( (0,1,4) и (11,10,10.08)) т.е. координаты конечного положения хранятся в том же файле что и их начальные (т.е. каждый файл коорд состоит из 4 строк, 2-е фигура из 2х точек, 2 следующие её эволюция/изменение координат составляющих её). Таких перемещений может быть много, точнее очень много т.е. считывать движения нужно до eof (end of file).

    ВОПРОС как сделать анимацию сего действа, т.к. данные которые подгружаются - движения точек по сути кадры И (ВНИМАНИЕ) они дерганые и их мало, согласно pic.jpg их 38, т.е. нужно чтобы точка 1 ,хоть в файле переместилась на (0,1,4), движение-то получается рывком, чтобы сгладить это, нужно чтоб точка плавно подошла к цели, тем самым слгаживая движения и увеличивая кол-во кадров так, чтобы продолжительность ролика была приемлимой для глаза.

    файл данных кол-во точек в фигуре NS=1000 xsscr.dat, ysscr.dat, zsscr.dat - для фигуры 1 и кол-во точек в фигуре 2 NZ=235 xzscr.dat, yzscr.dat, zzscr.dat можно взять здесь http://www.cite.pisem.net/3D/data/
    см файл info.txt


    Всякие извраты с текстурами светом и пр. пр. не нужно, главное скорость и автоматизм (для чего нежен скрипт)


    С задачей1 я хоть на 50% но справился, но задачу2 мой не окрепший ум воопше откзывается понимать в плане реализации в максе...


    P.S. т.к. я не профи в этом продукте посему пользую то что нашел, версия макса 5.

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

    PS2 хостер к файлам dat цепляет в конце html теги, их нужно подтереть.
     
  2. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    См Почту
     
  3. Guest

    нету ничего на почте :(
     
  4. Guest

    нашел!
     
  5. Guest

    denissavin
    см. почту :)
     
  6. Guest

    denissavin

    можно немного комментов по поводу твоего скрипта??
    for t = 1 to frames do ( --первый фрейм/кадр
    local i = 1
    while not (eof fx or eof fy or eof fz or i > ObjectCount) do with animate on(
    local x=(readLine fx) as float
    local y=(readLine fy) as float
    local z=(readLine fz) as float
    -- x=x*scaledata
    -- y=y*scaledata
    -- z=z*scaledata
    at time (t*10) AA.pos = [x,y,z] --Считать данные
    i += 1
    )
    Create_Atoms (Color 0 255 0) Нарисовать данные в кадре! НО ОН НЕ РИСУЕТ!
    )


    что тут за загвоздка?
     
Модераторы: Savin Denis

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