forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Движение вертОлета! (http://forum.boolean.name/showthread.php?t=16471)

L-ee-X 11.03.2012 05:28

Движение вертОлета!
 
Привет Всем! Появился вопрос по реализации движение вертолета!
Кто нибудь пытался создать механизм управления вертолетом?
Есть начальные наброски кода, сделал поворот, взлет и посадку, но теперь трудности заключаются в то, что надо сделать движение верталета вперед!
К примеру я взлетаю вверх на клавишу W после жму стрелку вперед у меня вертолет меняет угол и должен лететь вперед! Как бы в голове то это все укладывается, а вот как реализовать это кодом не могу понять! Может кто , что подскажет по теме! :) За ранее Благодарствую! :)

Arles 11.03.2012 06:01

Ответ: Движение верталета!
 
самое простое - тянуть вертолет вверх через "MoveEntity", а при движении вперед/назад, менять угол наклона вертолета, либо же просто добавлять значение Z в вышеуказанную ф-ию(в этом случае вертолет будет двигаться без крена по оси X)

Igor 11.03.2012 20:15

Ответ: Движение верталета!
 
У вертолёта сила тяги перпендикулярно оси вращения лопастей.
всякие повороты (влево-вправо, нос вверх-вних, наклон вправо-влево) создаются за счёт хвостового винта и того, что в верхнем пропеллере лопасти немного меняют угол атаки в зависимости от положения. Т.е., по-уму, эти силы просто меняют ориентацию вертолёта в пространстве, а главным источником движения является тяга верхнего пропеллера.

impersonalis 11.03.2012 21:23

Ответ: Движение верталета!
 
Цитата:

Сообщение от Igor (Сообщение 222486)
У вертолёта сила тяги перпендикулярно оси вращения лопастей.
всякие повороты (влево-вправо, нос вверх-вних, наклон вправо-влево) создаются за счёт хвостового винта и того, что в верхнем пропеллере лопасти немного меняют угол атаки в зависимости от положения. Т.е., по-уму, эти силы просто меняют ориентацию вертолёта в пространстве, а главным источником движения является тяга верхнего пропеллера.

добавлю (уточню?):
хвостовой винт компенсирует вращение фюзеляжа (вызванное несущим винтом) в классической схеме (а ведь есть ещё соосная, поперечная, продольная). Да - можно добиться изменения рысканья (yaw) при помощи хвостового винта, но изменение тангажа ("нос вверх-вниз", pitch) или крена ("наклон влево-вправо", roll) реализуется при помощи автомата перекоса.
Здесь я просто ЧУДОВИЩНО кратко изложил основные моменты. Если всё упростить и не заморачиваться - см.:
1) Д. Конгер "ФИЗИКА ДЛЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР" (но, емнип, там про самолёты только).
2) Институт транспорта и связи "ОСНОВЫ АЭРОДИНАМИКИ И ДИНАМИКИ ПОЛЕТА". Рига, 2010
0) Википедия

St_AnGer 11.03.2012 21:34

Ответ: Движение верталета!
 
Давно когда то делать пытался вертолёт классической схемы (с использованием PhysX Wrapper). Ну и соответственно пытался сделать как можно реалистичнее его перемещение в пространстве.
Поднимал вверх увеличением силы действующей на фюзеляж снизу(имитация подъёмной силы), перемещения вперёд/назад/влево/вправо добивался наклоном фюзеляжа и небольшим уменьшением силы подъёма (что бы не поднимался вверх когда надо лететь на одной высоте), ну разворот влево/вправо проще некуда (или намеренный разворот фюзеляжа по оси Y, или действовать силой на хвостовую часть, что есть ненужный гемор).
Но ничего особо приличного не получилось из за моей тогдашней лени. Летать то вертушка летала, но очень криво и неказисто.

4yBa4Ok 12.03.2012 14:44

Ответ: Движение вертОлета!
 
А у меня джоинтом крепился ротор к фюзеляжу, на ротор дествовала подъемная сила которая за собой тащила верт.

burovalex 09.04.2012 09:39

Ответ: Движение вертОлета!
 
Да не заморачивайся с физиксом.
Сделай проще!
Создай пивот, к нему прикрепи модель вертолёта.
heliPivot=createPivot()
heliMesh=LoadMesh("",heliPivot)
И когда ты будешь нажимать вперед - делать
--------------------------------------------------------
S=S+A*time
If S>SMax then S=SMax ;это чтоб он у тебя не разгонялся быстрей максимальной
MoveEntity heliPivot,0,0,S*time ;я всегда пишу движение в зависимости от пройденного времени (синхронизация)
RotateEntity heliMesh,S*k,0,0
---------------------------------------------------------
где S - скорость
SMax - максимальная скорость
A - скорость
time - время кадра делённая на 1000 (frame/1000.0)
K - коэффициент наклона верталета (не обязательно, но поможет урегулировать нужный угол)

Вот и всё :)


Часовой пояс GMT +4, время: 05:43.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot