Danila-M
10.11.2001, 23:57
Коллеги !
Вот вы тут в разных топиках обсуждаете разные второстепенные вопросы
о том как прикреплять мышь к ноге для вращения головой... Я понимаю,
конечно, что все это -- высказывания в юмористическом ключе, однако
я хотел бы, отдав должное юмору, переключиться на обсуждение более
насущных и полезных вопросов. И мне кажется, тут мы могли бы оказать
разработчикам существенную помощь (имея в виду ЛокОн или последующие
проекты). Поясню.
Известно, что есть такие вопросы, на развитие которых успехи современной
технологии оказывают гораздо меньшее влияние, чем на другие. Скажем,
при разработке экипировки пехотинца за последние 200 лет достигнут
весьма существенный прогресс в области стрелкового вооружения -- тут
технология имеет решающее значение. В то же время в вопросе об
обмундировании, о том, какой ему сделать вещмешок, как его крепить
на теле, сколько и каких карманов иметь, какую обувь и пр. -- прогресс
значительно скромнее. По сути, сейчас солдат таскает на себе свое барахло
так же, как и n тысяч лет назад (n=1,2,3...). Очень трудно выдумать тут
что-то действительно новое, а выдумав -- почти невозможно угодить всем
сразу -- кому-нибудь обязательно будет неудобно. Тем не менее, проресс
должен идти и в этой области -- области эргономики.
Подобно этоиу обстоит дело и в области авиасимуляторов. Тут тоже есть
вопросы эргономики, прогресс в которых гораздо скромнее, чем в области
графики, ФМ, AI и прочего. И тут как раз в игру можем вступить мы --
пользователи, которым, в сущности, всем этим и пользоваться. Предлагаю
здесь (или где-нибудь в другом месте) обсудить эти вопросы с целью:
1) определиться, все же, чего мы хотим,
2) быть может, сгенерить какие-нибудь нетривиальные идеи в области
эргономики, интерфейса, организации управления и пр.
3) выяснить, что будет удобно БОЛЬШИНСТВУ (возможно, проголосовать
по каким-л. вопросам).
В кач-ве примера такого нетривиального развития укажу на самую концепцию
padlock'а. Сейчас-то этим никого уже не удивишь, а я, когда увидел его
впервые в 1.5 -- был просто потрясен. По-моему, чтобы выдумать эдакое
вовсе не обязательно быть даже программистом. Тем не менее штука весьма
не тривиальная и очень полезная.
Другой пример, который мне пришел в голову и в отношении которого
я хочу с вами посоветоваться. Он касается изображения на ИЛСе.
Сейчас во Фленкере элементы
кабины и закабинное пространство ведут себя как картина, нанесенная
на холст, которую после поворота головы просто рассматривают
под другим углом (и с какими-то дополнительными искажениями). В то же
время в реале-то тот же ИЛС расположен ко мне гораздо ближе земли,
видимой через него, и его параллакс (даже при повороте головы --
глаза-то смещаются!) будет много больше параллакса забортного
пространства. Эксперимент, подтверждающий это, крайне прост:
посмотрите на край своего монитора, захватывая взором и кусок стены
за ним и попробуйте повращать головой вправо-влево. Вы увидите, что
монитор заслоняет собой разные участки стены из-за разных параллаксов.
Во Флэнкере этот эффект отсутствует, а его бы хотелось. Т.е. при повороте
головы близкие элементы (переплет кабины, рамка ИЛСа и пр.) должны
слегка смещаться относ. закабинного пространства.
В связи с этим в реальном самолете изображение на ИЛСе сфокусировано
в бесконечности, поэтому при смещении головы вверх-вниз или вправо-влево оно
(изображение) относительно глаз остается неподвижным, а относительно
ИЛСа смещается -- ровно на столько же и в ту же сторону, что и голова.
Это сделано специально. В самом деле, летчик в кабине самолета хоть
и привязан ремнями, но все-таки немного шевелится, да и рост у человека
меняется (и зависит от человека). Поэтому если бы, скажем, метка прицела
была нанесена краской на лобовом стекле, то нетрудно вычислить
(из подобия треугольников), что при расстоянии от глаза до ИЛСа в 50см
и разглядывании через ИЛС участка земли, расположенного в 3000м, при
изменении положения глаза всего на 1см точка прицеливания смещается
на 3000/0.5=6000см=60м, что весьма существенно и не дает возможности
попасть, скажем, в небольшой дом или танк. Поэтому система отображения
информации на ИЛСе должна "отслеживать" движения глаза, что она
автоматически и делает за счет фокусировки изображения на бесконечности
(пучок лучей, попадающий в глаз, не расходящийся, а параллельный).
Приношу свои извинения тем, кто это прекрасно знает -- я излагаю это
для новичков и людей, в физике неискушенных.
Поэтому если голова при этих эволюциях будет смещаться в стороны --
надо не забыть реализовать такое поведение изображения на ИЛСе,
иначе будет неправильно. Вот еще одна фича, которую можно было бы
реализовать в ЛокОне.
В отношении движения головы вперед-назад (в результате, к примеру,
того же закидывания головы при посадке на авианосец) -- ситуация
более сложная. С одной стороны, при приближении головы к приборной
панели угловые размеры приборов (и самого ИЛСа в том числе) должны
увеличиться (поскольку они стали ближе к точке наблюдения) -- как
раз так, как происходит сейчас при изменении угла обзора; а с другой
-- изображение на ИЛСе (поскольку оно, опять-таки, сфокусировано в
бесконечности) должно остаться таким же по угловым размерам. Т.е.
только один этот элемент (изображение на ИЛСе) должен работать не так,
как при нажатии на Keypad * и Keypad /
Это весьма существенная поправка. Впрочем, это ведь и очевидно:
Keypad * и Keypad / регулируют не расстояние от головы до приборной
панели, а, скажем, фокусное расстояние глаз, а тут требуется
реализовать нечто другое -- я уже сказал что.
Т.е. предлагается то, что я называю концепцией "плавающего" ИЛСа
(ну, не самого индикатора, конечно, а
изображения на нем) -- чтобы при любом движении головы (поворот,
тряска из-за бафтинга, "закидоны" при посадке, действия ускорений
и т.п.) изображение на ИЛСе "плавало" относительно кабины (и самого
ИЛСа) и "стояло" относ.
закабинного пространства (в частности, земли). Если голова
повернулась очень сильно, "уехала" куда-то, то может оказаться (и
оказывается), что часть изображения, проецируемого на ИЛС, не
попадает в поле рамки и не видно -- но это и правильно, и в жизни так.
В общем, реализация такого поведения изображения на ИЛСе само
по себе представляло бы собой фичу, тем более полезную, что она
демонстрирует некую физику (фокусировка изображения на ИЛСе
на бесконечность). И само это изображение стало бы психологически
восприниматься иначе (ведь оно же "плавает" !) -- как и в жизни
происходит.
Другой вопрос, где возможны нетривиальные переделки -- это вопрос
реализации padlock'а. Его ведь тоже можно реализовывать по-разному.
Итак, мыслимые варианты:
1) Как в самом начале было в 2.0. Захваченная цель удерживается в центре
экрана, а кружок шлема наводится руками. Неудобно, потому что все равно
руками головой надо вертеть, а это имено то, от чего padlock должен
избавлять. Ушли от этого -- и слава Богу.
2) Как сейчас: Захваченная цель удерживается в центре экрана, шлем
наведен на цель изначально и тоже удерживается в центре экрана.
Недостатки -- камеру нужно постоянно вращать, при малейших маневрах
цели, при этом на больших углах визирования цели быстро теряется SA,
ибо голова все время куда-то вращается, и слабо понятно куда (отражения
на фонаре не спасают, мини-HUD тоже мало помогает). Зато
хорошо понятно, какая цель захвачена, и притом даже если ее и не
подсвечивать крестиком (который меня, кстати, раздражает).
3) Как я однажды предложил: измененный вариант 2) -- все то же самое,
но цель удерживается в том месте экрана, в котором она была в момент
нажатия на Del, а уж если пользователь захочет загнать цель в центр,
то пускай ручками сам загонит, т.е. пусть вращает камеру, но не
относительно фиксированного относительно кабины положения, а
относительно постоянно меняющейся линии визирования цели. Кружок от
Шлема опять постоянно "держит" цель.
4) Кардинальный вариант: "ослабленный" ("relaxed") пэдлок -- камера
неподвижна (относ. кабины) пока цель в поле зрения. Когда цель
подходит к краю экрана (с некоторым запасом порядка 50 точек), камера
начинает вращаться, удерживая цель у края до тех пор, пока компонента
скорости цели, ортогональная соответствующему краю экрана не
занулится, и цель не начнет двигаться в другую сторону. В общем,
надеюсь, понятно: вид меняется только тогда, когда это действительно
необходимо, когда цель сейчас уйдет за край, если она мотыляется где-
то у центра -- то вид просто неподвижен. По-моему, это отражает тот
факт, что летчик (особенно при перегрузках) не вращает постоянно
головой, совпровождая цель, а следит за ней периферийным зрением и
вращает головой только если уж действительно необходимо (мне кажется,
без крайней нужды летчик не станет головой вертеть). То есть здесь
машина минимальным образом модифицирует положение головы.
Достоинства: если я смотрел на приборную панель и видел инструменты,
какие мне надо, то при эволюциях цели вид не будет постоянно за не
прыгать, а пойдет за ней только если уж действительно припрет, и я до
последнего момента буду видеть приборы. Да и SA потерять труднее --
при неподвижном-то виде...
Кружок шлема... не знаю, наверное тогда логично его совместить с
центром экрана, но тогда опять придется клавишами вертеть, чтобы
наложить его на цель, что плохо... А, тогда вот так: сделать
двухступенчатый пэдлок: по первому нажатию на Del -- включается
вариант 4), при повторном -- уже более детальное отслеживание:
варианты 2) или 3), с кружком, наложенным на цель и удерживаемом на
ней. Да, вот так.
Может, я упустил еще какой-то, более удобный вариант. Пусть меня
поправят и/или дополнят.
И еще весьма существенный вопрос управления -- вращения головы.
То, как сейчас это сделано, меня не вполне устраивает. Конкретно,
что я имею в виду?
Основной принцип: в
управлении головой не должно быть гистерезиса, т.е. направление, в
которую будет вращаться голова при нажатии на ту или иную клавишу
должна зависеть только от текущего положения головы, а не от
предистории, т.е. того, как мы в это положение попали. И второй
основной принцип: вращений относительно линии визирования в чистом
виде (т.е. когда есть ТОЛЬКО вращение) быть не должно.
Сейчас при поднятии взгляда выше опр. угла вверх (т.е. при
превышении "широтой" опр. значения -- кажется 90 градусов, т.е. при
переходе через зенит) появляется инверсия в действии клавиш "4" и "6"
(право и лево). Я жму клавишу вправо и ожидаю, что голова будет
вращаться вправо, а она вращается влево ! Точнее, то, что я вижу
(небо при горизонтальном полете) вращается относ. опр. точки в какую-
то противоположную сторону. Как-то это неинтуитивно. Мой подход такой:
клавиши "4" и "6" должны соответствовать действию мышц шеи,
вращающих голову вокруг шеи так, что шейные позвонки являются осью
вращения. При этом при отклонении головы
сверх 90 градусов вверх (т.е. при запрокидывании головы) при таком
употреблении клавиши, скажем, "6" (т.е. при вращении головы вправо)
то, что я вижу сдвигается влево и вверх (т.е. наискосок). Так, по-моему,
и надо сделать.
Кратко, моя мысль состоит в том, чтобы вращение головой с помощью
клавиш 8,2,4,6 производить по алгоритму Эйлера (т.е. как вводятся
углы Эйлера в книжках): 8 и 2 меняют угол тета, а 4,6 -- пси (а не фи;
т.е. вращать не относ. неподвижной оси z, а относительно повернутой
оси z', которая представляет собой задранную шею пилота).
Я опять-таки не знаю, будет ли это удобно. Возможно, нет. Но подумать
на эту тему, мне кажется, полезно -- может, кто-нибудь придумает
какой-нибудь еще более удобный вариант?
Вот вы тут в разных топиках обсуждаете разные второстепенные вопросы
о том как прикреплять мышь к ноге для вращения головой... Я понимаю,
конечно, что все это -- высказывания в юмористическом ключе, однако
я хотел бы, отдав должное юмору, переключиться на обсуждение более
насущных и полезных вопросов. И мне кажется, тут мы могли бы оказать
разработчикам существенную помощь (имея в виду ЛокОн или последующие
проекты). Поясню.
Известно, что есть такие вопросы, на развитие которых успехи современной
технологии оказывают гораздо меньшее влияние, чем на другие. Скажем,
при разработке экипировки пехотинца за последние 200 лет достигнут
весьма существенный прогресс в области стрелкового вооружения -- тут
технология имеет решающее значение. В то же время в вопросе об
обмундировании, о том, какой ему сделать вещмешок, как его крепить
на теле, сколько и каких карманов иметь, какую обувь и пр. -- прогресс
значительно скромнее. По сути, сейчас солдат таскает на себе свое барахло
так же, как и n тысяч лет назад (n=1,2,3...). Очень трудно выдумать тут
что-то действительно новое, а выдумав -- почти невозможно угодить всем
сразу -- кому-нибудь обязательно будет неудобно. Тем не менее, проресс
должен идти и в этой области -- области эргономики.
Подобно этоиу обстоит дело и в области авиасимуляторов. Тут тоже есть
вопросы эргономики, прогресс в которых гораздо скромнее, чем в области
графики, ФМ, AI и прочего. И тут как раз в игру можем вступить мы --
пользователи, которым, в сущности, всем этим и пользоваться. Предлагаю
здесь (или где-нибудь в другом месте) обсудить эти вопросы с целью:
1) определиться, все же, чего мы хотим,
2) быть может, сгенерить какие-нибудь нетривиальные идеи в области
эргономики, интерфейса, организации управления и пр.
3) выяснить, что будет удобно БОЛЬШИНСТВУ (возможно, проголосовать
по каким-л. вопросам).
В кач-ве примера такого нетривиального развития укажу на самую концепцию
padlock'а. Сейчас-то этим никого уже не удивишь, а я, когда увидел его
впервые в 1.5 -- был просто потрясен. По-моему, чтобы выдумать эдакое
вовсе не обязательно быть даже программистом. Тем не менее штука весьма
не тривиальная и очень полезная.
Другой пример, который мне пришел в голову и в отношении которого
я хочу с вами посоветоваться. Он касается изображения на ИЛСе.
Сейчас во Фленкере элементы
кабины и закабинное пространство ведут себя как картина, нанесенная
на холст, которую после поворота головы просто рассматривают
под другим углом (и с какими-то дополнительными искажениями). В то же
время в реале-то тот же ИЛС расположен ко мне гораздо ближе земли,
видимой через него, и его параллакс (даже при повороте головы --
глаза-то смещаются!) будет много больше параллакса забортного
пространства. Эксперимент, подтверждающий это, крайне прост:
посмотрите на край своего монитора, захватывая взором и кусок стены
за ним и попробуйте повращать головой вправо-влево. Вы увидите, что
монитор заслоняет собой разные участки стены из-за разных параллаксов.
Во Флэнкере этот эффект отсутствует, а его бы хотелось. Т.е. при повороте
головы близкие элементы (переплет кабины, рамка ИЛСа и пр.) должны
слегка смещаться относ. закабинного пространства.
В связи с этим в реальном самолете изображение на ИЛСе сфокусировано
в бесконечности, поэтому при смещении головы вверх-вниз или вправо-влево оно
(изображение) относительно глаз остается неподвижным, а относительно
ИЛСа смещается -- ровно на столько же и в ту же сторону, что и голова.
Это сделано специально. В самом деле, летчик в кабине самолета хоть
и привязан ремнями, но все-таки немного шевелится, да и рост у человека
меняется (и зависит от человека). Поэтому если бы, скажем, метка прицела
была нанесена краской на лобовом стекле, то нетрудно вычислить
(из подобия треугольников), что при расстоянии от глаза до ИЛСа в 50см
и разглядывании через ИЛС участка земли, расположенного в 3000м, при
изменении положения глаза всего на 1см точка прицеливания смещается
на 3000/0.5=6000см=60м, что весьма существенно и не дает возможности
попасть, скажем, в небольшой дом или танк. Поэтому система отображения
информации на ИЛСе должна "отслеживать" движения глаза, что она
автоматически и делает за счет фокусировки изображения на бесконечности
(пучок лучей, попадающий в глаз, не расходящийся, а параллельный).
Приношу свои извинения тем, кто это прекрасно знает -- я излагаю это
для новичков и людей, в физике неискушенных.
Поэтому если голова при этих эволюциях будет смещаться в стороны --
надо не забыть реализовать такое поведение изображения на ИЛСе,
иначе будет неправильно. Вот еще одна фича, которую можно было бы
реализовать в ЛокОне.
В отношении движения головы вперед-назад (в результате, к примеру,
того же закидывания головы при посадке на авианосец) -- ситуация
более сложная. С одной стороны, при приближении головы к приборной
панели угловые размеры приборов (и самого ИЛСа в том числе) должны
увеличиться (поскольку они стали ближе к точке наблюдения) -- как
раз так, как происходит сейчас при изменении угла обзора; а с другой
-- изображение на ИЛСе (поскольку оно, опять-таки, сфокусировано в
бесконечности) должно остаться таким же по угловым размерам. Т.е.
только один этот элемент (изображение на ИЛСе) должен работать не так,
как при нажатии на Keypad * и Keypad /
Это весьма существенная поправка. Впрочем, это ведь и очевидно:
Keypad * и Keypad / регулируют не расстояние от головы до приборной
панели, а, скажем, фокусное расстояние глаз, а тут требуется
реализовать нечто другое -- я уже сказал что.
Т.е. предлагается то, что я называю концепцией "плавающего" ИЛСа
(ну, не самого индикатора, конечно, а
изображения на нем) -- чтобы при любом движении головы (поворот,
тряска из-за бафтинга, "закидоны" при посадке, действия ускорений
и т.п.) изображение на ИЛСе "плавало" относительно кабины (и самого
ИЛСа) и "стояло" относ.
закабинного пространства (в частности, земли). Если голова
повернулась очень сильно, "уехала" куда-то, то может оказаться (и
оказывается), что часть изображения, проецируемого на ИЛС, не
попадает в поле рамки и не видно -- но это и правильно, и в жизни так.
В общем, реализация такого поведения изображения на ИЛСе само
по себе представляло бы собой фичу, тем более полезную, что она
демонстрирует некую физику (фокусировка изображения на ИЛСе
на бесконечность). И само это изображение стало бы психологически
восприниматься иначе (ведь оно же "плавает" !) -- как и в жизни
происходит.
Другой вопрос, где возможны нетривиальные переделки -- это вопрос
реализации padlock'а. Его ведь тоже можно реализовывать по-разному.
Итак, мыслимые варианты:
1) Как в самом начале было в 2.0. Захваченная цель удерживается в центре
экрана, а кружок шлема наводится руками. Неудобно, потому что все равно
руками головой надо вертеть, а это имено то, от чего padlock должен
избавлять. Ушли от этого -- и слава Богу.
2) Как сейчас: Захваченная цель удерживается в центре экрана, шлем
наведен на цель изначально и тоже удерживается в центре экрана.
Недостатки -- камеру нужно постоянно вращать, при малейших маневрах
цели, при этом на больших углах визирования цели быстро теряется SA,
ибо голова все время куда-то вращается, и слабо понятно куда (отражения
на фонаре не спасают, мини-HUD тоже мало помогает). Зато
хорошо понятно, какая цель захвачена, и притом даже если ее и не
подсвечивать крестиком (который меня, кстати, раздражает).
3) Как я однажды предложил: измененный вариант 2) -- все то же самое,
но цель удерживается в том месте экрана, в котором она была в момент
нажатия на Del, а уж если пользователь захочет загнать цель в центр,
то пускай ручками сам загонит, т.е. пусть вращает камеру, но не
относительно фиксированного относительно кабины положения, а
относительно постоянно меняющейся линии визирования цели. Кружок от
Шлема опять постоянно "держит" цель.
4) Кардинальный вариант: "ослабленный" ("relaxed") пэдлок -- камера
неподвижна (относ. кабины) пока цель в поле зрения. Когда цель
подходит к краю экрана (с некоторым запасом порядка 50 точек), камера
начинает вращаться, удерживая цель у края до тех пор, пока компонента
скорости цели, ортогональная соответствующему краю экрана не
занулится, и цель не начнет двигаться в другую сторону. В общем,
надеюсь, понятно: вид меняется только тогда, когда это действительно
необходимо, когда цель сейчас уйдет за край, если она мотыляется где-
то у центра -- то вид просто неподвижен. По-моему, это отражает тот
факт, что летчик (особенно при перегрузках) не вращает постоянно
головой, совпровождая цель, а следит за ней периферийным зрением и
вращает головой только если уж действительно необходимо (мне кажется,
без крайней нужды летчик не станет головой вертеть). То есть здесь
машина минимальным образом модифицирует положение головы.
Достоинства: если я смотрел на приборную панель и видел инструменты,
какие мне надо, то при эволюциях цели вид не будет постоянно за не
прыгать, а пойдет за ней только если уж действительно припрет, и я до
последнего момента буду видеть приборы. Да и SA потерять труднее --
при неподвижном-то виде...
Кружок шлема... не знаю, наверное тогда логично его совместить с
центром экрана, но тогда опять придется клавишами вертеть, чтобы
наложить его на цель, что плохо... А, тогда вот так: сделать
двухступенчатый пэдлок: по первому нажатию на Del -- включается
вариант 4), при повторном -- уже более детальное отслеживание:
варианты 2) или 3), с кружком, наложенным на цель и удерживаемом на
ней. Да, вот так.
Может, я упустил еще какой-то, более удобный вариант. Пусть меня
поправят и/или дополнят.
И еще весьма существенный вопрос управления -- вращения головы.
То, как сейчас это сделано, меня не вполне устраивает. Конкретно,
что я имею в виду?
Основной принцип: в
управлении головой не должно быть гистерезиса, т.е. направление, в
которую будет вращаться голова при нажатии на ту или иную клавишу
должна зависеть только от текущего положения головы, а не от
предистории, т.е. того, как мы в это положение попали. И второй
основной принцип: вращений относительно линии визирования в чистом
виде (т.е. когда есть ТОЛЬКО вращение) быть не должно.
Сейчас при поднятии взгляда выше опр. угла вверх (т.е. при
превышении "широтой" опр. значения -- кажется 90 градусов, т.е. при
переходе через зенит) появляется инверсия в действии клавиш "4" и "6"
(право и лево). Я жму клавишу вправо и ожидаю, что голова будет
вращаться вправо, а она вращается влево ! Точнее, то, что я вижу
(небо при горизонтальном полете) вращается относ. опр. точки в какую-
то противоположную сторону. Как-то это неинтуитивно. Мой подход такой:
клавиши "4" и "6" должны соответствовать действию мышц шеи,
вращающих голову вокруг шеи так, что шейные позвонки являются осью
вращения. При этом при отклонении головы
сверх 90 градусов вверх (т.е. при запрокидывании головы) при таком
употреблении клавиши, скажем, "6" (т.е. при вращении головы вправо)
то, что я вижу сдвигается влево и вверх (т.е. наискосок). Так, по-моему,
и надо сделать.
Кратко, моя мысль состоит в том, чтобы вращение головой с помощью
клавиш 8,2,4,6 производить по алгоритму Эйлера (т.е. как вводятся
углы Эйлера в книжках): 8 и 2 меняют угол тета, а 4,6 -- пси (а не фи;
т.е. вращать не относ. неподвижной оси z, а относительно повернутой
оси z', которая представляет собой задранную шею пилота).
Я опять-таки не знаю, будет ли это удобно. Возможно, нет. Но подумать
на эту тему, мне кажется, полезно -- может, кто-нибудь придумает
какой-нибудь еще более удобный вариант?