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

Интерактивное 3D

Тема в разделе "Общие вопросы", создана пользователем norm, 22 апр 2009.

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

    norm Пользователь сайта

    С нами с:
    03.12.2008
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    2
    Добрый день!
    Мне необходимо создать 3д модель самолета в пространстве x-y-z причем координаты углов наклона будет обеспечивать цикл выдающий в зависимости от времени соответствующие углы наклона.
    делал по уроку http://www.render.ru/books/show_book.php?book_id=277
    не могу импортировать объект в Director MX 9.0.
    при импорте файлы появляется ошибка:
    Having trouble reading obj-plane.m3g. Continue importing?
    импот файла не производится.

    Сохраняю объект так:
    создаю самолет, file -> export -> obj-plane.m3g

    при сохранении вылазит 2 сообщения:
     

    Вложения:

    • 1220342.jpg
      1220342.jpg
      Размер файла:
      61,5 КБ
      Просмотров:
      41
  2. norm

    norm Пользователь сайта

    С нами с:
    03.12.2008
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    2
    Пожалуйста помогите! очень важно! мб хоть кто-нибудь модель самолета сохранит в 3mg?
     
  3. norm

    norm Пользователь сайта

    С нами с:
    03.12.2008
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    2
    где можно скачать плагин для 3ds max 9 для экспорта в Shockwave 3d Scene Export (*. w3d).
     
  4. GoodMan

    GoodMan Мастер

    С нами с:
    20.04.2005
    Сообщения:
    2.792
    Симпатии:
    9
    Баллы:
    254
    Ищи здесь http://maxplugins.de

    Хотя с 8-го МАХ-а он идет как встроенный плагин..
     
  5. Alteste

    Alteste Активный участник

    С нами с:
    13.03.2006
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    5
    фраза выносит мозг
    А вообще статья, по которой ты пытаешься сделать "интерактивное 3Д", старая. Сейчас можно найти менее геморный способ создания интерактивного 3Д приложения для веб, безо всяких скриптов (ну если на уровне "просто повертеть").
     
  6. norm

    norm Пользователь сайта

    С нами с:
    03.12.2008
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    2
    я сейчас сделал самолет вращающийся по нажатию клавишь,

    Код:
    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 раз за время работы программы):

    Код:
    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));
    Теперь цикл который повторяется и меняет положение углов (повторяется много раз):

    Код:
    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;

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

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