Jump to content
RR_Troy

GlovePIE - кто знает, как оно работает?

Recommended Posts

Столкнулся с необходимостью настройки обзора и управления в игре под свои потребности.

Было необходимо заменить управление от одной из осей TarckIR на управление от клавиш, с сохранением функционала остальных осей TrackIR.

Задача оказалась нетривиальной 😃  По совету -DED-Zlodey воспользовался GlovePIE. Однако возникли трудности.

Итак.

При создании и запуске простейшего скрипта вида

Скрытый текст

if trackir.Z > 5 cm
keyboard.Insert = true
Else
keyboard.Insert = false
endif

if trackir.z < -10 cm
keyboard.Home = true
else
keyboard.Home = false
endif

 

действительно происходит перехват оси и генерируются клавиатурные нажатия при работе оси. 

 

Но!

Остальные оси игра при этом также перестаёт видеть. Прочитал документацию, погуглил - нашёл много интересного про GlovePIE, но ничего конкретного по моей проблеме. Танцевал с "малым бубном", думая, что можно подпихнуть игре все значения реального трекира через GlovePIE, создавал более сложные скрипты - не помогло. "Большой бубен" - для меня неподъёмен 😃

 

Хотелось бы точно знать - возможно ли заставить игру совмещать обзор с клавиш и с TrackIR.  То есть - я хочу получить поворот головы по вертикали и горизонтали от трекира и перемещение головы пилота вдоль продольной оси самолёта - от клавиатуры. Пока что получается, что TrackIR "всегда главный", даже если в его софте отключена определённая ось - что меня не радует.  

 

Share this post


Link to post
Share on other sites

Могу ошибаться, но судя по задаче скрипт должен выглядеть примерно так:

if keyboard.Insert = true
trackir.Z ++
Else
keyboard.Insert = false
endif

Тебе ведь по нажатию кнопки нужно изменить значение оси трэкира?

Цель приближение по кнопке сделать что ли? Если так, есть более простой способ где-то тут.

Share this post


Link to post
Share on other sites
12 минут назад, -DED-Zlodey сказал:

Тебе ведь по нажатию кнопки нужно изменить значение оси трэкира?

Цель приближение по кнопке сделать что ли?

 

 

24 минуты назад, RR_Troy сказал:

То есть - я хочу получить поворот головы по вертикали и горизонтали от трекира и перемещение головы пилота вдоль продольной оси самолёта - от клавиатуры.

 

Я понимаю, что это специфично - но лично для меня это будет очень удобно. Перечитываю старые темы про GlovePIE пока. Но там в  основном про зум и мышеджой.

Share this post


Link to post
Share on other sites
Posted (edited)

Можно попробовать подключить трэкир со всеми включенными осями (включая z) чтобы игра поняла, что управление от трэкира. После этого запустить гловпай и выключить ось z в трэкире. Попробуй, возможно получится обмануть.

Edited by -DED-Zlodey

Share this post


Link to post
Share on other sites
Posted (edited)

Делал через джойтокей на джой одну клавишу, перемещение головы вперед-назад, должны зажиматься 2 клавиши сразу на нумпаде 5 + хом, второе нажатие 5+ инсерт.

Есть мапперы для Клавы, одно но только есть, взгляд остаётся там куда переместил, до тех пор пока не нажал любой вид по умолчанию, тогда в исходный вид по умолчанию возвращается. Ось z должна быть отключена ещё.

Или хом+5 и инсерт+5, попробовать надо, забыл...щас не у пк.

Edited by =19fab=Korch*58

Share this post


Link to post
Share on other sites
33 минуты назад, -DED-Zlodey сказал:

Попробуй, возможно получится обмануть.

Получилось, но пошли глюки управления обзором. Похоже, не выйдет. Надо, чтобы игра это поддерживала нормально. А костыли  - зло. Если бы можно было в самой игре повесить действие обзора на конкретную ось.А так, получается, положение считывается по данным трекира - а он, похоже, при выключенной оси просто выдаёт null. Типа, ось есть, просто голова не двигается. Вместо none. А ось всегда главнее в игре. То есть это косяк реализации самого трекира. И оси трекира в самой игре никак не регулируются. Короче, спасибо за внимание, пойду думать.

31 минуту назад, =19fab=Korch*58 сказал:

<skip> через джойтокей на джой одну клавишу, перемещение головы вперед-назад, должны зажиматься 2 клавиши сразу на нумпаде 5 + хом, второе нажатие 5+ инсерт.

