PDA

Просмотр полной версии : VJoyCtrl: Управление виртуальным джойстиком



vosxod
17.03.2004, 01:59
VJoyCtrl 0.0.0.2

VJoyCtrl – программка для управления виртуальным джоем. В двух словах: она, будучи активизированной, читает комманды с одного или нескольких (железных) джоев и посылает их на виртуальный джой. Т.е. для системы все выглядит как будто бы вы виртуальной рукой крутите виртуальный джой ;)
Зачем это нада? Вообще оригинально создателем, UIV, это задумывалось для того чтоб приучить приложения, которые понимают только один джой, работать с несколькими. Например старые игры, в которых в отличие от ИЛ2 нельзя использовать больше одного джоя. Ещё одна область применения (более важная для меня и для пользователей ил2) – возможность управлять разными функциями используя одну и ту же ось джоя. Т.е. я лично хотел управлять газом и винтом с помощью одной и той же крутилки на основании моего MS Sidewinder FF2.

vosxod
17.03.2004, 02:01
Мануал к VJoyCtrl 0.0.0.2 (MS Word 2000):

Hruks
17.03.2004, 04:43
Идея с подсветкой значений мне очень понравилась.
А вот "схватывание" контроля думаю стоит сделать немного другим (хотя бы опционально). Поясню:
1. Пока кнопка переключения нажата идёт подсветка как уже реализовано.
2. Если положение оси сравнялось (с допуском) то ось начинает управлять. Сейчас это тоже реализовано.
3. Отпускание кнопки переключения приводит к безусловному включению контроля осью. Это следует реализовать.
Коментарии к 3 пункту: Если ось уже "схватила" контроль, то отпускание ни к чему не приведёт, так как ось уже управляет.

Для чего это нужно:
для немедленного и быстрого сброса/повышения газа, шага, триммеров и так далее. Не нужно будет осью ловить предыдущее положение, можно будет нажать кнопку, перевести ось быстро в желаемое положение и отпустить кнопку. Не нужно будет задерживаться на промежуточных положениях.

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

Hruks
17.03.2004, 04:51
В качестве дальнейшего развития идеи предлогаю написать контроллер виртуального джоя управляемого с клавиатуры.
Не секрет, что в текущей реализации Ил-2 очень тяжело летать с клавиатуры.
И не так уж и сложно реализовать различные режимы управления осями при помощи кнопок.
Это и быстрый/медленный инкремент, и фиксированные значения и ускорения в зависимости от времени удержания, и разные режимы - возврат в нейтраль после отпускания и отсутсвия такого возврата.
Всё это дополняется возможностью модификации одних и тех же клавиш для управления (разные функции при разных комбинациях кнопок) и возможностью назначить хоть всю клаву для разных фнкций.
В общем идей много, времени на реализацию мало.

Вопрос только в одном: есть ли надобность в таком джое?

Ну и всё это можно применить в качестве дополнения к управлению джоем при поможи другого джоя.

Многим известна программа Joy2Key, не пора ли создать Key2Joy? Ведь возможность для её появления теперь есть.

vosxod
17.03.2004, 05:00
Originally posted by Hruks
Идея с подсветкой значений мне очень понравилась.
А вот "схватывание" контроля думаю стоит сделать немного другим (хотя бы опционально). ... для немедленного и быстрого сброса/повышения газа, шага, триммеров и так далее. Не нужно будет осью ловить предыдущее положение...
Нууу ваще то для немедленной реакции достаточно просто крутанить ручку туда-назад и выстовить необходимое значение. Ось схватится стопудово. Есть еще один момент: в твоей схеме нада ужерживть кнопку и одновременно искать осью старое значение, что может быть неудобно потому что как правило все делается одной (левой) рукой и кнопка может быть далеко от ручки оси...
Но реализовать то что ты предлагаеш не трудно. Если еще кто нить поросит - точно сделаю.
Ваще народ че то молчит. Я то минимум сделал но возможности тут огромные. Можно кнопки мапить, генераторы там всякие, макросы. Можно на лету конфигурации менять полностью. Короче если все это будет кому то нужно - то возможно :)

vosxod
17.03.2004, 05:07
Originally posted by Hruks
В качестве дальнейшего развития идеи предлогаю написать контроллер виртуального джоя управляемого с клавиатуры....
Вопрос только в одном: есть ли надобность в таком джое?
.... Многим известна программа Joy2Key, не пора ли создать Key2Joy? Ведь возможность для её появления теперь есть.
Вооо вопросик поставил не в бровь а в глаЗ! Т.е нахрена ето? Все мы тут серьезные вирпилы :) Джои имеем. С клавы летать ... ну изврат имхо ;) Все таки кнопка, бинарное устройство, оччень далеко по сути от оси - аналогового устройства (ну или устройства со множеством значений).

