зд модель самолета на основе Кельской лодочки.

Автор
Сообщение
На сайте c 23.12.2007
Сообщений: 51
Добрый день!
задали задачку по компьютерному моделированию, сейчас даже не знаю как ее решить.
суть задачи в следующем:
дана 3д модель самолета, самолет находится в 3д пространстве x-y-z.

Существует программа (алгоритм написанный на делфи) который в зависимости от времени (t, меняющееся от 0 до 100сек) выдает углы наклона самолета. в процессе работы программы самолет должен менять в 3д свое положение относительно осей координат.
Возможно ли такое сделать в 3ds max (хотелось бы сделать в максе тк в нем можно наложить дым воздух огонь и др спец эффекты), или вообще в др программе?
На сайте c 11.03.2007
Сообщений: 1235
Russia
а результат то какой должен быть? видео, картинка или перфокарта какаянибудь с данными о времени и углах наклона?
На сайте c 23.12.2007
Сообщений: 51
я думаю в принципе и видео пойдет, но хотелось бы видеть чтобы ввел углы и тут же модель завертелась, закрутилась пока время не кончится, как бы мб даже ексешник сделать
На сайте c 17.10.2006
Сообщений: 11377
Казань
norm
Возможно.
Вот есть урок для начинающих
http://mod.worldofgothic.ru/3d/simple-animation-tutor  
Тут кубик перемещается, но можно взять самолёт (надо только сгруппировать) и вращать.

Сохранять лучше не сразу в видео, а в помледовательность какдров. Собирать в видео через программу. Например VirtualDUB
Для рендера такого надо ставить не SingleFrame, a range или Frames и задать 0-(кол-во кадров)
ПРописать путь для файлов в output patch
На сайте c 02.10.2006
Сообщений: 680
АР Крым Симферополь
я так понял анимацию нужно сделать)
в максе можно...
поставь самолет на позиции X Y Z
настрой шкалу времени как тебе нужно.
потом по ключевым кадрам и временной шкале крути как нужно...
На сайте c 23.12.2007
Сообщений: 51
надо чтобы самолет крутили углы, которые получаются в зависимости от времени из длиннющего кода программы, в котором происходят вычисления с использованием угловых скоростей веса сопротивления воздуха притяжения и др др параметров.
На сайте c 23.12.2007
Сообщений: 51
nailgun, я умею делать анимацию в 3d max! мне нужно как то связать цикл в котором углы определяются с 3д объектом в максе!!! чтобы я ввел параметры нажал на кнопку запустил цикл, который выводит углы которые получаются и самолет в зависимости от их вращается.
в максе как то можно задать программный код??? к примеру:

повторяй пока t<100
тело
t:=t+0.001;
- расчеты

вывод угол 0x=
вывод угол 0y=
вывод угол 0z=

-отображение положения самолета

конец тела
На сайте c 11.03.2007
Сообщений: 1235
Russia
тебе какойто автопилот нужен прямо... можно отрендерить самолет со всех сторон (или с одной стороны, но с анимацией поврота на определенный угол) во флэш с помощью swift и во флэше собрать демонстрацию с окошками для числового набора или рукоятами, тумблерами где можно вводить значения различные... будет красиво и можно в ехе
На сайте c 17.10.2006
Сообщений: 11377
Казань
norm
В Максе есть MaxScript. Возможно если его изучить, то можно сделать.
Вот есть статейка
http://www.render.ru/books/show_book.php?book_id=277  

А вообще поищи инфу о форматах которые позволяют крутить объект в окнах брузера. Типа o2c и QuickTime
На сайте c 11.03.2007
Сообщений: 1235
Russia
Quote:
В Максе есть MaxScript. Возможно если его изучить, то можно сделать.

так ведь он будет преподам показывать на в максе
а то есть всякие элементы управления которые выводятся прямо в окно вьюпорта. Это не то, что ему надо.

А тут - есть сиквенс, который подчиняется программе. Сложно конечно, но реализовать можно - если знать флэш.
На сайте c 23.12.2007
Сообщений: 51
используя програмку Macromedia Director MX 2004,
я сейчас сделал самолет вращающийся по нажатию клавишь,

скрипт в Macromedia Director MX 2004:
Code:
on enterFrame me if keyPressed ("a") then member ("boing5").model("plane").rotate(0,2,0) end if if keyPressed ("d") then member ("boing5").model("plane").rotate(0,-2,0) end if if keyPressed ("w") then member ("boing5").model("plane").rotate(2,0,0) end if if keyPressed ("s") then member ("boing5").model("plane").rotate(-2,0,0) end if if keyPressed ("q") then member ("boing5").model("plane").rotate(0,0,2) end if if keyPressed ("e") then member ("boing5").model("plane").rotate(0,0,-2) end if if keyPressed ("r") then member("boing5").resetWorld( ) end if end