<skip>

 

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

Share this post


Link to post
Share on other sites

На клаве сначала попробуй с отключённой осью, я потому что опентрек делал, если проканает, то джойтокей поставишь. Если не разберёшься в нем, спросишь, напишу как клавиши назначить, русский ток ставь.

Share this post


Link to post
Share on other sites
Posted (edited)
3 часа назад, =19fab=Korch*58 сказал:

На клаве сначала попробуй с отключённой осью, я потому что опентрек делал, если проканает, то джойтокей поставишь. Если не разберёшься в нем, спросишь, напишу как клавиши назначить, русский ток ставь.

Не работает от клавиатуры, если просто отключить в trackIR ось Z. Потому и стали мучать GlovePIE.  С Joytokey не стал даже пробовать - это простая биндилка.  Как не задавай - не хочет ил-2 (ОТ КЛАВИШ клавиатуры) двигать голову по кабине взад-вперёд, пока работает traсkIR.  В Opentrack, подозреваю,  каждая ось на уровне софта управляется отдельно.

 

4 часа назад, -DED-Zlodey сказал:

Могу ошибаться, но судя по задаче скрипт должен выглядеть примерно так:


if keyboard.Insert = true
trackir.Z ++
Else
keyboard.Insert = false
endif

Тебе ведь по нажатию кнопки нужно изменить значение оси трэкира?

Цель приближение по кнопке сделать что ли? Если так, есть более простой способ где-то тут.

 

попробовал так

Скрытый текст

if keyboard.Home = true
trackir.z ++
else
keyboard.Home = false
endif

if keyboard.Insert = true
trackir.z --
else
keyboard.Insert = false
endif

И даже так

Скрытый текст

if keyboard.Home = true
trackir.z ++
endif

 

if keyboard.Insert = true
trackir.z --
endif

 

в том числе, с попыткой "обмана" - ничего не получается.  Либо я криво скрипты пишу (или ещё чего не учитываю?), либо действительно "трекир самый главный"

Edited by RR_Troy

Share this post


Link to post
Share on other sites
Posted (edited)
5 часов назад, RR_Troy сказал:

попробовал так

Не, ты наверное не понял. "плюс, плюс" - это имеется ввиду инкремент (увеличение значения), а не буквальное написание скрипта. Я прошу прощения, если ввел в заблуждение.

 

Я просто не знаю какое там максимальное значение в оси Z:

if (keyboard.Insert = true){
trackir.Z = 100 // тут указываем максимальное значение оси, я пишу от балды потом, у что не знаю точного значения
}
if(keyboard.Insert = false){
trackir.Z = 50 // тут указываем центр оси, я пишу от балды потом, у что не знаю точного значения
}

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

Edited by -DED-Zlodey

Share this post


Link to post
Share on other sites

Легче мне кажется, найти решение как ось отключить в трекир.

Share this post


Link to post
Share on other sites

Если ее отключить, она и в игре не подхватится, соответственно работать не будет.

 

Проще, чтобы иметь возможность управлять этой осью с помощью другого приложения, нужно в софте трэкира установить на ось Z мертвую зону процентов 50 или больше. Это для того, чтобы с помощью головы нельзя было двигать эту ось. После этого пробовать перехват оси и назначения по нажатию клавиши экстремальных значений лежащих за пределами мертвой зоны (можно попробовать и внутри мертвой зоны, поскольку она просто игнорирует перемещение головы в этом диапазоне и все).

Share this post


Link to post
Share on other sites
Posted (edited)
8 часов назад, -DED-Zlodey сказал:

плюс, плюс" - это имеется ввиду инкремент (увеличение значения), а не буквальное написание скрипта.

Но GlovePIE такое понимает. То есть скрипт запускается и ошибки не выдаёт. Как я понял - увеличение значения от текущего на момент срабатывания клавиатурного нажатия.  Сейчас буду пробовать разные варианты.

 

1 час назад, =19fab=Korch*58 сказал:

Легче мне кажется, найти решение как ось отключить в трекир.

 

44 минуты назад, -DED-Zlodey сказал:

Если ее отключить, она

и в игре не подхватится, соответственно работать не будет.

Идеально было бы ось Z  отвязать от trackIR и повесить на любую другую ось какого-либо устройства. Но в TrackIR-софте нет таких возможностей.  Можно ли через GlovePIE  подменить ось TrackIR осью другого устройства?  У меня в GlovePIE  почему-то джойстики подключённые не видны.

 