Hruks
17.03.2004, 05:58
Originally posted by vosxod
Вооо вопросик поставил не в бровь а в глаЗ! Т.е нахрена ето? Все мы тут серьезные вирпилы :) Джои имеем. С клавы летать ... ну изврат имхо ;) Все таки кнопка, бинарное устройство, оччень далеко по сути от оси - аналогового устройства (ну или устройства со множеством значений).
Многие не имеют джоя на работе (причины разные), зато имеют инет.
Пока пользуются спросом проги, эмулирующие джой мышой, то в этом надобность будет. Вопрос лишь в том, что таких мало или им это не так чтобы очень нужно.

С клавы играть не изврат ИМХО.
На счёт бинарного устройства можно долго спорить, но лучше спросить тех, кто пользуется NewView обзором с помощью хатки ;)

Вот в Ил-2 сравнить управление обзором стандартное и с помощью NewView. Есть разница?
Точно также "удобно" сейчас с клавы управлять.

Вот скажите мне к примеру зачем шагом винта управлять осью? Или Наддувом? Удобно? Думаю не настолько чтобы это во главе угла ставить. Просто то, как это реализовано с клавы не юзабельно. А изменения угла обзора? Да что там говорить, гениальная игра, просто отлично реализованная, но небольшие мелочи очень многое портят, заставляя приспосабливаться, так как нет альтернативы.

Впрочем останавливаться на достигнутом это черта нанешнего ремени по видимому. Трекир очень универсален?
Ладно, не хучу флеймить.

По теме: реализовать управление с клавы не просто легко, а очень легко. И пользоваться этим можно будет, и будет даже очень удобно, НО!
Мешает лишь то, что всего реализовать не удастся и нужно выявить что нужно в первую очередь, что действительно удобно использовать и что облегчит жизнь.

Трудно ли сделать на базе того, что есть управление джоем от мышки? Не трдно. Мышка аналоговая? В некоторой степени да. И делают другие.

Мышка, клава, джои на входе; алгоритмы внутри; джои, мышки, клавы, трекиры на выходе.

Универсальный трансмаппер. Мечта или реальность? :cool:

Swift_CCCP
17.03.2004, 10:56
Универсальный трансмапер конечно нужен спору нет.
И именнно для рализации всяких комбинаций.
У меня джой х45 и в сего хватает почти, но особого желания запоминать кучу комбинаций кнопок нет. а задать на клаву несколько кнопок и запомнить гораздо проще.
Есть несколько предложений.
1. В связи с тем что кол-во программ тюнинга разрастается нам на радость, то мы несколько в них погрязнем. много то же не всегда хорошо. Нельзя ли как то в дальнейшем обеденить или наоборот разделить по функциям будущие наработки.
я как вы знаете не програмист поэтому если сморожу что извините.
2. Можно ли сделать виртуальный джой ВСЕГДА первым в системе?
3. Можно ли будет считать куда то положение оси. Зачем?
к примеру если я двигаю РУД Х45го то я всегда знаю на каком уровне газ.
как быть когда управление кнопками?
МГ недают данные из игры, но данные о состоянии джойстиков мы то сможем получить?
Вот и можно будет сделать внешнюю панель с отображением
соотояния осей. и уже будет легче жить.
4. по поводу управления с клавиатуры. Это конечно не джой но как я подозреваю функции реализации плавного изменения
кнопками состояния шагом винта и к примеру элеронов будут схожими и сил и напрасной траты времени у вас не отнимут. Я за.
Давайте нам что нибуть глобальное!!!
Тем более как знать может на латании дыр и образуется новая програмисткая фирма

vosxod
17.03.2004, 19:54
To Hruks:
Уневерсальный трансмаппер это конечно хорошо... Но тут в принципе идет речь о маленькой программке для конкретных целей. Так что если что то улучшить в ней - то без проблем. А так о глобальном софте это нада в другом топике.

To Swift_CCCP:
1. по этому вопросу я беседовал с создателями NewView. Они сказали NewView это ТОЛЬКО для обзора и обьеденять софт ненада. Ну мне остается только сказать VJoyCtrl - это для контроля над вирт джоем.
2. если поставить сначала виртуяльный а потом железный, то вирт будет первым :) А так ваще я незнаю как ID джоев менять...
3. мы ваще то кнопками оси не двигаем (пока ;)). Но если когда либо начнем двигать то думаю будет можно. А панельотображения осей - это что? на экран ил2 ничего своего вывести нельзя ...
4. эт я так понимаю опять в ту степь - натему эмуляции джоя клавой. Ну ребята я сам в этом необходимости неиспытываю :) На работе я работаю. Дома играю джоем. Так чтааа... ну не незнаю, нету у меня пока предпосылок клавуджой писать.

To Birdy:
Имелось ввиду что можно на лету менять конфигурации маппера VJoyCtrl а не ил2зс. Т.е я незнаю как можно кривые изменять во время игры. Вот поменять раскладку осей и кнопок можно если в игре все настроено на вирт джой