у меня задан цикл в котором происходит высчитывание углов ox, oy, oz.
в начале высчитываются определители импульсов (1 раз за время работы программы):
Code:
t:=0; fi:=1; fi_t:=1; gam:=1; O:=1; p_fi:= j_x*(fi_t*sin(gam)*sin(O)+O_t*cos(gam))*sin(gam)+J_y*(fi_t*cos(gam)*sin(O)-O_t*sin(gam))*cos(gam)+ J_z*(fi_t*cos(O)+gam_t)*cos(O); p_gam:=J_z*(fi_t*cos(O)+gam_t); p_O:=j_x*(fi_t*sin(gam)*sin(O)+O_t*cos(gam))*cos(gam)-J_y*(fi_t*cos(gam)*sin(O)-O_t*sin(gam))*sin(gam); del_0:=0.5*J_x*J_X*J_Z*(3-cos(4*gam))*sin(O)+0.5*J_X*J_Y*J_Z*(3+cos(4*gam))*sin(O)+J_Z*J_Z*(J_X+J_Y)* (1-cos(2*gam))*(1-cos(2*O))+0.5*J_y*J_y*J_Z*(1-cos(4*gam))- 0.5*(1-cos(4*gam))*({} (J_X*J_X*J_Z-J_x*J_Y*J_Z)*cos(O)+(J_Y*J_Y*J_Z-J_X*J_Y*J_Z)*sin(O) )- 0.5*({} J_X*J_Z*J_Z*(1+cos(2*gam))+J_Y*J_Z*J_Z*(1-cos(2*gam)) )*(3*cos(O)+cos(3*O)); del_fi:=2*({} J_x*J_Z*(1+cos(2*gam))+J_Y*J_Z*(1-cos(2*gam)) )*p_fi-2*(J_X*J_Z*sin(2*gam)-J_Y*J_z*sin(2*gam))*p_O- ({} J_X*J_Z*(1-cos(2*gam))+J_y*J_Z*(1+cos(2*gam)) )*(1+cos(2*O))*p_O; del_gam:=({} 0.5*J_x*J_X*(3-cos(4*gam))*sin(O)+0.5*J_X*J_y*(3+cos(4*gam))*sin(O) )*p_gam+ 2*({} J_X*J_Z*sin(2*gam)-J_y*J_Z*sin(2*gam) )*cos(O)*p_O- 0.5*(1-cos(4*gam))*({} (J_X*J_X-J_x*J_Y)*cos(O)+(J_Y*J_Y-J_X*J_Y)*sin(O) )*p_gam- 2*({} J_X*J_Z*(1+cos(2*gam))+J_Y*J_Z*(1-cos(2*gam)) )*cos(O)*p_fi; {??? какойто еще "+"} del_O:=({} J_X*J_z*(1-cos(2*gam))*sin(O)+J_Y*J_Z*(1+cos(2*gam))*sin(O)+J_Z*J_z*(1+cos(2*O)) )*p_O+ 0.5*({} J_x*J_z*sin(2*gam)*(3*cos(O)+cos(3*O))-J_Y*J_Z*sin(2*gam)*(3*sin(O)+sin(3*O)) )*p_gam- ({} J_X*J_z*sin(2*gam)*cos(O)-J_y*J_Z*sin(2*gam)*sin(O) )*p_gam-0.5*J_Z*J_Z*(3*cos(O)+cos(3*O) )*p_O; {5}D_gam_del_0:=2*J_x*(J_x*J_z-J_y*J_z)*sin(4*gam)*sin(O)+2*J_z*J_z*(J_x+J_y)*sin(2*gam)*(1-cos(2*O))+2*J_y*J_y*J_z*sin(4*gam)- 2*sin(4*gam)*({} (J_x*J_x*J_z-J_x*J_y*J_z)*cos(O)+(J_y*J_y*J_z-J_x*J_y*J_z)*sin(O))+J_z*J_z*(J_x-J_y)*sin(2*gam)* (3*cos(O)+cos(3*O)); {6}D_O_del_0:=0.5*J_X*J_X*J_Z*(3-cos(4*gam))*cos(o)+0.5*J_X*J_Y*J_Z*(3+cos(4*gam))*cos(O)+ 2*J_Z*J_Z*(J_x+J_y)*(1-cos(2*gam))*sin(2*o)+0.5*J_Y*J_Y*J_Z*(1-cos(4*gam))- 0.5*(1-cos(4*gam))*( J_X*J_Z*(J_x-J_Y)*sin(O)+J_Y*J_z*(J_x-J_Y)*cos(o))- 1.5*J_z*J_Z*(J_x*J_Z*J_z*(1+cos(2*gam))+J_Y*J_Z*J_Z*(1-cos(2*gam)) )*(sin(o)+sin(3*o)); {7}D_gam_del_fi:= -4*J_Z*(J_X*sin(2*gam)-J_Y*sin(2*gam))*p_fi-4*J_z*(J_x*cos(2*gam)-J_y*cos(2*gam))*p_o- 2*J_z*(J_x*sin(2*gam)-J_Y*sin(2*gam))*(1+cos(2*O))*p_O; {8} D_O_Del_fi:=2*J_z*(J_x*(1-cos(2*gam))+J_y*(1+cos(2*gam)) )*sin(2*O*p_O); {9} D_gam_del_gam:=2*J_x*(J_x*sin(4*gam)*sin(O)-J_y*sin(4*gam)*sin(O))*p_gam+4*J_z* (J_x*cos(2*gam)-J_y*cos(2*gam))*cos(O)*p_O-2*sin(4*gam)*(1-cos(4*gam))* ((J_x*J_x-J_x*J_y)*cos(O)+(J_y*J_y-J_x*J_y)*sin(O))*p_gam-2*J_z*(J_x*(1+cos(2*gam))+ J_y*(1-cos(2*gam)))*cos(O)*p_fi; {10} D_O_Del_gam:=0.5*J_x*( J_x*(3-cos(4*gam))*cos(O)+J_y*(3+cos(4*gam) )*cos(O))*p_gam- 2*J_z*(J_x*sin(2*gam)-J_y*sin(2*gam))*sin(O)*p_O+0.5*(1-cos(4*gam))*(J_x*(J_x-J_y)*sin(O)+ J_y*(J_x-J_y)*cos(O) )*p_gam+2*J_z*(J_x*(1+cos(2*gam))+J_y*(1-cos(2*gam)))*sin(O)*p_fi; {11} D_gam_Del_O:=2*J_z*(J_x*sin(2*gam)-J_y*sin(2*gam))*sin(O)*p_O+J_z*(J_x*cos(2*gam)*(3*cos(O)+ cos(3*O))-J_y*cos(2*gam)*(3*sin(O)+sin(3*O)))*p_gam-J_z*(J_x*cos(2*gam)*cos(O)- J_y*cos(2*gam)*sin(O))*p_fi; {12} D_O_Del_O:=J_z*(J_x*(1-cos(2*gam))*cos(O)+J_y*(1+cos(2*gam))*cos(O)-2*J_z*sin(O))*p_O- (1.5*J_z*(J_x*J_z*sin(2*gam)*(sin(O)+sin(3*O))+J_y*J_z*sin(2*gam)*(cos(O)+cos(3*O))*p_gam))+ J_z*(J_x*cos(2*gam)*cos(O)-J_y*cos(2*gam)*cos(O))*p_fi+(1.5*J_z*J_z*(sin(O)+sin(3*O))*p_O); {13} D_P_gam_Del_fi:=0; {14} D_P_fi_Del_O:=0; {15} D_P_fi_del_fi:=2*(J_x*J_z*(1+cos(2*gam))+J_y*J_z*(1-cos(2*gam))); {16} D_P_O_del_fi:=-2*J_z*(J_x*sin(2*gam)-J_y*sin(2*gam))-J_z*(J_x*(1-cos(2*gam))+ J_y*(1+cos(2*gam)))*(1+cos(2*O)); {17} D_P_fi_del_gam:=-2*(J_x*J_z*(1+cos(2*gam))+J_y*J_z*(1-cos(2*gam)))*cos(O); {18} D_P_gam_Del_gam:=0.5*J_x*( 0.5*J_x*(3-cos(4*gam))*sin(O)+J_y*(3+cos(4*gam))*sin(O) )- 0.5*(1-cos(4*gam))*( (J_x*J_x-J_x*J_y)*cos(O)+(J_y*J_y-J_x*J_y)*sin(O) ); {19} D_P_O_Del_gam:=2*(J_x*J_z*sin(2*gam)-J_y*J_z*sin(2*gam))*cos(O); {20} D_P_gam_del_O:=0.5*J_z*(J_x*sin(2*gam)*(3*cos(O)+cos(3*O))-J_y*sin(2*gam)*(3*sin(O)+sin(3*O)) ); {21} D_P_O_del_O:=J_z*(J_x*(1-cos(2*gam))*sin(O)+J_y*(1+cos(2*gam))*sin(O)+J_z*(1+cos(2*O)))+ 0.5*J_z*J_z*(3*cos(O)+cos(3*O));


