Введение
Интерфейс в информатике, взаимодействии человека с компьютером и дизайне взаимодействия
В информатике, взаимодействии человека с компьютером и дизайне взаимодействия, прямая манипуляция – это подход к интерфейсам, который предполагает непрерывное отображение интересующих объектов вместе с быстрыми, обратимыми и инкрементными действиями и обратной связью. В отличие от других стилей взаимодействия, например, командного языка, цель прямой манипуляции – позволить пользователю манипулировать представленными объектами, используя действия, которые хотя бы приблизительно соответствуют манипулированию физическими объектами. Примером прямой манипуляции является изменение размера графической фигуры, такой как прямоугольник, путем перетаскивания ее углов или краев мышью. Использование метафор реального мира для объектов и действий может облегчить пользователю освоение и использование интерфейса (некоторые считают, что интерфейс становится более естественным или интуитивно понятным), а быстрая, инкрементная обратная связь позволяет пользователю совершать меньше ошибок и быстрее выполнять задачи, поскольку он может видеть результаты действия до его завершения, оценивая результат и корректируя ошибки. Термин был введен Беном Шнайдерманом в 1982 году в контексте офисных приложений и метафоры рабочего стола. Исследователи и специалисты в области компьютерных наук, занимающиеся разработкой будущих пользовательских интерфейсов, часто уделяют не меньше, а то и больше внимания тактильному и звуковому управлению и обратной связи, чем визуальной обратной связи, предоставляемой большинством графических интерфейсов пользователя (GUI). В результате термин получил более широкое распространение в этих областях.
В отличие от WIMP/GUI интерфейсов
Прямая манипуляция тесно связана с интерфейсами, использующими окна, значки, меню и устройство указания (WIMP GUI), поскольку они почти всегда включают прямую манипуляцию в той или иной степени. Однако прямую манипуляцию не следует путать с этими терминами, так как она не подразумевает обязательного использования окон или даже графического вывода. Например, принципы прямой манипуляции могут быть применены к интерфейсам для слепых или слабовидящих пользователей, используя комбинацию тактильных и звуковых устройств и программного обеспечения. Компромиссы в степени реализации прямой манипуляции в интерфейсе встречаются часто. Например, в большинстве версий оконных интерфейсов пользователи могут перемещать окно, перетаскивая его мышью. В ранних системах перерисовка окна во время перетаскивания была невозможна из-за вычислительных ограничений. Вместо этого, во время перетаскивания отображался прямоугольный контур окна, а полное содержимое окна перерисовывалось после отпускания кнопки мыши.
В компьютерной графике
Из-за сложности визуализации и манипулирования различными аспектами компьютерной графики, включая создание и редактирование геометрии, анимацию, компоновку объектов и камер, размещение источников света и другие эффекты, прямая манипуляция является важной частью 3D-компьютерной графики. Существуют стандартные виджеты прямой манипуляции, а также множество уникальных виджетов, разработанных либо как улучшенное решение старой проблемы, либо как решение новой и/или специфической задачи. Виджеты стремятся предоставить пользователю возможность изменять объект в любом направлении, одновременно предлагая простые направляющие или ограничения для удобного изменения объекта в наиболее распространенных направлениях, а также быть максимально интуитивными в отношении своей функции. Три наиболее распространенных виджета преобразования в значительной степени стандартизированы и включают в себя: виджет перемещения, который обычно состоит из трех стрелок, выровненных по ортогональным осям и центрированных относительно объекта, который необходимо переместить. Перетаскивание центра виджета перемещает объект непосредственно под курсор мыши в плоскости, параллельной плоскости камеры, а перетаскивание любой из трех стрелок перемещает объект вдоль соответствующей оси. Оси могут быть выровнены с мировыми координатами, локальными координатами объекта или другим пространством. Виджет вращения, который обычно состоит из трех кругов, выровненных по трем ортогональным осям, и одного круга, выровненного с плоскостью камеры. Перетаскивание любого из кругов вращает объект вокруг соответствующей оси, а перетаскивание в другом месте позволяет свободно вращать объект (имитация вращения трекболом). Виджет масштабирования, который обычно состоит из трех коротких линий, выровненных по ортогональным осям и заканчивающихся прямоугольниками, и одного прямоугольника в центре виджета. Перетаскивание любого из прямоугольников, выровненных по осям, приводит к неравномерному масштабированию только по этой оси, а перетаскивание центрального прямоугольника приводит к равномерному масштабированию по всем трем осям одновременно. В зависимости от конкретного стандартного использования объекта могут применяться различные виджеты. Например, источник света в компьютерной графике, как и любой другой объект, определяется преобразованием (перемещением и вращением), но иногда его положение и направление задаются просто позициями его конечных точек. Это связано с тем, что может быть более интуитивно понятно определить местоположение источника света, а затем указать его цель, чем вращать его вокруг координатных осей для наведения на известную позицию. Другие виджеты могут быть уникальными для конкретного инструмента, например, элементы управления краем для изменения угла конуса прожектора, точки и ручки для определения положения и касательного вектора для контрольной точки сплайна, круги переменного размера для определения ширины фильтра размытия или размера кисти, цели IK для рук и ног или цветовые круги и палитры для быстрого выбора цветов. Сложные виджеты могут даже включать в себя элементы научной визуализации для эффективного представления соответствующих данных (например, векторные поля для эффектов частиц или изображения ложных цветов для отображения карт вершин). Прямая манипуляция, а также дизайн пользовательского интерфейса в целом для задач 3D-компьютерной графики, по-прежнему являются активной областью исследований и инноваций. Процесс создания CG-изображений не считается интуитивно понятным или простым по сравнению со сложностью задач, которые хочет решить пользователь, особенно для сложных и редких задач. Пользовательский интерфейс для текстовых редакторов, например, широко распространен. Он легко осваивается новыми пользователями и достаточен для большинства задач текстовой обработки, поэтому это в основном решенная и стандартизированная задача пользовательского интерфейса. Однако пользовательские интерфейсы для 3D-компьютерной графики обычно либо сложны в освоении и использовании и недостаточно мощны для сложных задач, либо трудны в освоении и использовании, поэтому прямая манипуляция и пользовательские интерфейсы могут сильно различаться от приложения к приложению.
the translation widget, which usually consists of three arrows aligned with the orthogonal axes centered on the object to be translated. Dragging the center of the widget translates the object directly underneath the mouse pointer in the plane parallel to the camera plane, while dragging any of the three arrows translates the object along the appropriate axis. The axes may be aligned with the world space axes, the object space axes, or some other space. the rotation widget, which usually consists of three circles aligned with the three orthogonal axes, and one circle aligned with the camera plane. Dragging any of the circles rotates the object around the appropriate axis while dragging elsewhere will freely rotate the object (virtual trackball rotation). the scale widget, which usually consists of three short lines aligned with the orthogonal axes terminating in boxes, and one box in the center of the widget. Dragging any of the three axis aligned boxes effects a non uniform scale along solely that axis, while dragging the center box effects a uniform scale on all three axes at once. Depending on the specific standard uses of an object, different kinds of widgets may be used. For example, a light in computer graphics is, like any other object, also defined by a transformation (translation and rotation), but it is sometimes positioned and directed simply with its endpoint positions. This is because it may be more intuitive to define the location of the light source and then define the light's target, rather than rotating it around the coordinate axes to point it at a known position. Other widgets may be unique for a particular tool, such as edge controls to change the cone of a spotlight, points and handles to define the position and tangent vector for a spline control point, circles of variable size to define a blur filter width or paintbrush size, IK targets for hands and feet, or color wheels and swatches for quickly choosing colors. Complex widgets may even incorporate some from scientific visualization to efficiently present relevant data (such as vector fields for particle effects or false color images to display vertex maps). Direct manipulation, as well as user interface design in general, for 3D computer graphics tasks, is still an active area of invention and innovation. The process of generating CG images is not considered to be intuitive or easy in comparison to the difficulty of what the user wants to do, especially for complex and less common tasks. The user interface for word processing, for example, is commonly used. It is easy to learn for new users and is sufficient for most word processing purposes, so it is a mostly solved and standardized UI. However, the user interfaces for 3D computer graphics are usually either challenging to learn and use and not sufficiently powerful for complex tasks and/or difficult to learn and use, so direct manipulation and user interfaces will vary wildly from application to application.