To moderators:
спасибо за перемещение темы. Я то сам понимаю что оно в устройства управления подходит... просто хотелось чтоб общественность глянула...

vosxod
18.03.2004, 03:27
Originally posted by birdy
А разве нельзя сделать так,что-бы на X смещений по осям реального джойстика - приходилсь X * Y (X div Y) -
виртуального?
Можно. А нужно?

Maximus_G
18.03.2004, 06:28
Originally posted by vosxod
...просто хотелось чтоб общественность глянула...
Вот в связи с этим, и объединяясь с мнением Swift_CCCP "В связи с тем что кол-во программ тюнинга разрастается нам на радость, то мы несколько в них погрязнем. много то же не всегда хорошо. Нельзя ли как то в дальнейшем обеденить или наоборот разделить по функциям будущие наработки" - вопрос:

Есть ли у вас желание делать виртоджой, реализуя пожелания людей, так как это делают разработчики НьюВью? Тема виртоджоя давняя, я лично был рад, когда UIV реализовал механизм виртоджоя, и у меня есть ряд пожеланий о реализации некоторых функций...

Maxix
18.03.2004, 09:58
2 vosxod


Originally posted by vosxod
...
я незнаю как можно кривые изменять во время игры. Вот поменять раскладку осей и кнопок можно если в игре все настроено на вирт джой
...
[/B]

если нужно могу подсказать.
я такое сделал для контроллера...

делал линейной апроксимацией отрезков (их количество определяет точность) 16 мне показалось достаточно.

простейший способ
берется линейная характеристика и кривая в которую хочется перейти режутся на отрезки и для каждого расчитываются коэффициенты преобразования.
потом каждое измерение смотрится в какой диапазон попало и по табличке пересчитывается.

подменить табличку на лету сам понимаешь без проблем...

Hruks
19.03.2004, 02:16
Originally posted by Maxix
2 vosxod

если нужно могу подсказать.
я такое сделал для контроллера...

делал линейной апроксимацией отрезков (их количество определяет точность) 16 мне показалось достаточно.

простейший способ
берется линейная характеристика и кривая в которую хочется перейти режутся на отрезки и для каждого расчитываются коэффициенты преобразования.
потом каждое измерение смотрится в какой диапазон попало и по табличке пересчитывается.

подменить табличку на лету сам понимаешь без проблем...
Вот реализация кривой отклика из NewView:
function YfromX(X: Double): Double;
var
A,B:double;
I:Integer;
begin
// X = 0..1
// result = 0..1
I := Trunc(ABS(X* 10));
if I > 10 then I := 10;
A := CurveValues[I];
if I=10 then
B := A
else
B := CurveValues[I+1];
result:=A+((B-A)*Frac(ABS(X*10)));
end;

Координаты нужно домножить на вызов этой функции с параметром, равным доли оси от максимума:
X := X * YfromX( X / XMax );

В глобальном для функции массиве содержится кривая отклика в формате 0..1..много:
CurveValues :array [0..10] of Double; // Кривая сглаживания

vosxod
19.03.2004, 22:12
Originally posted by Maximus_G
Есть ли у вас желание делать виртоджой, реализуя пожелания людей, так как это делают разработчики НьюВью? Тема виртоджоя давняя, я лично был рад, когда UIV реализовал механизм виртоджоя, и у меня есть ряд пожеланий о реализации некоторых функций...
Все зависит от наличия свободного времени и простоты реализации... А какие пожелания? Давай(те) выкладывай, не стесняйся.
Пока я вижу основное пожелание народа - сделать реакцию джоя нелинейной а настраиваемой + переключение настроек на лету. Все в принципе ясно. Есть правда одно опасение. Все таки VJoyCtrl - отдельный процесс. А сама игра жрет много ресурсов. Поэтому управление основными осями самаля (не газом и не винтом) может быть с задержкой. Я когда пробовал на своих настройках - мне показалось есть легкая задержка. В НюВью с этим проще т.к. длл выполнается в процессе игры.

Ваще кто нить пробовал управление газом и винтом с VJoyCtrl? Или поставим вопрос шире - ваще кто нить пробовал VJoyCtrl 0.0.0.2? :confused: Какие ощущения? :cool:

Hruks
21.03.2004, 05:32
Ну в крайнем случае можно и из NewView что-нить вызывать, например твою программу ;)

GO!
22.03.2004, 05:02
Originally posted by Hruks
Координаты нужно домножить на вызов этой функции с параметром, равным доли оси от максимума:
X := X * YfromX( X / XMax );

В этом случае получается привязка к осям X и Y, обзор как бы прилипает к осям. Я бы сделал так:

var
R,Rmax : Double;
//..............
Rmax:=sqrt(XMax*XMax+YMax*YMax);
//..............
R:=sqrt(X*X+Y*Y);
R:=YfromX(R/Rmax);
X:=X*R;
Y:=Y*R;
Теперь кривая отклика зависит только от расстояния от текущих координат до центра экрана. :)

Maximus_G
22.03.2004, 06:19
2 vosxod:

ОК, вот что мне нужно:

1. Тензометрическое управление осями. Меня не устраивают имеющиеся на рынке ХОТАСы по ряду параметров, поэтому я хочу иметь в левой руке обычный джой. При этом, чтобы пользоваться им как РУДом, нужно или вытащить пружину (чтобы он не стремился к среднему положению), или использовать тензометрический характер управления (реализованный, например, на F-16 и Су-37). Принцип такого управления заключается в том, что мы управляем не параметром "y", жёстко привязанным к положению ручки "x", а через функцию скорости.

Классическая схема:
y = f(x), где f реализует кривую отклика.

Необходимая схема:
v(y) = f(x), где f - кривая отклика, а v(y) - скорость изменения управляемого параметра y.

Это значит, на примере РУДа, что когда мы толкнём джой вперед из нейтрали, наддув начнет расти. И чем дальше вперед мы толкаем, тем быстрей он растет. Когда мы возвращаем ручку в нейтраль - наддув фиксируется.

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

Кстати, таким образом у вирпилов, владеющих одним джоем не-ХОТАС, появится возможность не тратиться на дорогой джой, выбрасывая свой рабочий, а докупить еще один под левую руку.

Maximus_G
22.03.2004, 07:16
2. Разделение любой оси на несколько осей. Это нужно для раздельного управления шагом и газом, а также для раздельного управления двигателями многомоторных машин.
Например,
2.1 мы могли бы посадить на ось A управление шагом, ось C - газом, и ось B - синхронное управление связкой шаг/газ.
2.2 Или A - левый двигатель, B - все двигатели, C - правый двигатель. В этом случае, мы могли бы посадить шаг и газ каждого двигателя на твист, реализовав его в соответствии с п.2.1.
Практически, получается дешевая и сердитая реализация мечты заядлого бомбера - многорычажного РУДа :)
Однако, поскольку в Иле не предусмотрены отдельные оси под каждый двигатель, при переходе на соседнюю ось и выходе из неё нужно генерить нажатия кнопок - на активацию управления выбранным двигателем, и затем - деактивацию.

В общем и целом, с отдельным джоем под левую руку мы получаем 4 дополнительных "чистых" оси, или 10 дополнительных осей в комбинациях, без нажатий на какие-либо кнопки (п.2.2).

---
(обновил картинку)

MaxPayneRUS
23.03.2004, 11:54
Originally posted by Maximus_G
2 vosxod:

ОК, вот что мне нужно:

1. Тензометрическое управление осями. Меня не устраивают имеющиеся на рынке ХОТАСы по ряду параметров, поэтому я хочу иметь в левой руке обычный джой. При этом, чтобы пользоваться им как РУДом, нужно или вытащить пружину (чтобы он не стремился к среднему положению), или использовать тензометрический характер управления (реализованный, например, на F-16 и Су-37). Принцип такого управления заключается в том, что мы управляем не параметром "y", жёстко привязанным к положению ручки "x", а через функцию скорости.

Классическая схема:
y = f(x), где f реализует кривую отклика.

Необходимая схема:
v(y) = f(x), где f - кривая отклика, а v(y) - скорость изменения управляемого параметра y.

Это значит, на примере РУДа, что когда мы толкнём джой вперед из нейтрали, наддув начнет расти. И чем дальше вперед мы толкаем, тем быстрей он растет. Когда мы возвращаем ручку в нейтраль - наддув фиксируется.

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

Кстати, таким образом у вирпилов, владеющих одним джоем не-ХОТАС, появится возможность не тратиться на дорогой джой, выбрасывая свой рабочий, а докупить еще один под левую руку. вопрос а зачем? неужели это будет юзабельно на винтовых?
вопрос два, а программа типа joytokey это самое разве не делает?

Maximus_G
23.03.2004, 17:15
Originally posted by MaxPayneRUS
вопрос а зачем? неужели это будет юзабельно на винтовых?
А в чём именно ты сомневаешься? ;)


вопрос два, а программа типа joytokey это самое разве не делает? Понятия не имею, что за программа. Надо посмотреть.

Maximus_G
24.03.2004, 06:27
Посмотрел. Joy2Key маппит кнопки и сочетания, + фильтрует и рисует кривые отклика осей. Это не то.

vosxod
24.03.2004, 18:05
Originally posted by birdy
2 vosxod

Вплоть до добавления её в импорт
Il2- но ты только сделай пожалуиста..а...
Может и сделаю... :)
А что значит "Вплоть до добавления её в импорт Il2" ??? Что есть такое импорт ил2?

vosxod
24.03.2004, 18:27
Originally posted by Maximus_G
2 vosxod:
1. Тензометрическое управление осями....Принцип такого управления заключается в том, что мы управляем не параметром "y", жёстко привязанным к положению ручки "x", а через функцию скорости....
Ок правильно ли я понимаю что например управление положением автомобиля при помощи педали газа (и тормоза) и есть тензометрическое?