Теперь цикл который повторяется и меняет положение углов (повторяется много раз):
Code:
repeat {1} P_fi_t:=0; {2} {2 proi3vodnaya} P_gam_t:=(-1/(2*del_0*del_0))*({} 2*J_x*(del_fi*sin(gam)*sin(O)+del_O*cos(gam))* (D_gam_del_fi*sin(gam)*sin(O)+del_fi*cos(gam)*sin(O)+D_gam_del_O*cos(gam)-del_o*sin(gam))*del_0+ J_x*(del_fi*sin(gam)*sin(O)+del_O*cos(gam))*(del_fi*sin(gam)*sin(O)+del_O*cos(gam))*D_gam_del_0+ 2*J_y*(del_fi*cos(gam)*sin(O)-del_O*sin(gam))*(D_gam_del_fi*cos(gam)*sin(O)+ del_fi*sin(gam)*sin(O)+D_gam_del_O*sin(gam)+del_O*cos(gam))*del_0+ +J_y*(del_fi*cos(gam)*sin(O)-del_O*sin(gam))*(del_fi*cos(gam)*sin(O)-del_O*sin(gam))*D_gam_del_0+ +2*J_z*(del_fi*cos(O)+del_gam)*(D_gam_del_fi*cos(O)+D_gam_del_gam)*del_0+ J_z*(del_fi*cos(O)+del_gam)*D_gam_del_0 ) ; {3} P_O_t:=(-1/(2*del_0*del_0))*({} 2*J_x*(del_fi*sin(gam)*sin(O)+del_O*cos(gam))* (D_O_del_fi*sin(gam)*sin(O)+del_fi*sin(gam)*cos(O) )*del_0+ J_x*(del_fi*sin(gam)*sin(O)+del_O*cos(gam) )*(del_fi*sin(gam)*sin(O)+del_O*cos(gam) )*D_O_del_0+ 2*J_y*(del_fi*cos(gam)*sin(O)-del_O*sin(gam) )*(D_O_del_fi*cos(gam)*sin(O)+del_fi*sin(gam)*cos(O) )*del_0+ J_y*(del_fi*cos(gam)*sin(O)-del_O*sin(gam))*(del_fi*cos(gam)*sin(O)-del_O*sin(gam))*D_O_del_0+ 2*J_z*(del_fi*cos(O)+del_gam)*(D_O_del_fi*cos(O)-del_fi*sin(O)+D_O_del_gam)*del_0+ J_z*(del_fi*cos(O)+del_gam))*D_O_del_0; {4} fi_t:=(1/(del_0))*({} (J_x*(del_fi*sin(gam)*sin(O)+del_O*cos(gam))*sin(gam)*sin(O)*D_P_fi_del_fi+ J_y*(del_fi*cos(gam)*sin(O)-del_O*sin(gam))*cos(gam)*sin(O)*D_P_fi_del_fi+ J_z*(del_fi*cos(O)+del_gam)*cos(O)*D_P_fi_del_fi) ); {5} gam_t:=(J_z/del_0)*(del_fi*cos(O)+del_gam)*D_P_gam_del_gam; {6} O_t:=(1/del_0)*({} (J_x*(del_fi*sin(gam)*sin(O)+del_O*cos(gam))*cos(gam)*D_P_O_del_O+ J_y*(del_fi*cos(gam)*sin(O)-del_O*sin(gam))*sin(gam)*D_P_O_del_O) ); t:=t+0.01; fi:=fi+fi_t*t; gam:=gam+gam_t*t; O:=O+O_t*t; P_fi:=P_fi+P_fi_t*t; P_gam:=P_gam+p_gam_t*t; P_O:=P_O+P_O_t*t; {СДЕСЬ НАДО ЧТОБЫ САМОЛЕТ ПЕРЕВЕРНУЛСЯ НА УГЛЫ: 0X=fi 0Y=gam 0Z=O } until t=120;



Пожалуйста эксперты ПОМОГИТЕ!!!
Из языков программирования знаю только делфи. Как формулы можно вставить в Macromedia Director MX?
Читают эту тему: