Задача - 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 теги, их нужно подтереть.
имееются координаты точек (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 теги, их нужно подтереть.