Render.ru

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

#1
Задача - 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 теги, их нужно подтереть.
 
#6
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) Нарисовать данные в кадре! НО ОН НЕ РИСУЕТ!
)


что тут за загвоздка?
 
Сверху