Перейти к публикации

Рекомендованные сообщения

Опубликовано: (изменено)

Парни, хочу вынести на рассмотрение вопрос, который может перевернуть сам подход к обзору через Trackir5 в играх и сделать его настолько самодостаточным, что в игре никаких настроек делать не надо будет. Суть вопроса: 


1. Перехватить данные от Trackir5 (Natural Point) программой FreePIE или GlovePIE
2. Скорректировать координаты 6 осей так, как этого захочет пользователь:
данные трекира --> скрипт с сохранением данных в профайл и возможностью его загрузки на лету--> игра
Вполне понятно, что с клавиатуры или кнопок джойстика эти изменения можно будет отключать (т.е. вход и выход будут совпадать) или настраивать их величины добиваясь нужного обзора в режиме онлайн, сохранив затем в файл конфигурации. 
3. Отправить скорректированные данные в игру. 


Приведу лишь часть примеров, поражающих своим функционалом (поле для применения функций и диапазонов значений практически безгранично):
- при повороте головы пилотом влево/вправо от 90 градусов до 180, к величинам осей смещений X, Y плавно добавляется смещение до максимально возможного, при обратном движении оно также плавно убывает
- смещение центра любой оси на заданное значение по кнопке джойстика или с клавиатуры (игра может быть даже не запущена и всё равно работает), и таких значений смещений может быть несколько (подняться над прицелом (можно и пошагово), иметь несколько фиксированных положений по оси Z, которая в БзС отвечает на перемещение пилота внутри кабины (ось Z трекира не путать с FOV, это разные оси))
- включение/отключение отдельных осей в выходных данных, передаваемых в игру
- настройка обзора ОБЩАЯ ДЛЯ ВСЕХ или КОНКРЕТНАЯ ДЛЯ КАЖДОГО САМОЛЁТА (с нужными смещениями под конкретный самолёт) 


Начал разбираться как это сделать, но так как я не программист (только зачатки), чувствую, что не осилю один эту задачу. Что я выяснил на текущий момент:


GlovePIE 0.45free - отлично перехватывает данные с Trackir5, подменяя в реестре dll трекира на свою, при этом БзС Trackir5 уже не обнаруживает, но встроенный FakeTrackir, которому присваиваются входные значения, в БзС данные не передает (БзС его не видит), хотя в Ил-2 ЗС эта цепочка работает полностью. Установив для проверки  PPjoy мне удалось управлять всеми его 6-ю осями с помощью Trackir5 поворотами головы. 
FreePIE - здесь обратная ситуация, установив vJoy и Opentrack я вижу, что в БзС всё прекрасно работает, но у меня в качестве источника Trackir5 выступать пока не может, т.к. я не знаю как прописать код, хотя есть ощущение что это реально. К тому же FreePIE может работать на выход с обеими протоколами, и Trackir и freeTrack, которые видят почти все игры.
На сколько я успел понять GlovePIE уже давно не развивается и в нём используется язык более высокого уровня, в отличии от FreePIE (где используется Pithon и возможен даже доступ на уровне физ устройств).


Получается, что на текущий момент, для реализации желанного функционала возможны два параллельных пути:
1. FreePIE. Написать код в скрипте, получающий данные с Trackir5 (это самое главное), дальше два варианта:
- написать код в скрипте для выходных данных самостоятельно
- использовать готовую связку, перенаправив данные на vJoy и выведя это в игру ч/з Opentrack.
2. GlovePIE. Написать код для выходных данных в игру. Здесь без вариантов. (или попытаться сделать нужную NPClient.dll которую будет видеть игра)


 Я не совсем понимаю (т.к. не программист), как данные по протоколам Trackir и Freetrack попадают в игру. Подозреваю, что активация протокола происходит посредством поиска игрой нужной библиотеки (DLL) трекира и если эта игра там прописана то протокол активируется. А сами данные передаются по каким-либо портам от устройства в игру. Если последнее верно, то получается, что нужно в скрипте просто отправить нужные данные на какой-то порт, с которого игра воспринимает трекир. (Пару таких примеров кодов по отправке пакетов в порт для FreePIE я уже встретил в инете)