Originally posted by Maximus_G
2. Разделение любой оси на несколько осей. ...
Одно из двух - или я тупой, или твое изложение идеи ...кхммм... замысловато и неясно :cool:
Сначала расставим точки над терминами: сама палка джоя есть 2(две) оси X и Y.
Картинки красивые, но что на них такое twist?
ABC=DEF?
В 2.1 и 2.2 A B C – это виртуальные оси я так понимаю. Но ты так и необьяснил как они получаются методом разделения оси на несколько осей :confused:
Пожалуйста обьяснитесь ... :rolleyes:

vosxod
24.03.2004, 18:50
Общий вопрос к идеолагам по нелинейному маппингу осей и переключению параметров оного на лету:
А что у нас с центровкой при этом происходит? Т.е крэйзи пример: Оси XY реального джоя управляют XY виртуального тензометрически (о! новое слово выучил! ;)). Задвинули мы эти самые виптуальные XY до максимумов, а рельно палка у нас посередине. А теперь переключаем на линейное 1 к 1 управление этих теми. И что?
Ясно что таже проблема, но не так ярко выраженная встает, понимаеш :), при переключение кривых отклика, скажем от более агресивных к более плавным...

Hruks
25.03.2004, 02:20
Originally posted by GO!
В этом случае получается привязка к осям X и Y, обзор как бы прилипает к осям. Я бы сделал так:

var
R,Rmax : Double;
//..............
Rmax:=sqrt(XMax*XMax+YMax*YMax);
//..............
R:=sqrt(X*X+Y*Y);
R:=YfromX(R/Rmax);
X:=X*R;
Y:=Y*R;
Теперь кривая отклика зависит только от расстояния от текущих координат до центра экрана. :)
Есть один большой минус при таком подходе:
Оси перестают быть независимыми. То есть отклонили мы руль высоты немного, и элероны максимально вывернули. Так вот, руль высоты сразу на элероны среагирует, для него уже будет действовать почти максимальное значение кривой отклика, а нужно было лишь чуть чуть.
С одной стороны это не такое уж и большое отклонение будет, с другой чувствительность очень сильно может возрасти.
Так что для осей, которые по сути дела разными вещами управляют как раз "прилипание" и является идеальным вариантом ;)

Maximus_G
25.03.2004, 03:38
Originally posted by vosxod
Ок правильно ли я понимаю что например управление положением автомобиля при помощи педали газа (и тормоза) и есть тензометрическое?
Точно.


Одно из двух - или я тупой, или твое изложение идеи ...кхммм... замысловато и неясно :cool:
Сначала расставим точки над терминами: сама палка джоя есть 2(две) оси X и Y.
Картинки красивые, но что на них такое twist?
ABC=DEF?
В 2.1 и 2.2 A B C – это виртуальные оси я так понимаю. Но ты так и необьяснил как они получаются методом разделения оси на несколько осей :confused:

ОК. Сразу заметка - о разделении пространства X-Y реального джоя на оси A,B,C виртуального я говорю только с позиции тензометрического управления ими, ибо с классическим управлением сразу появляется куча лишних на данный момент заморочек.

Пример с раздельным управлением шагом и газом одномоторного ЛА:

1. Ось Х реального джоя поделена на 3 зоны - левая, центральная, правая. Переход позиции джоя по оси Х в одну из этих зон включает управление виртуальными осями - А, В, А&B.
А - шаг;
B - газ;
A&B - шаг и газ одновременно.

2. Берем джойстик в левую руку (в правой у нас уже РУС). Допустим, мы стоим на рулёжке с заведенным двигателем, текущее значение газа=0, шага=100. Ручка в центральном положении, значит в данный момент активно управление осями A&В. Управляем ими при помощи реальной оси Y. Толкаем ручку вперед, увеличивая газ до 10%. Шаг не увеличивается, потому что уже максимальный.

3. Наклоняем ручку влево. Как только переходим границу между центральной и левой зонами, происходит следующее:
3.1 Значение курсора на Оси В (газ) фиксируется.
3.2 Управляемой виртуальной осью становится ось А.
Тянем ручку вниз, уменьшая шаг до 50%, возвращаем обратно в нейтраль (по оси Y).

4. Наклоняем джой вправо.
4.1 Как только мы вышли из левой зоны, положение оси А (шаг) зафиксировалось.
4.2 Проходим центральную зону. При выходе из неё в правую - очередная фиксация, A&B.

5. В данный момент шаг у нас 50, газ - 10. Легонько толкаем ручку вперед и обратно, увеличивая газ до 20.

6. Отпускаем тормоза, начинаем руление на взлётку. При этом, ручку джоя-РУДа можно вообще отпустить.