8 часов назад, -DED-Zlodey сказал:

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

 

Виды одномоментны. То есть - надо удерживать кнопку - в противном случае при работе с trakIR идёт возврат в предъидущее положение. Или я ошибаюсь?

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

 

44 минуты назад, -DED-Zlodey сказал:

Проще, чтобы иметь возможность управлять этой осью с помощью другого приложения, нужно в софте трэкира установить на ось Z мертвую зону процентов 50 или больше. Это для того, чтобы с помощью головы нельзя было двигать эту ось. После этого пробовать перехват оси и назначения по нажатию клавиши экстремальных значений лежащих за пределами мертвой зоны (можно попробовать и внутри мертвой зоны, поскольку она просто игнорирует перемещение головы в этом диапазоне и все)

 

Попробую как вариант.

Edited by RR_Troy

Share this post


Link to post
Share on other sites
4 минуты назад, RR_Troy сказал:

Идеально было бы ось Z  отвязать от trackIR и повесить на любую другую ось какого-либо устройства.

Отвязать не получится, а вот сделать мертвую зону (только в сфоте самого трэкира, а не в игре), чтобы ось не реагировала на движение головой и приравнивать значения оси Z трэкира к любой другой оси, любого другого устройства. Как пример из скрипта, я его использовал с виртуальным джойстиком и мышкой получая отличный мышеджой:

PPJoy2.analog0 = Var.Mouse1_JX // Ось Х
PPJoy2.analog1 = Var.Mouse1_JY // Ось У

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

Соответственно можно такое проделывать не только с осями, но и с клавишами устройств.

 

Share this post


Link to post
Share on other sites
Posted (edited)
49 минут назад, -DED-Zlodey сказал:

Отвязать не получится, а вот сделать мертвую зону (только в сфоте самого трэкира, а не в игре), чтобы ось не реагировала на движение головой и приравнивать значения оси Z трэкира к любой другой оси, любого другого устройства.

Проще тогда отключить в софте, чем делать МЗ, так как "отключение" в софте не приводит на самом дел к реальному отключению оси. Просто значение выдаёт постоянно нулевое. При подмене оси уже без разницы, что там реальный софт от trakIR выдаёт.  Идею я понял, но GlovePIE  "не видит" трёх моих джойстиков подключённых. В списке вывода только

GlovePIE-1.jpg.3d00e7188e6f56041d0ce780abf91899.jpg

 

Или я опять чего-то не понимаю.

 

И да - идея с МЗ и экстремальными значениям не работает. 

Edited by RR_Troy

Share this post


Link to post
Share on other sites
26 минут назад, RR_Troy сказал:

Или я опять чего-то не понимаю.

Видимо так и есть))

Не ищи устройства в GUI

Пиши сразу скрипт:

if (key.Insert == true)  {
 Joystick1.analog0++
 }

 

Под каким номером у тебя устройства я не знаю, сам подбирай 

Joystick1, 
Joystick2

Share this post


Link to post
Share on other sites
Posted (edited)
2 часа назад, -DED-Zlodey сказал:

Если ее отключить, она и в игре не подхватится, соответственно работать не будет.

 

Проще, чтобы иметь возможность управлять этой осью с помощью другого приложения, нужно в софте трэкира установить на ось Z мертвую зону процентов 50 или больше. Это для того, чтобы с помощью головы нельзя было двигать эту ось. После этого пробовать перехват оси и назначения по нажатию клавиши экстремальных значений лежащих за пределами мертвой зоны (можно попробовать и внутри мертвой зоны, поскольку она просто игнорирует перемещение головы в этом диапазоне и все).

В опентрек то у меня работает, ось z отключаю и все клава отрабатывать начинает, если ось не отключается, то на клаве не работает.

И двигается какая скорость стоит на обзоре в игре как ось.

Edited by =19fab=Korch*58

Share this post


Link to post
Share on other sites
33 минуты назад, =19fab=Korch*58 сказал:

В опентрек то

Так то опентрек. Кривой в этом плане софт трекира. Точнее, разрботчики просто не подумали о такой возможности, когда реализовывали трекир.

 

39 минут назад, -DED-Zlodey сказал:

Не ищи устройства в GUI

Пиши сразу скрипт:

О майнг гад... Спасибо, пойду колхозить дальше =)

Share this post


Link to post
Share on other sites
Posted (edited)
1 час назад, -DED-Zlodey сказал:

analog

В общем, не признаёт GlovePIE  такого имени (переменной) . Её в списке нет и скрипт с ней отказывается работать, выдаёт ошибку. По крайней мере, в сочетании с Joystick1 (2,3 и тд)

Откуда вообще пример?  Может, у меня "гранаты не той системы". Версия GlovePIE - 0.43 -позднее не нашёл.

 

Edited by RR_Troy

Share this post


Link to post
Share on other sites
1 минуту назад, RR_Troy сказал:

общем, не признаёт GlovePIE  такого имени (переменной) . Её в списке нет и скрипт с ней отказывается работать, выдаёт ошибку.

Откуда вообще пример?  Может, у меня "гранаты не той системы". Версия GlovePIE - 0.43 -позднее не нашёл.

Пример я уже говорил откуда и даже ссылку на видео дал, там в описании даже сам скрипт можно скачать. Это раз.

Второе analog0, analog1 ... это как раз оси. Ты может номер не указываешь?

Share this post


Link to post
Share on other sites
14 минут назад, -DED-Zlodey сказал:

<skip> ссылку на видео дал, там в описании даже сам скрипт можно скачать. Это раз.

Второе analog0, analog1 ... это как раз оси. Ты может номер не указываешь?

Прошу прощения, видео не сразу увидел. Но и там видно, что в выпадающем меню для Joystick  отсутствует вариaнт analog. Пробовал разные варианты - не работает.

 

Для PPjoy

PPJoy2.analog0

работает.

 

Для joystick там есть варианты осей, как и для трекира.  Буду думать.

Share this post


Link to post
Share on other sites
1 минуту назад, RR_Troy сказал:

Для joystick там есть варианты осей, как и для трекира.  Буду думать.

Если есть, пробуй их. В винде в устройствах открой окно и будет видно наглядно двигается ось или нет.

Share this post


Link to post
Share on other sites

Нашёл в старой теме. Как я и подозревал. Никак при работающем TrackIR это не обойти - в силу кривости софта самого trakIR. Жаль. Если только на опентрак переходить.

 

14.09.2014 в 00:21, =SF=Thresher сказал:

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

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

 

Благодарю за внимание, пойду мучаться с настройкой трекира.

Share this post


Link to post
Share on other sites

Я изначально и говорил тоже самое. Нужно попробовать включить ось, открыть игру чтобы игра подхватила трэкир и все оси, после этого выключить ось. Попробовать управление через гловпай.

Share this post


Link to post
Share on other sites
Posted (edited)
2 часа назад, RR_Troy сказал:

Нашёл в старой теме. Как я и подозревал. Никак при работающем TrackIR это не обойти - в силу кривости софта самого trakIR. Жаль. Если только на опентрак переходить.

Благодарю за внимание, пойду мучаться с настройкой трекира.

Через Glovepie можно прокинуть все оси трекира, когда-то игрался . Правда за давностью лет уже не помню нюансов.

 

Edited by NobbyNobbs

Share this post


Link to post
Share on other sites
35 минут назад, NobbyNobbs сказал:

Через Glovepie можно прокинуть все оси трекира

Вопрос не в том - можно заменить TrackIR или нет. Вопрос в том, что игра не хочет брать данные из двух источников сразу. А как подставить ось джойстика в этом GlovePIE - я не представляю. То есть, это должно быть что-то вида

FakeTrackIR.z = joystick.z

 Но проблема в том, что в GlovePIE для joystick разных осей - десяток вариантов. Там даже slider есть 😃 И устройства никак не определяются. При наличии в системе девяти реальных осей тыкаться вслепую неделю не хочется.  🙄  🙂  И даже если я подберу нужную ось - всё равно каждый раз нужно будет возиться с подменой и так далее. Сдаётся мне теперь - овчинка выделки не стоит🙂 Задал через F10 другой вид по умолчанию (ближе к прицелу) и шевелю башкой, если надо отодвинуться от прицела. Тоже неплохо вышло. 😊 Разберусь с пользовательскими видами - вообще красота будет. 😃

 

Уж простите за беспокойство, повозиться был интересно, попутно много нового узнал 😃

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
20.07.2019 в 19:26, -DED-Zlodey сказал:

 


