Які існують методи представлення залізничних колій?


21

Я поглянув на це деякий час назад для невеликого проекту, але не зайшов занадто далеко. Я хотів би створити невелику програму, яка дозволяє користувачеві намалювати залізничну колію, а потім дозволить "поїзду" слідувати зазначеній колії на двовимірній площині. Я хотів би, щоб трек був досить вільною формою і в результаті вийшла приємна плавна лінія. Я розігрувався з кубічними сплайнами і мав гідні результати, але мав багато проблем з тим, як поїзд слідкувати за сплайном. У мене також було багато проблем зі створенням кількох колій та перемиканням поїзда з однієї колії на іншу.

Хтось має поради, статті чи вихідний код, які можуть допомогти мені щось зрозуміти? Спасибі!


3
Це допоможе, якби ви описали, з якими проблемами ви стикаєтесь.
Рейчел Блюм

1
Я хотів би побачити демонстрацію вашої гри.
ashes999

Відповіді:


10

Малюючи доріжки або дороги, я завжди хочу починати зі сплайнів. Однак востаннє, коли я боровся зі сплайнами (як згадує Рейчел Блюм , плавний рух по сплайні хиткий і через параметризацію, і за відстань), хтось підказав мені, що багато реальних доріг використовують кругові дуги замість шліц. Постійна кривизна дозволяє легко обчислювати відстані і рухатися з постійною швидкістю вздовж них. Плюс вони добре виглядають.

Я почав грати з доріг, які чергувалися між круговими дугами та прямими. Це схоже на підхід Вілла , але кругові дуги мають змінний радіус. Я був цілком задоволений таким підходом, але не зробив нічого з цим. Спробуйте цю демонстраційну версію (Flash): елементи керування ліворуч призначені для сплайнів, а праві праворуч - кругла дуга (використовуйте повзунок для регулювання довжини, а ручку перетягування - для управління кутом). Зробіть дуже тугу криву, перетягнувши кінець дороги, щоб побачити, наскільки приємніше виглядає кругла дуга.

Крім того, якщо ви хочете грати з сітками (запропонованими Iain ), спробуйте малювати від краю до краю замість квадрата до квадрата. Ось демонстрація (аплет Java).



7

Використання правильних гермітових сплайнів може призвести до тісних кутів і виглядати досить не поїздом:

за допомогою гермітових сплайнів

У мене були набагато приємніші результати лікування тракту, як прямі лінії, що з'єднують кола в місцях стику:

введіть тут опис зображення

Хитрість полягає в обчисленні внутрішніх і зовнішніх дотичних суміжних суглобових кіл та відпрацюванні обмотки кожного суглоба, щоб ви перейшли на його праву сторону.

І, використовуючи логіку прокладання доріжок, уникайте самоперехрестя шляхів або перетворюйте їх на стики :)

Ось відео з таким підходом: http://www.youtube.com/watch?v=PAVksn4btKU


6

Ви можете спробувати дозволити користувачеві автор авторських композицій за допомогою спіралей Cornu . Ви знайдете в Інтернеті наступну літературу про неї, оскільки сплайни - це фактично спосіб представлення кривих у програмному забезпеченні. Тим не менш, вони наскільки актуальні залізничні колії пробиті. Раф Лев'єн зробив чимало роботи, популяризуючи їх .


2

Ви можете спробувати підхід на основі сітки, де кожен квадрат може посилатися на один або кілька інших квадратів. Потім у вас можуть бути шматочки, які охоплюють кілька квадратів, щоб створити більш плавні криві. В основному модульний, як набір поїздів.


1
Я спробував щось схоже на підхід на основі сітки. Я в основному створив фрагменти доріжок, щоб ви могли клацнути їх разом, щоб дати трохи більше свободи, ніж прості сітки. Дуже схожа концепція, я думаю. Це спрацювало нормально, але малювання доріжок, вибираючи відповідний шматок щоразу, коли висмоктався.
hokiecsgrad

2

Я спробував різні методи впровадження залізничних колій, і я виявив, що секції кіл і прямі дають найкращий результат і найпростішу математику для керування поїздом.

На жаль, це також зробило прокладку доріжок досить складною і не дуже інтуїтивно зрозумілою, оскільки невеликі рухи контрольних точок направлять доріжку в зовсім іншому напрямку.

Математика для вирішення питання прокладання доріжки стає досить складною, як і додавання більше контрольних точок.

У мене є коротка демонстрація на http://www.dailymotion.com/video/xgl2kp_openrailz-tech-demo-3_videogames .


-1

Можливо, це буде корисно:
Напрямки поведінки для автономних персонажів: http://www.red3d.com/cwr/steer/


чи поїзди не перебувають у полоні?
Буде чи

@Will: є підрозділ (якого я не читав) про шлях, що слідує за red3d.com/cwr/steer/PathFollow.html
o0 '.

так, але поїзд на колії може змінити лише швидкість. Її шлях продиктований доріжкою?
Буде
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.