7. Стоим на взлётке, получаем разрешение РП. Из нейтрального положения РУДа даём ручку немного вперед, при этом у нас одновременно растут обороты и наддув, от начального положения 20-50 через 70-100 к 100-100.

Вот, в принципе, и всё. На твист РУДа при такой раскладке можно повесить закрылки.

Maximus_G
25.03.2004, 04:05
Twist на картинке - просто пример такого же разделения оси, но в этом случае не X, а твиста джоя (стандартно обозначается, вроде, буквой U?).

Т.е. в предыдущем примере мы могли бы для раздельного управления шагом и газом использовать разделенную ось U, а на Х посадить руль направления. Тогда мы будем управлять двигателем и винтом, поворачивая ручку вокруг вертикальной оси и двигая её вперед-назад. Однако тут сразу нужно заметить, что по оси Х нам нужно иметь мёртвую зону, чтобы не получить паразитное влияние на РН при управлении двигателем и винтом. Т.е. нужна реализация кривой отклика с возможностью выставить нулевую реакцию в зоне, близкой к нейтрали.
---
А если юзать разделение осей X и U одновременно, то мы получаем:

Х влево, U влево:       ШВ левого двигателя;
Х влево, U вправо:      наддув левого двигателя;
Х влево, U нейтраль:    ШВ и наддув левого двигателя одновременно;

Х вправо, U влево:      ШВ правого двигателя;
Х вправо, U вправо:     наддув правого двигателя;
Х вправо, U нейтраль:   ШВ и наддув правого двигателя одновременно;

Х нейтраль, U влево:    ШВ обоих двигателей;
Х нейтраль, U вправо:   наддув обоих двигателей;
Х нейтраль, U нейтраль: ШВ и наддув обоих двигателей одновременно.

Maximus_G
25.03.2004, 04:51
Originally posted by vosxod
Общий вопрос к идеолагам по нелинейному маппингу осей и переключению параметров оного на лету:
А что у нас с центровкой при этом происходит? Т.е крэйзи пример: Оси XY реального джоя управляют XY виртуального тензометрически (о! новое слово выучил! ;)).
Ну, человеку, проживающему в англоязычной стране, наверняка знакомо слово tension :)


Задвинули мы эти самые виптуальные XY до максимумов, а рельно палка у нас посередине. А теперь переключаем на линейное 1 к 1 управление этих теми. И что?
Я к идеологам переключения на лету не отношусь, зато - радею за тензу :) Потому - мои соображения. Если мы переключаемся от одной оси к другой, варианты такие:

1. Если управление передаётся тензе (неважно, от линейной или другой тензы), то проблемы вообще нет.
1.1 На предыдущую ось просто перестают подаваться управляющие воздействия, и если она двигалась - она замирает. Фиксация.
1.2 Ось, получившая управление, начинает двигаться со скоростью, соразмерной положению палки.

2. Если переходим к линейной, то:
2.1 Фиксация предыдущей.
2.2 Заморочка. На мой взгляд, в любом случае нужно автоматически привести положение виртуальной оси к соответствующему - реальной, иначе мы не получим полноценного управления. Т.е. виртуальная ось будет сама догонять реальную. Здесь, имхо, в идеальном случае стоит реализовать в настройках выбор одного из двух - или она догоняет с ограничением по времени, или - по скорости. Первое важно, когда у нас мало времени (в бою), и тогда мы указываем, что она при любом раскладе должна догнать реальную максимум за Х.Х сек. Второе нужно для того, чтобы например не спалить движки у Ме-262, YP-80 и т.д.


Ясно что таже проблема, но не так ярко выраженная встает, понимаеш :), при переключение кривых отклика, скажем от более агресивных к более плавным...
Как я понимаю, у одной виртуальной оси д.б. только одна кривая отклика. В любом случае, думаю, подойдет то же самое решение.

Maximus_G
19.04.2004, 15:46
Мечты сбываются, и прогресс не стоит на месте! :)

Сегодня совершил свой первый пробег по рулёжке летательный аппарат с опытной, тензометрической системой управления винто-моторной группой и механизацией крыла.

Публичный отчёт прилагается - TRK версии 2.0 :)

-comm-
21.04.2004, 13:00
2 Maximus_G

Где взял тензометрическую систему управления?
Поделись плиз :)

Maximus_G
21.04.2004, 16:41
Исходник тут:

http://sukhoi.ru/forum/showthread.php?postid=353249#post353249

Ехешник прикреплен здесь. Задумано и работает только с отдельным джоем под левую руку... Его оси X, Y и твист превращаются в оси виртуального. Как устанавливать программу - см. мануал Восхода в первых сообщениях этой темы.

-comm-
22.04.2004, 11:59
Спасибо.