if keyboard.Insert = true
trackir.Z ++
Else
keyboard.Insert = false
endif

 

ШОК )

Share this post


Link to post
Share on other sites

Тоже начал думать над подменой данных  Trackir -> софт -> БзС и вот по каким причинам. 

1. Ось Z трекира (которая "двигает" пилота внутри кабины) при обзоре в принципе не нужна, нужны всего два-три её положения, переключаемые циклически по одной кнопке.

2. При повороте по оси Yaw (горизонталь) хочется к осям смещений X и Y к трекирным значениям плюсовать нарастающую/убывающую дельту, например после прохода 90 градусов. Таким образом автоматически при повороте головы и по мере приближении взгляда к бронеспинке автоматически будем иметь нарастающее смещение вверх по Х и влево/вправо по Y, что полностью заменит необходимость в кнопках смещения. 

3. Для любой из осей возможность реализации фиксированных её значений (а ля мгновенный триммер) задаваемых по кнопкам.

4. Фильтр динамической МЗ.

 

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

 

Получается, что нужен софт, который полностью перехватывает оси трекира (и дальше не пускает его) и создает виртуальный трекир со своими фишками. Или нужно написать грамотное ТЗ программерам Трекира и Опентрека.

 

ЗЫ: реализацию без назначений кнопок в игре для оси FOV в БзС мне уже удалось сделать в применении TrimmerSET+ в софте MCG-Pro. То есть я в игре на приблизить/удалить назначил ось министика MCG-Pro и воспользовался мгновенным триммированием (значения на кнопки джойстика задаются в самом профайле GF ) на четыре (можно три, можно пять, да хоть сколько угодно) её положения (можно обойтись и двумя исключая крайние на которые можно назначить кнопки в самой игре). В самой же игре, как мы знаем, ПО КНОПКАМ можно получить только одно промежутчное значение FOV = восстановить нормальный обзор.   

 

Edited by 72AG_Olega

Share this post


Link to post
Share on other sites
21.07.2019 в 14:08, RR_Troy сказал:

но GlovePIE  "не видит" трёх моих джойстиков подключённых. В списке вывода только

На сколько я разобрался, GlovePIE не работает на уровне аппаратных драйверов, а работает только с HID устройствами:

PPjoy - эмулированный аппаратный драйвер не устанавливается для него, только виртуальный HID

vJoy - устанавливается и аппаратный и HID (на основе аппаратного)

GlovePIE в скриптах видит все джойстики установленные в системе, но именно поэтому GlovePIE скриптом не может изменять значения vJoy, а только PPjoy. FreePIE же ситуация обратная - он работает с HID ч/з эмулированный драйвер, поэтому он не может менять значения в PPjoy (у которого нету аппаратного драйвера).

 

Для управления осями трекира в скриптах GlovePIE нужна след схема (на примере одной оси):

Trackir.Yaw (передается в игру) = RealTrackir1.Yaw (принимается с трекира) + функция (числовое значение)

                                                                                                                                               * функция

А вот функция уже может быть любой (линейной, квадратичной, логарифмической и т.п.) и именно её аргумент управляется кнопками с клавы или джоя.

Поле применения здесь безгранично:

мы можем заморозить выходную ось просто вычитанием значения оси с противоположным знаком, получив ноль или статич смещение на выходе,

мы можем поменять любые оси местами, например при приближении/удалении к экрану монитора (ось Z на Trackir5) на выходе (и в игре) будет работать не ось Z, а ось Y

Я сейчас бьюсь над след схемой:

Трекир5-->GlovePIE(работает) --> передача данных через порт во FreePIE (пока не сделал, есть трудности, т.к. я не программист, осваиваю) -->вывод на vJoy (работает) -->Опентрек (вход с vJoy) -->БзС (работает)

 

Для IL-2 ЗС схема короче: Трекир5-->GlovePIE(работает) -->IL-2 ЗС (работает), т.е. промежуточные костыли не нужны, всё красиво (думаю, что и в тундре тоже будет работать)

 

Даже создал отдельную тему на нашем форуме. Как будут результаты выложу туда.

 

P.S. Понятно, что реальными джойстиками ни GlovePIE ни FreePIE управлять не могут, т.к. в реальных джойстиках стоит контроллер, который всё время опрашивает положение осей.

 

Edited by 72AG_Olega

Share this post


Link to post
Share on other sites

del

 

 

 

 

 

Edited by 72AG_Olega

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...