forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Реализация поезда (http://forum.boolean.name/showthread.php?t=14054)

turBO 20.01.2011 00:46

Ответ: Реализация поезда
 
Над проблемами движения локомотивов и вагонов по рельсам, следованию вагонов за поездом и пр. бился достаточно долго. Переходил от одной реализации к другой.
Остановился на таком варианте (в 3d-пространстве). Ж\д-полотно - это набор геометрических точек, т.е. цепочек объектов. Отдельные цепочки связаны между собой т.н. узлами или "стрелками".
Локомотив располагается в n-ую точку цепи и начинает движение к следующей точке. Приращение может быть как положительным, так и отрицательным. Движется он к следующей n+1 или n-1 точке в цепи. Но, как верно отметил Pax, у поезда 2 пары тележек, т.е. два центра вращения. Соответственно, мы движем набор из двух тележек с фиксированным расстоянием и определяем координаты x,y,z средней точки между ними (на примере blitz3d).

mid_x#=EntityX(e1)+(EntityX(e2)-EntityX(e1))/2
mid_z#=EntityZ(e1)+(EntityZ(e2)-EntityZ(e1))/2
mid_y#=EntityY(e1)+(EntityY(e2)-EntityY(e1))/2

В точку с такими координатами помещаем модель нашего поезда. Ландшафт может иметь подъёмы, спуски, поэтому помещать модель в эту точку при движении будет правдоподобнее. Далее определяем разницу углов между следующей рельсой и поездом.

dy#=DeltaYaw(r\ent,tr\ent)
dp#=DeltaPitch (r\ent,tr\ent )

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

Это вкратце.


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

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