=SF=Sergyo
22.04.2004, 14:47
Люди, объясните тупому...
У меня есть старый джой AVB TopShot, могу ли я использовать его, как РУД, ибо дополнительные оси и кнопки лишними не бывают... :)
Расскажите на примере... :cool: Что-то не догоню никак...:(

Правда джой под правую руку, придётся привыкать...

Maximus_G
22.04.2004, 15:53
Общая схема работы такая: в системе устанавливается дополнительный джой, не привязанный ни к какому реальному устройству. Затем с помощью программы создаётся связка "реальный джой - программа - виртуальный джой". Т.е. двигая реальным, вы управляете не только им, но и виртуальным. Затем в настройках игры (раздел ХОТАС) нужно указать, что управление закрылками, шагом, газом и т.д. происходит осями виртуального джоя.

В общем, всё делаете так, как описано в мануале.
1. Устанавливаем PPJoy.
2. Настраиваем программу. Достаточно привязать хотя бы одну ось реального джоя к виртуальному.
2.1 выбираем "ведущий" реальный джой ("1" на рисунке);
2.2 и его ось (2);
2.3 ставим галочку "вкл" (3).

Чтобы выбрать именно тот джой и ту ось, что нам нужны, выбираем в ниспадающей менюшке (6) наш реальный джой, двигаем нужную ось, и выбираем в пунктах 2.1 и 2.2 правильный ID джоя и букву оси. В моем примере X0 управляет X2, Y0 - Y2, R0 - R2.

2.4 Нажимаем кнопочку "Сохранить" (4).

2.5 В левой верхней менюшке (6) выбираем ID виртуального джоя (его номер совпадает с номером в соседней серенькой менюшке) и нажимаем кнопочку "Вкл" (5).
Двигаем оси и видим, как они бегают.

3. Далее нам нужно откалибровать виртуальный джой. Делается это обычным виндозным способом, неиспользуемые оси виртоджоя можно не калибровать. И только центральное положение калибруемых осей стоит контролировать по бегункам в программе.

Как прописать ручками витроджой в файле настроек Ила - есть в руководстве на первой странице.

Управление кривой отклика в программе не работает, кривая забита жёстко...

Как раскидать управление - дело вкуса и удобства. Я сейчас повесил наддув и шаг на Y и X соответственно. На твисте - закрылки.

---

А старый джой, заточенный под правую руку, можно просто "переточить" под левую, срезав мешающие ладони выступы ;)

=SF=Sergyo
22.04.2004, 17:34
Спасибо. :) Буду ковыряться... :)

Maximus_G
28.04.2004, 17:02
Немного поправил кривую отклика для более плавной работы, убрал лишнюю индикацию. Обновлённая версия в аттаче выше на странице.

USSR_Rik
29.04.2004, 15:32
С осями все понятно. А вот можно ли будет потом (ну, в следующих версиях) забиндить кнопки реального джоя на виртуальный? Поясню свою проблему.
Использую сразу несколько устройств от Logitech - джой Force Strike 3D, руль (т.е. педали) и переделанный в РУД старый Wingman Attack 2. И получается, что если я в стандартном Лоджиковом маппере назначу какой-либо кнопке от Attack (который есть РУД) клавиши (Ctrl, Alt, Shift), то эти же клавиши назначаются соответствующим кнопкам остальных моих Лоджиков! "А смысл?" (© анекдот). Победить это не представляю как. Видимо, это фирменная фича производителя, чтоб ему... и мне, дураку, заодно... ЛокОн, кстати, может видеть все кнопки раздельно, но команды Ctrl, Alt, Shift, назначенные на эти кнопки, не отрабатывает.
Вот мне бы и хотелось "слить" все кнопки всех джоев на один виртуальный, а с ним потом разобраться в настройках игр.

Maximus_G
29.04.2004, 17:31
Собсно, PPJoy предназначен в т.ч. и для этого. Т.е. для простого слияния нескольких джоев в один нужна не VJoyCtrl, а другая. Не помню как называется, но она тоже является надстройкой над PPJoy. Можно просто потеребить Гугль в поисках страниц с PPJoy ;)

Maximus_G
06.12.2004, 06:09
Исправил свою "тензометрическую" версию VJoyCtrl - убрал одну багу, из-за которой не фиксировалось одно из крайних значений осей (ползунок как бы убегал за границы оси).

Кому-нить надо?

FilippOk
06.12.2004, 08:10
Конечно, надо, чего ты спрашиваешь?!

Maximus_G
07.12.2004, 15:03
Дык ведь никто не сообщал мне об этом баге, возможно никто прогой и не пользуется... :)
Anyway, вот она.

Orion33
26.01.2005, 05:28
Читаю я подобные топики и ржу: это ж вот какое у нас советское воспитание "Сделай сам"!!! Нет, чтобы денег накопить да в магазин пойти. Правильно, мы ж от этого удовольствие получаем! Очищенные семечки есть - оно нам надо? :D:D:D

Теперь вопрос по сути. Таки реализовали уже подгрузку кривых налету? Очень надо, я не понимаю, почему не понятно. Например, преследуется Мессер, удерает, скотина... Подгружаю плавную кривую, прицеливаюсь и попадаю. Тут же он в вираж полез - отпускаю кнопу, подгружается стандартная кривая.