Бьюсь уже с этим неделю, даже летать временно практически перестал, надеясь что получится и полечу уже с новым функционалом, но знаний по программированию катастрофически не хватает. На подходе пробы по подмене по кругу файла библиотеки NPClient.dll и прочие изыскания, видимо придется учиться программированию на Pithon.
Представьте только себе папочку на компьютере в которой будут лежать скрипты для идеального обзора в каждой конкретной игре и для каждой конкретной техники, загружаемые по одной кнопке. И при этом в самих играх ничего настраивать не нужно! (крашнулась игра - не вопрос переставили её и сразу в бой, обзор у вас и так остался)
Прошу поделиться своими идеями на сей счёт. Очень надеюсь, что вместе мы расколем этот крепкий орешек.


P.S. Исходные кривые как и раньше будут настраиваться в самом Treckir5, но при должном подходе, как вы понимаете, можно сделать так, что от них уже мало что зависеть будет. :)
 

Изменено пользователем 72AG_Olega
  • Нравится 1
Опубликовано: (изменено)

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

- пробовал на UDP порт опентрека подсунуть данные из GlovePIE, работала только одна координата при отправленных шести, а сегодня обнаружил что там формат данных разный (нужна конвертация)

- пробовал с PPjoy (оси которого управлялись трекиром5) из GlovePIE передать данные во FreePIE и вывести их на vJoy c штатной передачей в Опентрек, пока не удачно (уперся в UDP сервер, а точнее в обработку пришедших на него данных)

- пробовал задействовать модуль pygame в Pihton, не обнаружил нужных операторов присвоения (можно только считать данные с джоя)

- пробовал еще много чего

 

Вчера, наконец, похоже обнаружил свет в конце тоннеля (причём без костылей вовсе): к программе FaceTrackNoIR v200 (http://www.facetracknoir.nl/)  есть плагин (http://facetracknoir.sourceforge.net/Trackers/OSC.htm), принимающий на UDP порт данные по тому же протоколу OSC (http://opensoundcontrol.org/spec-1_0) по которому GlovePIE их отправляет. С некоторого времени FaceTrackNoIR v200 стал платным, плата чисто символическая (порядка 3-х евро), но я вчера не смог оплатить, так как в платежной программе PayPal я еще не был зарегистрирован (зарегистрировался, но там проверка данных, которая от 5-ти дней и выше). В связи с этим прошу помощи, чтобы попробовать эту связку, если у кого есть основной пакет (нужный плагин с сайта уже скачал), связаться со мной в личке. Если всё сработает, прогу я потом всё равно куплю. (или готов перекинуть тому кто поможет приобрести ч/з себя)

 

P.S. Добрая половина того, что я хочу реализовать, уже реализована в Опентреке, но полного контроля над осями, всё же там нет.

 

Изменено пользователем 72AG_Olega
  • Нравится 1
Опубликовано:

А не смотрели прогу Newviev? Она не работает на 64 битной виндовс, но раньше её многие активно использовали, в том числе и я.

Может она будет полезна.

Опубликовано: (изменено)

С неё первой и начинал свои изыскания. Собственно динамическую МЗ в ней и увидел (то, чего не хватает в самом Трекире5). Трекир5 она перехватывает, но дальше с БзС она не работает. Да и задача у меня другая стоит, - полное управления осями в промежуточном звене. У меня 64бит виндовс и NewView в ней работает.

 

P.S. Жалко, что при установке Трекира5 на паузу, в БзС возникает задержка почти в 0,5с в ипользовании ранее отключенных из-за трекира клавиш (Ins,Home,Del,End,PgUp,PgDn), которые начинают действовать когда он стоит на паузе.

Изменено пользователем 72AG_Olega
Опубликовано:

Цепочку TrackiIR5 --> GlovePIE --> FaceTrackNoIR подцепил. Работает замечательно. Осталось подшаманить чтобы БзС увидел FaceTrackNoIR (вчера не успел просто, с наскока в лоб не получилось), методы шаманства изучил. Но судя по этому видео "https://youtu.be/6DwRU3IV8JM" , снятому 4 мес назад, должно заработать.

  • 3 месяца спустя...
Опубликовано:

Прошу модераторов закрыть эту тему. Так как создал новую с более правильным названием, в которой и будет всё дальнейшее обсуждение 

 

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×
×
  • Создать...