В Трустмапере сделано так, что кривые перемножаются с Иловскими. То есть, если я открою маппер, пошевелю кривые и закрою, я получу новые кривые в иле. Именно это и хочется общественности :D Также хочется юзать кнопу, забиндиную как Шифт. Одна трабла: она наружу никакой код не излучает, только внутрь девайса. Как ее опрашивать - не представляю.

Maximus_G
26.01.2005, 06:42
Подгрузки кривых нет.

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

Orion33
26.01.2005, 06:49
Попробовал поюзать эту примочку с АБ2. Нифига не пашет. В. джой как бы есть, но на реакцию осей АБ никак не отзывается. Че делать - не знаю, там все по-ангельски :rolleyes:

Максимус, у тебя на картинке "Драйвер PC-джойстика Microsoft", а у меня PPJoy Virtual joystik 1" Это правильно?

Maximus_G
26.01.2005, 07:21
Эээ, мне кажется, что это неправильно... но нужно точно выяснить.
Оси АБ к виртуальному привязаны?
Кнопочка ON/OFF в каком положении? Она может не срабатывать после "включения" джоя - может быть нужным оставить ее во включенном, сохранить настройки и перезапустить прогу.

Orion33
26.01.2005, 15:46
Короче, затык в том, что я не понял, как виртуальный джой настроить :)

Получается после калибровки примерно следующее: значение вирт. оси плавно падает от 50% (!!!) до нуля, а потом в конце хода скачком возрастает до 100... По-моему, это нихт тру... В чем косяк? Как надо РР настраивать?

Maximus_G
26.01.2005, 16:28
Используешь последнюю версию программы (http://sukhoi.ru/forum/showpost.php?p=486572&postcount=45)?

Orion33
26.01.2005, 18:06
Я использую последнюю версию Восхода, потому что мне нужна линейная Ось. А в твоей версии конфиг оси не запоминается. Не в этом суть. По-моему, это глюк либо ТМ, либо я В джой не до конца настроил. Ты бы не мог по пунктикам расписать, че там делать надо?

Orion33
27.01.2005, 01:35
Еще косяк. Для свиченья осей у вас сделаны конкретно кнопы. А я их все на клавиши забиндил. То есть этой прогой они не воспринимаются. Можно сделать так, чтобы можно было назначать любые кнопы, хоть на мыше, как это в НьюВью сделали?

Maximus_G
27.01.2005, 03:16
Я использую последнюю версию Восхода, потому что мне нужна линейная Ось. А в твоей версии конфиг оси не запоминается. Не в этом суть. По-моему, это глюк либо ТМ, либо я В джой не до конца настроил. Ты бы не мог по пунктикам расписать, че там делать надо?
Понятно. Ну, тогда это не ко мне...
А установка PPJoy расписана в вордовском файле, прикрепленном во втором посте этой темы - там описаны все нужные шаги. Собсно, их два - установка PPJ из дистрибутива, и затем установка виртуального джоя.


Еще косяк. Для свиченья осей у вас сделаны конкретно кнопы. А я их все на клавиши забиндил. То есть этой прогой они не воспринимаются. Можно сделать так, чтобы можно было назначать любые кнопы, хоть на мыше, как это в НьюВью сделали?
Сделать можно всё :)
А в качестве временной меры можно использовать "генератор" из НьюВью - чтобы по нажатию любой кнопки на клаве, мыше, джоях и т.д. он генерил нажатие нужной клавиши на клавиатуре. Я использую эту фичу для того, чтобы биндить на кнопки джоя команды ТимСпика, который тоже не умеет работать ни с чем, кроме клавы.

Orion33
27.01.2005, 05:59
Дык в том-то и косяк, твоя прога напротив понимает тока кнопы джоя. Если бы наоборот - все было замечательно...

Maximus_G
27.01.2005, 06:26
Это очень странно... я вообще не трогал в коде то, что касается забиндивания кнопок.

Orion33
27.01.2005, 19:38
Это очень странно... я вообще не трогал в коде то, что касается забиндивания кнопок.
Гы ))) Ну прога восхода тоже понимает только кнопы джоя. И это не есть гут. Не могли бы вы с ним на пару код подписать? Я Делфи не знаю...

Ukatam
27.01.2005, 22:10
Короче, затык в том, что я не понял, как виртуальный джой настроить :)

Получается после калибровки примерно следующее: значение вирт. оси плавно падает от 50% (!!!) до нуля, а потом в конце хода скачком возрастает до 100... По-моему, это нихт тру... В чем косяк? Как надо РР настраивать?


такая же фигня как это лечить ?

Orion33
28.01.2005, 03:48
такая же фигня как это лечить ?
Я вылечил тем, что сократил эффективную длину оси в маппере (вид/расширенные настройки осей)