RU2532866C1 - Method of creating stereoscopic computer user interface - Google Patents

Method of creating stereoscopic computer user interface

Info

Publication number
RU2532866C1
RU2532866C1 RU2013113347A RU2013113347A RU2532866C1 RU 2532866 C1 RU2532866 C1 RU 2532866C1 RU 2013113347 A RU2013113347 A RU 2013113347A RU 2013113347 A RU2013113347 A RU 2013113347A RU 2532866 C1 RU2532866 C1 RU 2532866C1
Authority
RU
Grant status
Grant
Patent type
Prior art keywords
stereoscopic
image
interface
method
user interface
Prior art date
Application number
RU2013113347A
Other languages
Russian (ru)
Other versions
RU2013113347A (en )
Inventor
Александр Иванович Алчинов
Борислав Борисович Вербицкий
Анатолий Витальевич Иванов
Original Assignee
Общество с ограниченной ответственностью "Талка+"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Grant date

Links

Images

Abstract

FIELD: physics, computer engineering.
SUBSTANCE: invention relates to methods of creating a stereoscopic computer graphical user interface and can be used to design special-purpose stereoscopic image processing systems. Disclosed is a method of creating a stereoscopic computer graphical user interface, comprising a dual-port video adapter which supports formation of a stereoscopic image based on three-dimensional scene space. The computer has two liquid crystal displays connected to two inputs of the video adapter. The method includes establishing a video adapter mode in which a stereoscopic image is formed by a driver or a video adapter driver module. An application program interface is formed and a three-dimensional scene is formed in the computer memory. Images for the left eye and the right eye are continuously transmitted from the first and second outputs of the video adapter to the screens of said liquid crystal displays.
EFFECT: providing a stereoscopic computer graphical user interface using three-dimensional graphics and rendering means.
11 cl, 4 dwg

Description

Изобретение относится к способам создания графического интерфейса пользователя компьютера, точнее к способам создания стереоскопического интерфейса пользователя компьютера, содержащего двухпортовый видеоконтроллер и устройство для показа стереоизображения на базе двух жидкокристаллических дисплеев, подключенных к первому и второму выходам указанного видеоконтроллера и создающих изображения для первого и для второго глаза пользователя соответственно. The invention relates to methods for creating graphical computer user interface, more particularly to methods of creating a computer user stereoscopic interface comprising dual video controller and a device for displaying the stereo image on the basis of two liquid crystal displays that are connected to first and second outputs of said video controller and creating images for the first and for the second eye user respectively. Изобретение может быть использовано для разработки специализированных систем обработки стереоизображений, предназначенных для работы операторов в стереоочках, например для фотограмметрических работ. The invention can be used to develop special stereo processing systems intended for operators in stereoscopic glasses, e.g. for photogrammetric work.

В последние годы в связи с появлением ЖК-дисплеев разработан ряд систем создания стереоизображений путем формирования двух изображений на двух отдельных ЖК-дисплеях и проецирования их на отдельную обозреваемую поверхность. In recent years, with the advent of LCD displays developed a series of stereo systems create by forming two images on two separate LCD displays and projecting them on a separate surface and fro. Такие системы имеют преимущества перед стереосистемами на базе ЭЛТ-дисплеев, состоящие в меньших габаритах, в более экономном электропотреблении и в более высокой экологичности, связанной с меньшей утомляемостью глаз пользователя при использовании ЖК-дисплеев по сравнению с ЭЛТ-дисплеями. Such systems have advantages over stereos CRT displays, consisting in smaller sizes, more power consumption economy and a higher ecological related fatigue at the user's eye when using LCDs compared to CRT displays.

С другой стороны, появились двухпортовые видеоконтроллеры, к двум выходам которых могут быть подключены указанные ЖК-дисплеи. On the other hand, there are dual-ported video controllers to two outputs which can be connected to these LCDs. Особенностью современных видеоконтроллеров является аппаратная реализация стандартов DirectX и OpenGL. A feature of modern video controller is a hardware implementation of DirectX and OpenGL standards. При этом средства драйвера видеоконтроллера позволяют выбирать один из нескольких режимов работы видеоконтроллера. In this case, the video controller driver tools allow you to choose one of several modes of operation video controller. Одним из режимов является режим расширения рабочего стола, в котором окно рабочего стола может отображаться на двух дисплеях таким образом, что левая половина рабочего стола отображается на одном дисплее, а правая - на другом дисплее. One mode is the desktop extension mode, wherein the desktop window may be displayed on two monitors so that the left half of the desktop displayed on one display, and the right - on another display.

Полноценная работа пользователя с компьютером, к которому подключено указанное устройство создания стереоизображения, предполагает наличие стереоскопического графического интерфейса пользователя, в котором пользователю хорошо видны все элементы графического интерфейса (окна, кнопки, курсор мыши и т.п.) в рамках видимого им стереоизображения, которое может включать в себя как собственно стереоскопическое изображение, создаваемое приложением, так и плоские изображения, в том числе как элементы графического интерфейса данного приложен A complete user experience with a computer that is connected to said device creating a stereo image, suggests the presence of stereoscopic graphic user interface in which the user can view all the elements of the graphical interface (windows, buttons, mouse, etc.) within the visible stereo them that may include both actual stereoscopic image is generated by the application, as well as flat images, including as a graphical user interface elements of the attached ия, так и изображения окон других приложений. tions, and the image of windows of other applications. Для выполнения этого условия средства графического интерфейса должны согласованно отображаться на обоих дисплеях, обеспечивая единое стереоскопическое изображение всего рабочего стола компьютера. To fulfill this condition means the GUI should appear in concert on both displays, providing a single stereoscopic image of the entire computer desktop.

В патенте США 6344860 предложен способ создания стереоскопического изображения интерфейса пользователя, который очевидным образом может быть реализован на двух ЖК-дисплеях с использованием вышеуказанного режима расширения рабочего стола. U.S. Patent 6344860 provides a method for creating a stereoscopic image user interface, which obviously may be implemented on two LCDs using the above extended desktop mode. Для этого достаточно отобразить главный и ведомый объекты интерфейса соответственно на экраны первого и второго дисплеев и тем самым создать требуемый стереоскопический графический интерфейс. It's enough to see the main and slave interface objects respectively on the screens of the first and second displays, and thereby create the desired three-dimensional graphical user interface.

Способ состоит в том, что: The method consists in the fact that:

показывают на экране дисплея главный (master) объект интерфейса; show on the display the main (master) interface object;

показывают на экране дисплея ведомый (slave) объект интерфейса, являющийся дубликатом главного объекта интерфейса и находящийся на фиксированном смещении от главного объекта интерфейса; show on the display screen of the slave (slave) interface object which is a duplicate of a main interface of the object and located at a fixed offset from the main interface object;

показывают главный курсор в одной части экрана дисплея; show the main cursor to one of the display screen;

показывают ведомый курсор в другой части экрана дисплея; show slave over to the other side of the display screen;

перемещают ведомый курсор в фиксированном соотношении относительно главного курсора на основании перемещения указывающего устройства, где перемещение ведомого курсора включает в себя перемещение ведомого курсора с корректировкой ведомого объекта интерфейса, чтобы отследить любые измерения, производимые в главном объекте интерфейса в ответ на по крайней мере одно из событий: MOUSE_MOVE, MOUSE_UP, MOUSE_DOWN, MOUSE_ENTER, MOUSE_EXIT; moving the driven cursor in a fixed ratio relative to the main cursor based on movement of a pointing device, wherein movement of the driven cursor comprises moving the driven cursor adjusted slave interface object to track any measurements made in the main object interface in response to at least one of the events : MOUSE_MOVE, MOUSE_UP, MOUSE_DOWN, MOUSE_ENTER, MOUSE_EXIT;

определяют, меняется ли объект интерфейса ввиду перемещения главного курсора; determine whether the interface object is changed due to movement of the main cursor;

копируют новый фон в память, стирают ведомый курсор, стирают любые накладывающиеся части ведомого курсора исходя из нового фона и показывают новый ведомый курсор на новом фоне, если определено, что объект интерфейса меняется ввиду перемещения главного курсора; new background copy in memory, erase slave over erase any overlapping portion of the driven cursor on the basis of a new background and a new show driven cursor on a new background, if it is determined that the interface object changes due to movement of the main cursor;

стирают ведомый курсор, применяют изменения к объекту интерфейса и показывают новый ведомый курсор, если определено, что объект интерфейса не меняется ввиду перемещения главного курсора. erase slave pointer, apply the changes to the interface to the object and show a new mouse driven, if it is determined that the interface object does not change due to movement of the main cursor.

Недостатком этого способа является необходимость поддержания двух объектов интерфейса (главного и ведомого) и тем самым специальной разработки средств управления ресурсами, связанными с интерфейсом. The disadvantage of this method is the need to maintain two objects interface (master and slave) and thereby developing a special resource management means, associated with the interface. Помимо курсора мыши, рассмотренного в патенте США 6344860, сюда могут относиться окна других приложений, всплывающие подсказки и т.д. In addition to the mouse pointer, considered in US patent 6344860, here may include other application windows, tool tips, etc. Появление новых типов ресурсов вызывает необходимость разработки специальных средств управления такими ресурсами, совместимыми с данным интерфейсом. The emergence of new types of resources is the need for special tools such resources that are compatible with this interface.

В [http://www.racurs.ru/?page=102] приводится описание модуля PHOTOMOD Stereo Draw, предназначенного для создания и редактирования трехмерных векторных объектов в стереорежиме, который обеспечивает стереоскопический интерфейс пользователя. In [http://www.racurs.ru/?page=102] describes module PHOTOMOD Stereo Draw, designed for creating and editing three-dimensional vector objects in stereo, which provides a stereoscopic UI. В соответствии с [http://www.racurs.ru/?page=405] для работы в оконных стереорежимах требуются профессиональные видеокарты (NVIDIA Quadro FX) с поддержкой стереорасширений OpenGL. In accordance with [http://www.racurs.ru/?page=405] to work in the stereo window required professional graphics card (NVIDIA Quadro FX) with support stereorasshireny OpenGL. Кроме того, в литературе отсутствует какая-либо информация о способе создания этого стереоскопического интерфейса пользователя. In addition, in the literature there is no information about how to create this stereoscopic UI.

Помимо способов создания стереоскопического интерфейса пользователя в целом имеется ряд технических решений, посвященных стереоскопическому показу отдельных элементов интерфейса пользователя. In addition to the ways to create a stereoscopic UI as a whole there are a number of technical solutions dedicated to stereoscopic display of individual elements of the user interface. Так, в патенте США 6225979 предлагается способ стереоскопического показа курсора, в заявке US 2002/0047835 предлагается способ стереоскопического показа иконок. Thus, US Patent No. 6225979 provides a method for the stereoscopic display cursor in the application US 2002/0047835 provides a method for the stereoscopic display of icons.

В патенте РФ 2380763 предлагается способ создания стереоскопического интерфейса пользователя с использованием графического интерфейса прикладных программ DirectDraw, режима видеоконтроллера, в котором производится клонирование изображения на оба выхода видеоконтроллера, и оверлеев. In Russian patent 2380763 provides a method for creating a stereoscopic UI using a GUI DirectDraw applications, video controller mode, in which the cloning image is produced on both outputs video controller, and overlays. Недостатком способа, описанного в патенте РФ 2380763, является невозможность использования классов, функций, методов и процедур DirectDraw в сочетании с современным оборудованием, использующим графические API DirectX версии 10 и выше, как указано в [http://msdn.microsoft.com/en-us/library/windows/desktop/gg426115%28v=vs.85%29.aspx], что также затрудняет получение прямого доступа к видеопамяти, используемое в способе, описанном в патенте РФ 2380763. Применение описанного в патенте РФ 2380763 метода с использованием объекта отсечения невозможно при использовании графического API Direct3D версий 10 и выше, The process described in RF Patent No. 2380763, is the impossibility to use classes, functions, methods, procedures and DirectDraw with modern equipment using graphics API DirectX 10 and above, as described in [http://msdn.microsoft.com/en -us / library / windows / desktop / gg426115% 28v = vs.85% 29.aspx], which is also difficult to obtain direct access to the video memory used in the method described in the RF Patent Application 2380763. described in Russian patent 2380763 a method using clipping object is not possible using the graphical API Direct3D version 10 and higher как указано в [http://msdn.microsoft.com/en-us/library/windows/desktop/bb322323%28v=vs.85%29.aspx]. as specified in [http://msdn.microsoft.com/en-us/library/windows/desktop/bb322323%28v=vs.85%29.aspx]. Наряду с этим, в патенте РФ 2380763 описывается использование интерфейса DirectDraw для настольных (Desktop) систем одновременно со ссылкой на функции мобильной платформы DirectDraw, которые отличны от функций DirectDraw для настольных (Desktop) систем. In addition, in Russian patent 2380763 describes the use DirectDraw interface desktop (Desktop) system simultaneously with reference to the mobile platform functions DirectDraw, which are distinct from functions for DirectDraw desktop (Desktop) systems.

С учетом сказанного, актуальной является разработка способа создания стереоскопического графического интерфейса пользователя компьютера с двухпортовым видеоконтроллером широкой номенклатуры и устройством для показа стереоизображения на базе двух ЖК-дисплеев, подключенных к первому и второму выходам указанного видеоконтроллера и создающих изображения для первого и для второго глаза пользователя соответственно, который был бы совместим с современным оборудованием, использующим графические API DirectX версии 10 и выше. With that said, it is urgent to develop a method of creating stereoscopic graphical computer user interface with dual-ported video controller wide range and a device for displaying the stereo image on the basis of two LCD displays connected to the first and second outputs of said video controller and creating images for the first and for the second eye of the user, respectively, which would be compatible with modern equipment, using graphics API DirectX version 10 or higher.

Это достигается за счет того, что устанавливают режим работы видеоконтроллера, в котором производится отображение изображения на оба выхода таким образом, что суммарное разрешение выходного сигнала превышает по горизонтали или вертикали в два раза разрешение монитора для отображения горизонтальной или вертикальной стереопары соответственно. This is achieved by the fact that the set operation mode video controller, wherein the display image produced on the two outputs so that the total output resolution than the horizontal or the vertical resolution twice the monitor to display horizontal or vertical stereopair respectively. Создают программный интерфейс прикладных программ, позволяющий создавать элементы графического пользовательского интерфейса в трехмерной сцене и устанавливают уровень кооперации указанного программного интерфейса в соответствии с типом приложения (полноэкранное, оконное или комбинированное), использующего выдачу на экран стереоизображений. Create a software application program interface that allows you to create GUI elements in a three-dimensional scene and establish the level of cooperation of this software interface in accordance with the type of application (full screen, window, or a combination) on the screen using the issuance of stereo images. В указанном интерфейсе создают трехмерную сцену средствами трехмерного графического движка в памяти компьютера. In this interface creates a three-dimensional scene by means of three-dimensional graphics engine in the computer's memory. В процессе работы определяют, когда необходимо изменить детализацию элементов трехмерной сцены. In the process, determine when you need to change the details of the elements of three-dimensional scenes. Формируют первичное изображение в графическом буфере для первого глаза. Primary image formed in the graphic buffer for the first eye. Одновременно формируют разностное изображение в графическом буфере для второго глаза. Simultaneously forming a difference image in the graphic buffer to the second eye. Формируют сигнал на выходе видеоконтроллера, с учетом выбранного метода стереоскопического отображения. Generates a signal at the output of the video controller, the method with the selected stereoscopic display. При этом непрерывно подают указанные сигналы для первого и второго глаза с первого и второго выходов видеоконтроллера на экраны указанных дисплеев. Wherein said signals are continuously fed to the first and second eyes from the first and second outputs of said video controller on the display screens.

Такой способ обеспечивает достижение основного технического результата, состоящего в обеспечении стереоскопического графического интерфейса пользователя компьютера с использованием современных существующих средств трехмерной графики. Such a process achieves the basic technical result consisting in providing stereoscopic computer graphic user interface using the existing modern means of three-dimensional graphics. Кроме того, исключается необходимость разработки специальных средств управления ресурсами пользовательского интерфейса, связанных с наличием двух объектов, обеспечивающих изображения интерфейса для левого и правого глаза пользователя. In addition, eliminating the need for the development of specific management tools user interface associated with the presence of two objects that provide the interface images for the left and right eyes of the user.

При наличии нескольких окон стереоскопического приложения возможно создание стереоскопического графического интерфейса пользователя в каждом таком окне при наличии аппаратной поддержки такой функции со стороны видеоконтроллера и монитора или совокупности мониторов [http://3dvision-blog.com/6109-when-and-how-you-can-use-the-3d-vision-windowed-3d-mode/]. If you have multiple Windows applications can create stereoscopic stereoscopic user graphical interface in each such window in the presence of hardware support such a function by the video controller and monitor or set of monitors [http://3dvision-blog.com/6109-when-and-how-you -can-use-the-3d-vision-windowed-3d-mode /].

Создание трехмерной сцены может включать в себя создание элементов графического пользовательского интерфейса, в том числе сложной формы, используя полигональные сетки (меши) либо маски прозрачности, текстовые элементы графического пользовательского интерфейса, используя технологию RTT (Render-To-Texture). Creating a three-dimensional scene can include the creation of graphical user interface elements, including complex shapes, using a polygonal mesh (mesh) or transparency of the mask, the text elements of the graphical user interface, using the RTT (Render-To-Texture) technology. При этом достигается дополнительный технический результат, состоящий в возможности создания элементов графического интерфейса произвольной сложной формы, а также в ускорении визуализации текстовых элементов интерфейса, возможности их отрисовки на поверхности любого элемента интерфейса и экономии видеопамяти. This achieves additional technical result consisting in the possibility of creating graphical user interface elements of arbitrary complex shapes, as well as to accelerate textual visualization interface elements, their possible drawing on the surface of any interface and memory savings element.

Создание графического пользовательского интерфейса может включать в себя определение порядка следования элементов графического пользовательского интерфейса путем явного указания порядка следования таковых либо приоритета следования категорий элементов интерфейса. Creating a graphical user interface may include determining the order of the elements of the graphical user interface by explicit order of such a priority following categories of interface elements. Определение порядка следования элементов может быть представлено в виде XML файла или какого-либо другого файла структурированных данных. Determination of the order of the elements can be represented as an XML file or any other file-structured data. При этом достигается дополнительный технический результат, состоящий в экономии вычислительных ресурсов и повышении удобства для пользователя при работе с таким интерфейсом. This achieves additional technical result consisting in saving computational resources and increase the convenience for the user when working with such an interface.

Изменение трехмерной сцены в процессе работы программы может включать в себя изменение детализации элементов трехмерной сцены в зависимости от порядка следования таковых либо в зависимости от производительности аппаратной части и текущей нагрузки на таковую со стороны самого приложения, либо сторонних приложений в текущий момент времени, для поддержания величины задержки обработки одного кадра в графическом буфере в диапазоне, сравнимом с интервалом времени смены кадров на мониторах. Changing the three-dimensional scene in the course of the program may include a change of detail elements of the three-dimensional scene according to the order of those either, depending on the performance of the hardware and the current load on those from the application itself, or third-party applications at the current time, to maintain the value a processing delay of one frame in the graphic buffer in a range comparable to the time interval of frame rates on the monitors. Для изменения детализации элементов интерфейса может использоваться метод LOD (Level Of Details - уровень детализации), при котором помимо основной трехмерной модели элемента интерфейса создается аппроксимированные копии такой модели. To change the interface elements of detail can be used method LOD (Level Of Details - level of detail), in which besides the basic three-dimensional interface element model is created approximated copies of this model. Аппроксимированные копии могут создаваться в режиме реального времени либо заранее. Approximated copies can be created in real time or in advance. В зависимости от текущей нагрузки на видеоконтроллер для визуализации выбирается либо оригинальная модель, либо та или иная аппроксимированная копия. Depending on the current load on the video controller to render either the original model is selected, either one or the other replica approximated. При этом достигается дополнительный технический результат, состоящий в существенном ускорении процесса визуализации трехмерной сцены без потери информативности элементов графического интерфейса. This achieves additional technical result consisting essentially accelerating imaging three-dimensional scene without losing information content GUI elements.

Изменение трехмерной сцены может включать в себя метод, при котором при необходимости вывода стереоскопических изображений или стереоскопического видеопотока в указанном окне приложения совершают ряд дополнительных операций, в т.ч. Changing the three-dimensional scene may include a method in which, if necessary output stereoscopic image or a stereoscopic video in said application window perform a number of additional operations, including создают элемент-приемник, корректируют размеры такого элемента, измеряют стереоскопический параллакс элемента-приемника, измеряют стереоскопический параллакс стереоскопического изображения, отображаемого на таком элементе, проводят необходимые корректировки положения и размеров элемента-приемника. create an element receiver, adjust dimensions of such an element, measured stereoscopic parallax receiver element, measured stereoscopic parallax stereoscopic image displayed on such a member carrying out necessary correcting the position and the receiver element sizes. При этом достигается дополнительный технический результат, состоящий в возможности комфортного отображения заранее созданных сторонними средствами стереоскопических изображений в рамках стереоскопического графического интерфейса без нарушения непрерывности стереоскопического параллакса по глубине трехмерной сцены. This achieves additional technical result consisting in the possibility of a comfortable display pre-existing third-party tools stereoscopic images within the stereoscopic graphical interface without discontinuity stereoscopic parallax depth three-dimensional scene.

Отображение стереоизображения либо стереоскопического видеопотока на поверхности элемента-приемника может содержать принудительную подмену прямоугольных областей графического буфера, соответствующих левому и правому каналам проекции поверхности элемента-приемника на зрительную плоскость, на содержимое левого и правого каналов стереоизображения либо стереоскопического видеопотока путем вызова ряда необходимых функций, методов, процедур программного интерфейса драйвера видеоконтроллера либо передачи необходимых параметров про Showing stereo or stereoscopic video stream on the surface of the element receiver may comprise forced substitution of rectangular regions of the graphics buffer corresponding to the left and right channels of the projection receiver element surface on the visual plane on the contents of the left and right stereo channels or the stereoscopic video stream by calling the number of required functions, methods , the driver software interface procedures video controller or transmit the necessary parameters about граммному интерфейсу драйвера видеоконтроллера при наличии аппаратной и программной поддержки подобных возможностей со стороны видеоконтроллера. grammnomu video controller driver interface in the presence of hardware and software support such opportunities by the video controller. При этом достигается дополнительный технический результат, состоящий в экономии вычислительных ресурсов, поскольку в этом случае не требуется определение стереоскопического параллакса стереоизображения и перестроение трехмерной сцены. This achieves additional technical result consisting in saving computational resources, since in this case no definition of stereoscopic parallax stereoscopic and three-dimensional scene changeover.

Визуализация трехмерной сцены может содержать возможность переключения левого и правого каналов путем вызова ряда необходимых функций, методов, процедур программного интерфейса драйвера видеоконтроллера либо передачи необходимых параметров программному интерфейсу драйвера видеоконтроллера при наличии аппаратной и программной поддержки подобных возможностей со стороны видеоконтроллера. Visualization of three-dimensional scene can include the ability to switch left and right channels by calling a number of necessary functions, methods, software, or video controller driver interface transmission procedures necessary parameters programming interface video controller driver in the presence of hardware and software support such opportunities by the video controller. При этом достигается дополнительный технический результат, состоящий в повышении гибкости применения стереоскопического интерфейса и более широком спектре используемого оборудования для отображения интерфейса. This achieves additional technical result consisting in increasing the flexibility of application of the stereoscopic interface and wider range of equipment used to display the interface.

В процессе работы системы расхождение итогового (наблюдаемого пользователем на дисплее) стереоскопического изображения (стереоскопический параллакс) может является изменяемым. In operation, the divergence of the final system (observable by the user on the display) of the stereoscopic image (stereoscopic parallax) can is changeable. Изменение стереоскопического параллакса может происходить путем изменения настроек драйвера видеоконтроллера либо иным способом. Changing stereoscopic parallax can occur by changing the video controller driver settings or otherwise. При этом достигается дополнительный технический результат, состоящий в повышении комфорта стереоскопического отображения интерфейса для пользователя. This achieves additional technical result consisting in increasing the comfort of stereoscopic display for a user interface.

При визуализации трехмерной сцены возможен поворот либо вращение элементов графического пользовательского интерфейса любым возможным способом. When rendering a three-dimensional scene can be rotated or rotate the graphical user interface elements in any possible way. При этом достигается дополнительный технический результат, состоящий в расширении функционала графического интерфейса и повышении удобства его использования пользователем. This achieves additional technical result consisting in expansion of functional graphical user interface and improving the convenience of its use by the user.

При отображении стереоскопического интерфейса может применяться преобразование цифрового сигнала изображения интерфейса, получаемого на выходе либо выходах видеоконтроллера, из цифрового в аналоговый. When displaying the digital interface converting the image signal can be applied stereoscopic interface produced at the output or outputs of the video controller, from digital to analog. При этом достигается дополнительный технический результат, состоящий в расширении состава используемого оборудования для отображения интерфейса. This achieves additional technical result consisting in expansion of the equipment used to display the interface.

При создании трехмерной сцены может создаваться две и более точек наблюдения (камер) в трехмерной сцене. When creating three-dimensional scene can be generated two or more viewpoints (cameras) in a three-dimensional scene. При этом достигается дополнительный технический результат, состоящий в повышении информативности графического интерфейса с помощью использования дополнительных вьюпортов (областей визуализации), содержащих разный набор элементов интерфейса, а также возможности создания стереокамер в трехмерной сцене, что приведет к экономии вычислительных ресурсов, затрачиваемых на операции пересчета стереоскопического параллакса. This achieves additional technical result consisting in raising the informative graphical interface by using additional viewports (visualization) containing a different set of interface elements, as well as the possibility of creating stereo cameras in the three dimensional scene, resulting in saving computational resources spent on translation stereoscopic operation parallax.

Создание трехмерной сцены может производиться с помощью какого-либо графического движка, фреймворка либо платформы, в т.ч. Creating a three-dimensional scene can be performed using any of the graphics engine, framework or platform, including такого, который использует Direct3D или OpenGL. one that uses the Direct3D or OpenGL. При этом достигается дополнительный технический результат, состоящий в повышении скорости развертывания системы интерфейса, а также возможности более гибкого внедрения стереоскопического интерфейса в различные программные комплексы, использующие трехмерные графические движки. This achieves additional technical result consisting in increasing the deployment speed of the interface system as well as a more flexible implementation of stereoscopic interface to different software systems that use three-dimensional graphics engines.

Изобретение поясняется графическими материалами, где: The invention is explained by graphic materials, where:

Фиг.1. 1. Схемы подключения стереомониторов lcReflex-1703 и lcReflex-2002. Wiring diagrams stereo monitor lcReflex-1703 and lcReflex-2002.

Фиг.2. 2. Архитектура интерфейса прикладных программ. The architecture of an application program interface.

Фиг.3. 3. Структура графа трехмерной сцены The structure of the three-dimensional scene graph

Фиг.4. 4. Схема процесса определения области перекрытия окон. Scheme determination process windows overlap area.

Реализация изобретения The implementation of the invention,

1. Общее описание 1. General description:

Устройство для обеспечения стереоскопического графического интерфейса пользователя компьютера включает в себя компьютер с двухпортовым видеоконтроллером и устройством для показа стереоизображения на базе двух жидкокристаллических дисплеев, подключенных к первому и второму выходам указанного видеоконтроллера и создающих изображения для первого и для второго глаза пользователя соответственно. An apparatus for providing stereoscopic computer graphic user interface includes a computer with a dual-ported video controller and a device for displaying the stereo image on the basis of two liquid crystal displays that are connected to first and second outputs of said video controller and creating images for the first and for the second eye of the user, respectively. В качестве видеоконтроллера могут использоваться, например, видеокарты Nvidia GTX580 и Nvidia GTX 680, а в качестве устройства создания стереоизображения на базе двух ЖК-дисплеев - например, стереомонитор lcReflex-1703 или lcReflex-2002. As the video controller may be used, such as Nvidia GTX580 graphics card and Nvidia GTX 680, and as a device creating a stereoscopic image based on two LCD displays - such as stereo monitor lcReflex-1703 or lcReflex-2002. Их существенное для нас отличие состоит в том, что lcReflex-1703 имеет два VGA-входа, тогда как lcReflex-2002 имеет один VGA-вход и один DVI-D-вход [http://www.stereo-pixel.ru/lcreflex2002.htm]. Their major difference for us is that lcReflex-1703 has two VGA-input, while lcReflex-2002 has a VGA-input and one DVI-D-input [http://www.stereo-pixel.ru/lcreflex2002 .htm]. Зарубежным прототипом этих изделий является стереомонитор StereoMirror [http://www.planar.com/products/desktop-touch-screen-monitors/stereoscopic-3d/]. Foreign prototype of these products is the stereo monitor StereoMirror [http://www.planar.com/products/desktop-touch-screen-monitors/stereoscopic-3d/].

На фиг.1 приведены схемы подключения стереомониторов lcReflex-1703 и lcReflex-2002 соответственно к выходам двухпортового видеоконтроллера. Figure 1 shows the connection diagrams stereo monitor lcReflex-lcReflex-1703 and 2002 respectively to the outputs of the dual port video controller. Преобразование цифрового DVI-сигнала в аналоговый VGA-сигнал осуществляют с помощью DVI-адаптера [http://www.svideo.com/dvi.html]. Converting digital DVI-signal into an analog VGA-signal carried via DVI-adapter [http://www.svideo.com/dvi.html].

На фиг.2 приведена схема, взятая из [http://msdn.microsoft.com/ru-RU/library/windows/desktop/bb219679%28v=vs.85%29.aspx] (обозначенные на схеме элементы присутствуют и в Direct3D версий 10 и 11) и иллюстрирующая архитектуру интерфейса прикладных программ, в которой реализуется изобретение. Figure 2 is a diagram taken from [http://msdn.microsoft.com/ru-RU/library/windows/desktop/bb219679%28v=vs.85%29.aspx] (indicated in the diagram and the elements are present in Direct3D versions 10 and 11) and illustrating the application interface architecture in which the invention is implemented. Эта схема иллюстрирует связи между прикладными программами, интерфейсом дисплеев, уровнем аппаратных абстракций (hardware abstraction layer - HAL) и видеоконтроллером с аппаратурой дисплеев. This scheme illustrates the communication between applications, display interface hardware abstraction level (hardware abstraction layer - HAL) and the video to display apparatus. Приложения осуществляют управление аппаратурой дисплеев через аппаратно-зависимый интерфейс дисплеев, который выполняет проверку параметров, управление видеопамятью и учетные операции. Application to control the display apparatus via the device-dependent display interface which performs parameter validation, video memory management and accounting operations. HAL может быть составной частью аппаратуры дисплеев или, напротив, может быть реализован в программном обеспечении компьютера. HAL may be an integral part of the apparatus displays or, alternatively, may be implemented in computer software. В последнем случае HAL обычно реализован как DLL. In the latter case, the HAL is typically implemented as a DLL. HAL создается и реализуется производителем видеокарт или микросхем видеоконтроллеров. HAL is created and implemented by the manufacturer graphics card or video controller chip. Дополнительно интерфейс дисплеев может включать в себя уровень эмуляции аппаратуры (hardware emulation layer - HEL), чтобы эмулировать аппаратные свойства дисплеев, если они не реализованы в аппаратуре. In addition, the display interface may include hardware emulation layer (hardware emulation layer - HEL), to emulate the hardware properties of the display if they are not implemented in hardware.

В качестве интерфейса прикладных программ (API) используют средства, позволяющие производить визуализацию трехмерной графики. As an interface (API) applications using tools to produce three-dimensional graphics rendering. Примерами систем, которые обеспечивают такой интерфейс, являются DirectX [http://msdn.microsoft.com/ru-RU/librarv/windows/desktop/bbl72268%28v=vs.85%29.aspx], OpenGL и т.д. Examples of systems that provide such an interface is the DirectX [http://msdn.microsoft.com/ru-RU/librarv/windows/desktop/bbl72268%28v=vs.85%29.aspx], OpenGL etc. Ниже рассматривается реализация предлагаемого способа на базе системы DirectX, причем реально используется только часть системы DirectX, обеспечивающая вывод изображений и трехмерной графики, и известная под названием Direct3D. The following describes the implementation of the proposed method on the basis of DirectX system wherein only a portion is actually used DirectX system providing output images and three-dimensional graphics, and known as Direct3D. В случае OpenGL реализация способа производится аналогично с изменениями, очевидными для специалиста в области программирования. In the case of OpenGL implementation method is performed similarly to the changes apparent to one skilled in the field of programming.

Прежде всего, устанавливают режим работы видеоконтроллера, в котором производится отображение изображения на оба выхода таким образом, что суммарное разрешение выходного сигнала превышает по горизонтали или вертикали в два раза разрешение монитора для отображения горизонтальной или вертикальной стереопары соответственно. First of all, set the operating mode of the video controller, wherein the display image produced on the two outputs so that the total output resolution than the horizontal or the vertical resolution twice the monitor to display horizontal or vertical stereopair respectively. Установка режима работы видеоконтроллера описывается ниже в п.2. Setting the operating mode of the video controller described in claim 2 below.

Далее создают программный интерфейс прикладных программ, позволяющий создавать элементы графического пользовательского интерфейса в трехмерной сцене, и устанавливают уровень кооперации указанного программного интерфейса в соответствии с типом приложения (полноэкранное, оконное или комбинированное), использующего выдачу на экран стереоизображений. Next, create a software application program interface that allows you to create GUI elements in a three-dimensional scene and establish the level of cooperation of this software interface in accordance with the type of application (full screen, window, or a combination) on the screen using the issuance of stereo images. В случае комбинированного приложения, которое может динамически переключаться пользователем в полноэкранный или оконный режим, производят отслеживание текущего режима работы приложения и соответственно изменяют уровень кооперации. In the case of the combined application that the user can dynamically switch to full screen or windowed mode, make tracking the current operating mode of the application and, accordingly, change the level of cooperation. Способы создания программного интерфейса и установки необходимого уровня кооперации рассматриваются ниже в п.3. Methods of creating a software interface and set the desired level of cooperation in claim 3 discussed below.

В указанном интерфейсе создают трехмерную сцену средствами трехмерного графического движка. In this interface creates a three-dimensional scene by means of three-dimensional graphics engine. Графический движок представляет собой объектно-ориентированный фреймворк, который включает все части процесса рендеринга в объектной модели, тем самым предоставляя абстрактный программный уровень. The graphics engine is an object-oriented framework that includes all parts of the rendering process in the object model, thereby providing an abstract software layer. Основной задачей графического движка является построение и визуализация трехмерной сцены, представленной в программе в виде классов и объектов. The main task of the graphics engine is the construction and visualization of three-dimensional scenes presented in the program in the form of classes and objects. Общая структура представления трехмерной сцены в графическом движке изображена на фиг.3. The general structure of a three-dimensional representation of the scene in the graphics engine is shown in Figure 3.

В качестве графического движка можно использовать любой объектно-ориентированный трехмерный графический движок, в том числе разработанный исключительно для создания графического пользовательского интерфейса на основе трехмерной сцены, поддерживающий следующие функции: полная поддержка графических API OpenGL и Direct3D, совместимость с операционными системами Windows, Linux, Mac OS X и iOS, поддержка большинства графических файловых форматов, возможность программирования графического процессора, поддержка шейдерных языков высокого уровня. As the graphics engine can use any object-based three-dimensional graphics engine, including those designed exclusively for creating graphical user interfaces based on the three-dimensional scene, which supports the following features: Full support for graphics API OpenGL and the Direct3D, compatibility with operating systems Windows, Linux, Mac OS X and iOS, support for most image file formats, the ability to GPU programming, support for high-level shader languages. Примером удовлетворяющего требованиям графического движка является OGRE (Object-Oriented Graphics Rendering Engine) [http://www.ogre3d.org/about/features]. An example of satisfying the requirements of the graphics engine is the OGRE (Object-Oriented Graphics Rendering Engine) [http://www.ogre3d.org/about/features]. Классы и функции графического движка приводятся на примере таковых в графическом движке OGRE. Classes and graphics engine function is provided as such in graphics engine OGRE.

Объекты класса Entity содержат один или более объектов класса SubEntity, которые являются непосредственно визуализируемыми трехмерными объектами. Entity Class objects contain one or more objects SubEntity class that are immediately visualized three-dimensional objects. Сами узлы сцены (объекты класса Scene Node) могут существовать без каких-либо прикрепленных к ним визуализируемых объектов, выполняя в данном случае служебную функцию маркера координат. Sami scene nodes (Scene Node class objects) can exist without any attachment to them rendered objects, performing in this case, a utility function, the marker. Объект класса MovableObject прикрепляется к узлу сцены, таким образом движимые трехмерные объекты могут быть перемещены не только относительно начала координат трехмерной сцены, но и относительно локальной системы координат родительского объекта класса Node, что позволяет создавать составные элементы графического интерфейса, состоящие их нескольких трехмерных объектов, и оперировать ими как единым объектом. MovableObject class object is attached to the assembly stage, thus driven by three-dimensional objects can be moved not only about the origin of three-dimensional scenes, but also relative to the local coordinate system of the parent object of Node class that allows you to create the constituent elements of the graphical interface consisting of multiple three-dimensional objects, and operate on them as a single object. Таким образом, в системе определяется лишь одна матрица трансформации. Thus, the system is determined by only one transformation matrix. Подобный метод наследования и управления объектами применяется в комплексе для всех элементов графического интерфейса. Such a method of objects of inheritance and control used in the complex for all GUI elements. Объект класса Renderable является указателем на то, что все объекты связанного класса Subentity являются видимыми, т.е. Renderable class object is a pointer to the fact that all objects related class Subentity are visible, ie их необходимо визуализировать. they need to visualize.

Определяют состав элементов графического интерфейса, которые необходимо визуализировать в данный момент времени (на текущем кадре). Determine the composition of GUI elements that need to be visualized at a given time (the current frame). Состав элементов интерфейса определяется прикладной программой и передается графической системе в виде структурированных данных, например, на языке XML, после чего инициализируют графический движок, строят общий граф трехмерной сцены, создают соответствующие объекты определенных классов. The composition of interface elements defined by the application program and transferred to the graphics system in the form of structured data, for example, in XML, then initialize graphics engine, build the overall three-dimensional graph of the scene, create the appropriate objects of certain classes.

Загружают в видеопамять ресурсы, необходимые для корректного отображения графического интерфейса, в том числе текстуры и шейдеры, инициализируют материалы. Is loaded into the video memory resources needed to properly display graphical interface, including textures and shaders, materials initialize. Создают объект менеджера сцены и разбивают пространство трехмерной сцены одним из существующих алгоритмов, например, BSP или окто-деревом. Create a scene manager object and divide the space three-dimensional scene of the existing algorithms, for example, BSP or Octo-tree. Затем создают объект класса камера. Then, create an object of class camera. Определяют графическую подсистему рендеринга. Determine the graphics rendering subsystem. Для загрузки и кэширования необходимых ресурсов задействуют объекты класса Resource. To download and cache the necessary resources involve Resource class objects. Объекты данного класса отвечают за загрузку, обработку, хранение, удаление из памяти таких ресурсов, как изображения, текстуры, трехмерные объекты, материалы, шрифты, векторные данные, пиксельные шейдеры. Objects of this class is responsible for loading, handling, storage, removal from storage resources such as images, textures, three-dimensional objects, materials, fonts, vector data, pixel shaders. Для обеспечения кроссплатформенности интерфейса реализуют дочерние классы, отвечающие за загрузку изображений и текстур с учетом используемого графического API, поскольку формат представления таких данных различен в разных API. In order to ensure cross-platform interface is implemented by derived classes that are responsible for downloading images and textures based on the API used graphic, such as the data format is different in different API.

Загрузку и инициализацию шейдеров осуществляют с помощью специального дочернего класса GPUProgram. Loading and initializing shader is performed using a special child class GPUProgram. Для обеспечения поддержки большинства шейдеров данный класс включает в себя дочерние классы для высокоуровневых шейдеров, таких как HSL, - класс HighLevelGPUProgram, и низкоуровневых (геометрических и вершинных) -классы D3D9GPUProgram, D3DllGPUProgram, GLGPUProgram, обеспечивающих инициализацию загружаемых шейдеров и предотвращение попыток выполнения участков кода шейдера, не поддерживаемых используемьм графическим API. To ensure the support of the majority of shaders, this class includes the child classes for high-level shaders, such as HSL, - class HighLevelGPUProgram, and low-level (geometry and vertex) is the class D3D9GPUProgram, D3DllGPUProgram, GLGPUProgram, providing downloadable initialization shader and preventing attempts to perform shader code sections not supported ispolzuemm graphics API.

Создают главный цикл рендеринга, определяют необходимые параметры визуализации, в т.ч. Create master rendering cycle, determining the required imaging parameters, including параметры камеры, определяют режим приложения (полноэкранное, оконное, смешанное). camera parameters, determining the application mode (full-screen, window, mixed).

Определяют порядок следования элементов графического интерфейса с учетом установленного базового стереоскопического параллакса. Determine the order of the elements of the graphical interface for the installed base of stereoscopic parallax. Плоскость трехмерной сцены, параллельная полю зрения и, как следствие, плоскости экрана со стереоскопическим параллаксом, равным 0, соответствует ближайшему к наблюдателю массиву точек трехмерной сцены. The plane of the three-dimensional scene, parallel to the field of view and, consequently, the screen plane with stereoscopic parallax of 0 corresponds closest to the viewer three dimensional array of points of the scene. Для пользователя все объекты, расположенные на этой плоскости, выглядят расположенными на поверхности экрана при стереоскопическом режиме отображения. For user objects located in this plane, appear on the screen surface situated at a stereoscopic display mode. Все объекты трехмерной сцены, расстояние от объекта камеры до которых превышает расстояние от объекта камеры до указанной плоскости, выглядят для пользователя расположенными от него дальше плоскости экрана в стереоскопическом режиме отображения. All objects are three-dimensional scene, the distance from the camera to the object which exceeds the distance from the object plane of said camera to look for a user located farther away plane of the screen in a stereoscopic display mode.

Позиционируют элементы графического интерфейса в пространстве трехмерной сцены, учитывая заданную максимальную глубину сцены (максимально допустимый стереоскопический параллакс, вычисленный или заданный заранее). Positioning GUI elements in the space of three-dimensional scene, given the specified maximum depth of the scene (maximum stereoscopic parallax calculated or predetermined in advance). Данную операцию производят итерационно и повторяют на каждом кадре. This operation is carried out iteratively and repeated at every frame. В зависимости от суммарного количества элементов графического интерфейса выбирают минимальный шаг, т.е. minimum step is selected depending on the total number of GUI elements, i.e. минимальное расстояние по продольной оси наблюдения (продольной оси объекта камеры в системе координат объекта класса Node, к которому прикреплен объект камеры) между смежными (соседними) элементами графического интерфейса, что позволяет осуществлять комфортное стереоскопическое отображение интерфейса для пользователя при любом количестве элементов графического интерфейса. the minimum distance along the longitudinal axis of observation (the longitudinal axis of the object in the camera coordinate system Node class object, which is attached to the camera object) between the adjacent (neighboring) items GUI that enables stereoscopic display of a comfortable interface for the user with any number of GUI elements. На каждой итерации (на каждом кадре визуализации) для всех объектов трехмерной сцены попарно проверяют данное минимальное расстояние. In each iteration (every imaging frame) for all objects in the three-dimensional scene pairwise you check this minimum distance. В случае, если минимальное расстояние оказывается меньше рассчитанного минимального шага, производят корректировку положения в пространстве трехмерной сцены всех объектов, что в некоторых случаях требует перестроения графа сцены. If the minimum distance is less than the calculated minimum step, make adjustments to the position in space of three-dimensional scenes of all objects, which in some cases require a restructuring of the scene graph. При этом заново запускают функцию разбиения пространства. In this re-launch of the space partition function.

Выполняют подсчет количества перекрывающих друг друга элементов графического интерфейса. Perform the count of the number of overlapping GUI elements. Перекрывающие друг друга элементы объединяют в множества. Overlapping elements are combined in plurality. Из всех таких множеств выбирают такое множество, которое содержит максимальное количество элементов. Of all of these sets is selected so set that contains the maximum number of elements. В случае, если количество элементов выбранного множества оказывается равным или большим максимального количества элементов, производят изменение минимального шага и полное перестроение графа трехмерной сцены, что требует выполнения функции разбиения пространства. In case the number of the selected plurality of elements is equal to or greater than the maximum number of elements that produce the minimum step change and complete three-dimensional scene graph changeover that requires execution of the function of the partition space. Максимальное количество элементов вычисляют по формуле The maximum number of elements calculated by the formula

С=[(Pmax/Smin) - М]+D, C = [(Pmax / Smin) - M] + D,

где Pmax - максимальный стереоскопический параллакс, Smin - минимальный шаг на текущем кадре визуализации, М - суммарное количество отображаемых на текущем кадре визуализации элементов графического интерфейса, D - т.н. where Pmax - maximum stereoscopic parallax, Smin - minimum step current imaging frame M - total number of the current frame displayed on the visualization GUI elements, D - the so-called буферное количество возможных элементов помимо существующих, которое задается заранее. buffer number of possible elements in addition to the existing ones, which is set in advance. Параметр D введен для ускорения работы программы, поскольку в таком случае перестроение трехмерной сцены производят не при каждом изменении количества элементов, а лишь в том случае, если величина такого изменения превышает D. Параметр D устанавливают на этапе инициализации графической подсистемы и не изменяют в процессе выполнения программы. D parameter introduced to speed up the program, since in that case the three-dimensional scene changeover is not produced at each change of the number of elements, but only if the magnitude of the change exceeds D. The parameter D is set during initialization of the graphics subsystem and do not change during execution programs.

Определяют положение системного курсора операционной системы, производят сокрытие (исключение из потока визуализации) маркера системного курсора путем вызова функции ShowCursor (BOOL bShow) и установкой параметра bShow в значение FALSE. Determine the position of the operating system of the system cursor, produce concealment (exception of flow visualization) marker system cursor by calling ShowCursor (BOOL bShow) function and setting bShow parameter value FALSE. Создают специальный элемент графического интерфейса в виде объекта в пространстве трехмерной сцены, расположенном на видимой поверхности пересекаемого элемента графического интерфейса. Create a special element of the graphical interface in the form of the object in the space of three-dimensional scene, located on the visible surface of the GUI element traversed. Для определения пересечения курсора и элементов интерфейса выполняют построение трехмерного вектора, соединяющего точку в плоскости экрана (плоскость минимального параллакса), соответствующую позиции системного курсора и соответствующей точки на плоскости наблюдения. To determine the intersection of the cursor and interface elements operate building a three-dimensional vector connecting the point in the plane of the screen (the minimum parallax plane) corresponding to the cursor position system and the corresponding point on the observation plane. Определяют ближайший к наблюдателю элемент графического интерфейса, поверхность которого пересекает полученный вектор, после чего элемент графического интерфейса, соответствующий курсору, перемещают в определенную таким образом точку. Determine the closest to the viewer GUI component, which surface intersects the resulting vector, then GUI component corresponding to the cursor is moved in the thus determined point. В случае, если пересечения не обнаружено, элемент-курсор помещают в точку, соответствующую пересечению полученного вектора с плоскостью, расположенной от плоскости наблюдения на расстоянии, равном (С·Smin)/2. If the intersection is not found, the cursor-placed element to the point corresponding to the intersection of the resulting vector with the plane extending from the observation plane at a distance of (C · Smin) / 2.

Определяют необходимость изменения детализации элементов графического пользовательского интерфейса в зависимости от порядка следования таковых либо в зависимости от производительности аппаратной части и текущей нагрузки на таковую со стороны самого приложения либо сторонних приложений на текущей итерации визуализации, для поддержания величины задержки обработки одного кадра в графическом буфере в диапазоне, сравнимом с интервалом времени смены кадров на мониторах. Determine the necessity of change of detail elements of a graphical user interface depending on the order of those or depending on the performance of the hardware and the current load on the per se by the application or third party applications on the current visualization iteration, to maintain the processing delay value of one frame in the graphic buffer ranging comparable to the time interval of frame rate on the monitor. Для этого задействуют функции API операционной системы. To do this, employ features of the operating system API. Величину текущей задержки обработки кадра определяют по меткам процессорного времени (функция microtime()). The magnitude of the current processing frame delay determined by the CPU marks (feature microtime ()).

Определение того, когда необходимо производить вывод измененных изображений в соответствующее окно приложения, может производиться способом, состоящим в обеспечении синхронного изменения изображения с достаточно высокой частотой, обеспечивающей комфортное восприятие изображения пользователем. Determining when to produce an output corresponding to the modified image in the application window, the method may be carried out, consisting in providing synchronous change images with sufficiently high frequency, providing a comfortable perception of the user image. Приемлемой является частота 60 Гц, совпадающая с частотой обновления кадров ЖК-мониторами. A suitable frequency is 60 Hz, which coincides with a frame refresh rate of the LCD. В этом случае применяется программируемый таймер, использующий функцию MicroTime(). In this case, use a programmable timer, using MicroTime () function. Обработчик событий таймера запускает средства формирования обновленных изображений. Handler starts the timer event generating means updated images. Достоинством такого способа является его простота. The advantage of this method is its simplicity. Дополнительно можно использовать то, что, в соответствии с системными соглашениями Windows, при изменении положения или размера окна создается системное сообщение, которое может быть получено приложением [http://msdn.microsoft.com/en-us/library/ms644990%28VS.85%29.aspx]. Additionally, you can use the fact that, in accordance with the agreements of the Windows system, by changing the position or size of the window created by a system message, which can be obtained application [http://msdn.microsoft.com/en-us/library/ms644990%28VS. 85% 29.aspx]. Для этого приложение может использовать одну из нескольких функций, самой распространенной из которых является WndProcQ. To do this, the application can use one of several functions, the most common of which is WndProcQ. При отсутствии сообщения принимается решение, что вывод измененных изображений, изменения которых связаны исключительно с изменением конфигурации окон, не требуется. In the absence of communication it is decided that the output of the modified image, changes which relate solely to changes in the configuration window is not required.

При необходимости осуществляют комбинирование различного стереоскопического контента на поверхности элементов графического интерфейса. If necessary, performed combining different stereoscopic content on a graphical user interface elements surface. Подробнее этот вопрос рассмотрен в п.4. Details This is discussed in section 4.

Выполняют непосредственно визуализацию трехмерной сцены и передают полученное изображение либо пару изображений (в зависимости от выбранной технологии стереоскопического отображения) в графический буфер видеопроцессора. Operate directly render three-dimensional scene and transmitting an obtained image or a pair of images (depending on the chosen technology stereoscopic display) in the video image buffer. Для этого задействуют функции класса HardwareBuffer графического движка. For this class of functions involve HardwareBuffer graphics engine. Подробнее данный процесс рассмотрен в п.5. Details the process discussed in paragraph 5.

Определяют часть окна программы, перекрываемую окнами других приложений. Determine the portion of the window overlapping the windows of other applications. Для этого определяют координаты левого верхнего угла и размеры окна стереоскопического приложения с помощью соответствующих функций WinAPI Windows.Forms.LocationQ и Windows.Forms.Size(). To determine the coordinates of the upper left corner of the window and the size of stereoscopic application through appropriate functions WinAPI Windows.Forms.LocationQ and Windows.Forms.Size (). Для каждого стороннего окна определяют прямоугольную область пересечения с рабочей областью приложения, представленную в программе объектом типа Rectangle [http://msdn.microsoft.com/ru-ru/library/system. For each side of the window define a rectangular area of ​​the intersection with the working area of ​​the application submitted in a program object of type Rectangle [http://msdn.microsoft.com/ru-ru/library/system. drawing.rectangle.aspx]. drawing.rectangle.aspx]. После этого объединяют все прямоугольники, соответствующие перекрывающим областям окон сторонних приложений, в результате чего получают координатное описание фигуры перекрытия, соответствующей перекрываемой области окна стереоскопического приложения. Then combined all the rectangles corresponding to the overlapping area of ​​third-party applications, windows, resulting in a coordinate description of overlapping shapes corresponding to the overlapped area of ​​the window stereoscopic applications. В трехмерной сцене создают спрайт, соответствующий указанной фигуре перекрытия. The three-dimensional scene create a sprite that matches the specified ceiling figure. Для конвертации экранных координат в координаты трехмерной сцены используют функцию ConvertPixelsToClipSpace(). To convert screen coordinates to coordinates of three-dimensional scenes using ConvertPixelsToClipSpace () function. После этого из-за изменения состава графа сцены совершают переразбиение пространства трехмерной сцены таким образом, что полигоны, находящиеся по отношению к камере за поверхностью спрайта, исключаются из визуализации, что приводит к существенному ускорению процесса рендеринга при оконном режиме работы стереоскопического приложения. Thereafter, due to changes in the composition of a scene graph commit repartition space three-dimensional scene in such a way that the polygons are relative to the camera behind the surface of the sprite are excluded from imaging, resulting in a significant acceleration of the rendering process when a stereoscopic window mode application. Созданный спрайт закрашивают текстурой, которую создают из изображения, сформированного для первого глаза. The created paint over sprite structure, which is created from an image generated for the first eye. Подробнее это описано в п.6. Details described in claim 6.

Корректировка изображения может приводить к так называемому расхождению (tearing) при смене кадров на экранах мониторов [http://www.anandtech.com/show/2803/5]. Adjustment of the image may lead to the so-called discrepancy (tearing) when changing frames on monitor screens [http://www.anandtech.com/show/2803/5]. Суть этого явления состоит в том, что при выдаче очередного кадра на экран монитора начало кадра может соответствовать старому изображению, а конец кадра - новому изображению. The essence of this phenomenon lies in the fact that the issuance of the next frame on the screen start of a frame may correspond to the old image and the end of frame - new image. В этом случае на экране монитора появляется горизонтальная полоса, разделяющая два плохо стыкующихся между собой изображения. In this case, the monitor screen displays a horizontal bar that separates two bad abutting each other image. Для устранения этого эффекта при формировании изображений для первого и второго глаза и при корректировке визуальных атрибутов изображения дополнительно может использоваться синхронизация выполнения этих операций со сменой кадров на мониторах. To eliminate this effect, in the formation of images for the first and the second eye and for adjusting the visual attributes of the image may further be used to perform these operations synchronization with the change of the frame on the monitors. Более подробно этот вопрос рассматривается в п.7. More details on this issue is addressed in paragraph 7.

В соответствии с частотой смены кадров мониторов формируют сигнал изображения интерфейса для первого глаза на первом выходе видеоконтроллера и одновременно формируют сигнал изображения для второго глаза на втором выходе видеоконтроллера. In accordance with the frequency change monitors frames form an interface image signal for the first eye at the first output video controller and simultaneously forming the image signal for the second eye on the second output of the video controller. Клонирование изображения для второго глаза осуществляется видеоконтроллером за счет выполненной настройки видеоконтроллера. Cloning image for a second eye video controller is performed by executing a video controller settings. При этом клонированное изображение накладывается на изображение, сформированное для второго глаза, с помощью спрайта, что дает окончательное изображение для второго глаза. Thus cloned image is superimposed on the image formed for the second eye by means of the sprite, which gives the final image for the second eye. При этом на первом и на втором выходах видеоконтроллера получаются соответственно цифровой сигнал изображения для первого и для второго глаза, имеющий формат DVI. At the first and second video controller outputs respectively obtained digital image signal for the first and for the second eye having a DVI format. В зависимости от используемого стереомонитора эти сигналы либо непосредственно подают на входы ЖК-мониторов, либо дополнительно перед подачей на монитор производят преобразование цифрового сигнала в аналоговый с помощью конвертера DVI в VGA. Depending on the stereo monitor these signals are fed either directly to the inputs of LCD displays or further before being fed to the monitor produces a digital signal into an analog converter via DVI to VGA.

В процессе работы компьютера непрерывно подают изображения для первого и второго глаза с первого и второго выходов видеоконтроллера на экраны указанных дисплеев. In operation, the computer continuously fed images for the first and second eyes from the first and second outputs of said video controller on the display screens. Пользователь рассматривает изображение на экране стереомонитора через стереоочки. The user views the image on the stereo monitor screen through stereoscopic glasses.

Докажем, что при выполнении описанного способа достигается основной технический результат, состоящий в обеспечении стереоскопического графического интерфейса пользователя. We show that under the disclosed method main technical result is achieved, consisting in providing stereoscopic graphical user interface.

Рассмотрим сначала статический случай, когда не производится никакого перемещения или изменения размеров окон. Let us first consider the static case, when you do not make any move or resize windows. В соответствии с установленным режимом работы видеоконтроллера производится расширение изображения с основной поверхности на оба выхода видеоконтроллера, сигналы с которых подаются на первый и второй монитор соответственно. In accordance with the operation mode set by the video controller is performed with the main extension of the image surface on both outputs video controller, the signals from which are supplied to first and second monitor, respectively. Следовательно, во всех местах стереоизображения, которые не накрыты спрайтом, пользователь будет видеть обоими глазами одно и то же изображение. Therefore, in all areas of the stereo image, are not covered by the sprite, the user will see with both eyes the same image. Поскольку форма и положение спрайта в экранных координатах соответствует областям клиентской части стереоокна, закрытым другими окнами, то в таких областях вместо содержимого стереоскопического окна будет видно содержимое изображения для первого глаза. Since the shape and position of the sprite in screen coordinates correspond to areas of client-side stereo window, other windows closed, in such areas instead of stereoscopic content window will be seen the contents of the image to the first eye. Таким образом, все окна, закрывающие какую-либо часть стереоокна или расположенные вне стереоокна, будут видны двум глазам пользователя одинаково. Thus, all the windows that cover any part of the stereo window or located outside the stereo window will be seen by the two eyes of the user alike. Тем самым пользователь в стереоочках будет хорошо видеть все другие окна как плоские изображения, расположенные в одной плоскости. Thus, a user in the stereoscopic glasses will be good to see all the other windows as flat images located in the same plane. С другой стороны, в тех местах стереоизображения, для которых задана прозрачность спрайта, поскольку спрайт используется только для второго выхода видеоконтроллера, изображение для первого глаза будет совпадать с изображением в окне, а изображение для второго глаза будет совпадать с изображением на спрайте. On the other hand, in the stereo field, for which the specified sprite transparency because the sprite is used only for the second video controller outputs an image for a first eye will coincide with the image in the window, and the image for the second eye image will coincide with the sprite. Следовательно, в области клиентской части окна со стереоизображением изображение для первого и второго глаза совпадают с ранее сформированными изображениями для первого и второго глаза, т.е. Consequently, in the client of the window image with stereo image for the first and second eyes coincide with the previously generated image to the first and second eye, i.e. пользователь будет видеть стереоизображение. the user will see a stereo image.

Рассмотрим теперь, что будет происходить при изменении изображения в стереоокне в случае, когда размеры и положение стереоокна и других окон не меняются. Let us now consider what happens when you change the image in the stereo window when the size and position of the stereo window and other windows remain unchanged. Изменения изображения в стереоокне происходят в соответствии с логикой работы приложения, создающего стереоизображение. Change the image in stereo window occur in accordance with the logic of the application, creating a stereo image. В соответствии с системными соглашениями Windows, при изменении положения или размера окна создается системное сообщение, которое может быть получено приложением [http://msdn.microsoft.com/en-us/library/ms644990%28VS.85%29.aspx]. In accordance with the system Windows conventions, when the position or size of the window system message is generated, which can be obtained by the application [http://msdn.microsoft.com/en-us/library/ms644990%28VS.85%29.aspx]. Для этого приложение может использовать одну из нескольких функций, самой распространенной из которых является WndProcQ. To do this, the application can use one of several functions, the most common of which is WndProcQ. В этом случае выполнение приложением вышеописанного этапа определения необходимости производить вывод изображений в соответствующее окно указанного приложения и на спрайт приводит к принятию решения о том, что необходимо производить вывод изображений. In this case, the implementation of the application of the above definition phase need to produce an output image in the corresponding window of said application and Sprite leads to a decision that you must make the image output. После этого приложение производит вывод измененных изображений. The application produces output images changed. Для измененных изображений имеет место все, что было описано в предыдущем абзаце, т.е. To change the image takes place everything that was described in the previous paragraph, ie в этом случае пользователь будет видеть правильное стереоскопическое изображение интерфейса с измененным стереоизображением в клиентской части окна приложения. In this case, the user will see the correct stereoscopic image with a modified interface stereo image to the client side of the application window. Если по логике работы приложения происходит непрерывное изменение стереоизображения, например в случае проигрывания на компьютере стереофильма, качество изображения будет существенно зависеть от синхронности обновления изображения для первого и второго глаза. If the logic of the application is a continuous change in stereo, for example in the case of stereoscopic playback on a computer, the picture quality will be substantially dependent on the synchronism of update images for the first and second eyes.

Поскольку обновление кадров на обоих мониторах происходит с частотой обновления кадров монитора, которая составляет порядка десятков герц, достаточно, чтобы цикл обновления изображения на первом и втором выходах укладывался в интервал времени порядка 10 мс, что вполне реально для современных компьютеров и видеоконтроллеров. Since the frame update occurs on both monitors with a refresh rate of the monitor frame, which is of the order of tens of hertz, enough to refresh cycle to first and second outputs fit in the time interval of 10 ms, which is quite possible for modern computers and video controllers.

Наконец, рассмотрим поведение стереоизображения при изменении положения или размеров стереоокна или других окон. Finally, consider the behavior of the stereo image by changing the position or the stereo window or other window sizes. При изменении положения или размеров стереоокна или других окон выполнение приложением вышеописанного этапа определения необходимости производить вывод изображений в соответствующее окно указанного приложения и на оверлей приводит к обнаружению факта возникновения события изменения формы или положения какого-либо окна, в т.ч. When changing the position or size stereo window or other windows of the above application execution determining step necessary to produce output images corresponding to the specified application window overlay and leads to the discovery of the fact of occurrence of an event changing the shape or position of a window, including окна стереоскопического приложения. windows stereoscopic applications. В этом случае производится корректировка изображения на втором выходе с учетом нового расположения окон, и после выполнения всех действий, связанных с формированием изображений, пользователь будет видеть правильное стереоизображение, как и в вышерассмотренном статическом случае. In this case, an adjustment image on the second output to reflect the new location of windows, and after all the activities related to the image formation, the user will see the correct stereo image, as in the case considered above the static. С учетом того, что обнаружение факта возникновения событий изменения формы и положения области клиентской части окна, в которое производится вывод стереоизображения, не закрытой другими окнами, происходит с задержкой, сравнимой с интервалом времени смены кадров на мониторах, время установления правильного изображения будет сравнимо с интервалом времени смены кадров на мониторах. Given the fact that the discovery of the fact of the occurrence of events changing the shape and position of the client part of the window, in which is made the output of the stereo, not covered by other windows, there is a delay comparable to the frame rate interval of time on the monitors, while establishing the correct image is compared with an interval time frame rates on the monitors. Таким образом, в самом худшем случае возможно некоторое мелькание или кратковременное неправильное изображение в тех частях экрана, в которых изменилось видимое окно, после чего установится правильное стереоизображение. Thus, in the worst case, there may be some short-term flicker or wrong image in the parts of the screen, which changed the visible window, then set the correct stereo. Если указанная задержка составляет только долю интервала времени смены кадров на мониторах, то время установления правильного изображения окажется меньше времени смены кадров на мониторах, и указанного кратковременного появления неправильного изображения не будет вообще. If this delay is only a fraction of the frame change interval on the monitors, while establishing the correct image is less than the time frame rates on the monitors, and said short-term appearance of improper image is not at all.

2. Установка режима работы видеоконтроллера 2. To set the video controller

В соответствии с действующей концепцией Windows (начиная с Windows 2000) драйверов видеокарт установка тех аспектов режима работы видеоконтроллера, которые связаны с управлением конфигурацией видеомониторов, возложена на мини-порт-драйвер видеокарт. In accordance with the current concept of Windows (since Windows 2000) video drivers installation of those aspects of the video controller mode that are associated with configuration management of video monitors, assigned to the mini-port driver cards. При этом установка режимов горизонтального кадрирования (panning), включающая в себя, в частности, неиспользование режима расширения рабочего стола на два монитора, в мини-порт-драйвере должна производиться только по запросам через панель управления [http://msdn.microsoft.com/en-us/library/ff570516.aspx]. In this setting mode the horizontal framing (panning), comprising, in particular, not using extended desktop mode to two monitors in a mini-port driver must be done only on request from the control panel [http://msdn.microsoft.com /en-us/library/ff570516.aspx]. По этой причине установка режима работы видеокарты производится пользователем в окне настроек монитора. For this reason, the installation mode of the video card made by the user to display the settings window.

Для установки режима работы видеокарты Nvidia GTX580 или Nvidia GTX 680 в контекстном меню рабочего стола выбирают пункт «Свойства» и в появившемся окне «Свойства: Экран» выбирают вкладку «Параметры». To set the graphics card Nvidia GTX580 or Nvidia GTX 680 in the desktop context menu choose "Properties" and in the window "Display Properties" tab, choose "Options". На этой вкладке щелчком мышью в кнопку «Дополнительно» открывают окно «Свойства: Модуль подключения монитора…», в котором выбирают вкладку «Мониторы», на которой выбирают необходимый режим работы видеоконтроллера. On this tab, click the mouse in the "Advanced" button opens a window "Properties: Plug and Play Monitor ..." in selecting the tab "Monitor", which selects the required operating mode the video controller.

Наряду с использованием мыши настройку режима работы видеокарты в окне «Свойства: Модуль подключения монитора» можно производить с помощью клавиатуры, используя клавишу Tab для перехода между кнопками окна и клавишу Enter вместо щелчка мышью. Along with using the mouse mode setting the graphics card in the "Properties of the monitor connection module" can be done with the keyboard, using the Tab key to move between windows button and the Enter key instead of a mouse click.

3. Создание программного интерфейса и установка уровня кооперации 3. Create a software interface and installation level cooperation

Способы создания программного интерфейса и установки уровня кооперации зависят от типа приложения, использующего вывод стереоизображений (полноэкранное, оконное или комбинированное). Methods of creating a software interface, and set the level of cooperation depend on the type of application that uses the output of stereo images (full screen panes or combined). Эти способы рассматриваются в пп 3.1, 3.2 и 3.3 соответственно. These methods are discussed in paragraphs 3.1, 3.2 and 3.3 respectively.

3.1. 3.1. Полноэкранные приложения Full-screen applications

Приложения с полноэкранным эксклюзивным режимом создают путем инициализации Direct3D определением устройства D3D pDirect3D=Direct3DCreate9(D3D_SDK_VERSION), указанием режима D3DDISPLAYMODE Display, вызовом функции pDirect3D ->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &Display) и определением параметров D3DPRESENT_PARAMETERS Direct3DParametr: Direct3DParametr.FullScreen_RefreshRateInHz=Display.RefreshRate; Applications with full screen exclusive mode is generated by the initialization determination unit Direct3D D3D pDirect3D = Direct3DCreate9 (D3D_SDK_VERSION), indicating the mode D3DDISPLAYMODE Display, calling function pDirect3D -> GetAdapterDisplayMode (D3DADAPTER_DEFAULT, & Display) and determining the parameters D3DPRESENT_PARAMETERS Direct3DParametr: Direct3DParametr.FullScreen_RefreshRateInHz = Display.RefreshRate;

Direct3DParametr.Windowed=FALSE. Direct3DParametr.Windowed = FALSE.

Эти параметры удерживают приложение на переднем конце z-порядка окон и запрещают GDI рисовать поверх окна приложения. These parameters hold the application on the front end of the z-order of windows and prohibit the GDI to draw on top of the application window.

При создании окна операционная система Windows возвращает приложению указатель созданного окна, при обработке которого производят создание программного интерфейса и установку уровня кооперации. When you create a windows operating system Windows application returns a pointer to the created window, at which the processing is done creating the software interface and the installation level of cooperation. Создание программного интерфейса включает в себя: Creating a software interface includes:

- получение списка всех драйверов Direct3D; - get a list of all the Direct3D drivers;

- выбор драйвера Direct3D; - Select Direct3D driver;

- инициализацию Direct3D с использованием выбранного драйвера и установку уровня кооперации Direct3DParametr.Windowed; - initialization Direct3D using the selected driver and the installation level Direct3DParametr.Windowed cooperation;

- получение списка поддерживаемых видеорежимов; - a list of supported video modes;

- выбор исходного видеорежима; - selection of source video mode;

- активизацию выбранного видеорежима. - activation of the selected display mode.

Эти действия выполняют известными способами, описанными, например, в [http://www.codesampler.com/d3dbook/chapter_04/chapter_04.htm]. These actions are performed by known methods described, for example, in [http://www.codesampler.com/d3dbook/chapter_04/chapter_04.htm].

3.2. 3.2. Оконные приложении Window application

Как и в случае полноэкранного режима, при создании главного окна приложения операционная система Windows возвращает приложению указатель созданного окна, при обработке которого производят создание программного интерфейса и установку уровня кооперации. As in the case of full-screen mode, when you create a main application window Windows operating system returns a pointer to the application created a window in which the processing is done creating the software interface and the installation level of cooperation. В отличие от полноэкранного приложения, создание программного интерфейса для оконного приложения включает в себя: In contrast to the full-screen applications, the creation of a software interface for window applications includes:

- инициализацию Direct3D с использованием уже задействованного в системе драйвера и установку уровня кооперации DirectSDParametr. - Direct3D initialization using already involved in the driver system and installation level DirectSDParametr cooperation. Windowed=TRUE; Windowed = TRUE;

- получение информации о текущем видеорежиме. - obtaining information about the current video mode.

Эти действия выполняют известными способами, описанными, например, в [http://www.morrowland.com/apron/tutorials/d3d/d3d_window.php]. These actions are performed by known methods described, for example, in [http://www.morrowland.com/apron/tutorials/d3d/d3d_window.php]. При этом в функции инициализации Direct3D в качестве глобального идентификатора драйвера указывают 0, что означает, что используется видеокарта, задействованная в данный момент в системе. In the Direct3D initialization function as a global driver ID are set to 0, which means that the card is used, involved in the present system.

3.3. 3.3. Комбинированные приложения combined application

В соответствии с [http://www.rastertek.com/dxlltut03.html] комбинированное приложение позволяет переключаться между оконным и полноэкранным режимами по ходу работы приложения, которое можно запустить в оконном режиме. In accordance with [http://www.rastertek.com/dxlltut03.html] Combined application to toggle between full-screen mode and windowed in the course of the application that can be run in a window mode. Если же приложение работает слишком медленно, то пользователь имеет возможность переключиться в полноэкранный режим. If the application is too slow, then the user has the possibility to switch to full screen mode. Приложение запускается в полноэкранном режиме, но в любой момент работы программы можно переключиться в альтернативный режим, нажав комбинацию клавиш<Alt>+<Enter>, о чем пользователя обычно информирует подсказка, располагающаяся в левом верхнем углу экрана. The application is started in full screen mode, but at any time during the program you can switch to an alternative mode by pressing the key combination <Alt> + <Enter>, about what the user is usually informed clue, located in the upper left corner of the screen.

Для комбинированного приложения при переключении режимов повторяют весь способ инициализации заново для нового режима, предварительно выполнив уничтожение объекта Direct3D и окна, существовавших до переключения режима. For the combined application when switching modes is repeated all the way to re-initialize the new regime, after completing the destruction of Direct3D object and windows that existed before switching mode. Для этого освобождают все ресурсы, созданные при работе до переключения режима, с помощью функций pDirect3DDevice -> ReleaseQ и pDirect3D -> ReleaseQ из соответствующих классов, после чего создают все необходимые ресурсы в новом режиме и устанавливают уровень кооперации, соответствующий новому режиму. To do this, release all resources created when working to change the regime, with the help of pDirect3DDevice functions -> ReleaseQ and pDirect3D -> ReleaseQ of the respective classes, and then create all the necessary resources in the new regime and establish the level of cooperation, corresponding to the new regime.

4. Совмещение различного стереоскопического графического контента при необходимости вывода стереоскопических изображений или стереоскопического видеопотока в рамках стереоскопического графического пользовательского интерфейса выполняют следующие операции. 4. Combination of various stereoscopic image content, if necessary, withdrawal of stereoscopic images or stereoscopic video stream within the stereoscopic graphic user interface performs the following tasks.

Определяют или создают элемент-приемник в трехмерной сцене, представляющий собой прямоугольный элемент графического пользовательского интерфейса, представленный в виде набора полигонов, на поверхности которого будут отображать стереоизображение либо стереоскопический видеопоток. Define or create a receiver element in a three-dimensional scene, which is a rectangular element of the graphical user interface presented as a set of polygons, the surface of which will display a stereo image or a stereoscopic video stream. Определение такого элемента осуществляют либо на основании действий пользователя, либо автоматически при наличии среди элементов интерфейса свободного (незанятого в текущий момент элемента-приемника). Determination of such an element is performed either based on a user action or automatically in the presence of elements among free interface (unallocated currently receiver element). При отсутствии такового элемент-приемник создают средствами графического движка автоматически путем определения объекта класса Node, к которому прикрепляют объекты классов Entity [http://www.ogre3d.org/docs/api/html/classOgre_l_lEntity.html] и ManualObject [http://www.ogre3d.org/tikiwiki/ManualObject]. If no such element receiver creates graphics engine by means of automatically determining Node object class to which class objects attached Entity [http://www.ogre3d.org/docs/api/html/classOgre_l_lEntity.html] and ManualObject [http: / /www.ogre3d.org/tikiwiki/ManualObject].

При необходимости размеры выбранного элемента-приемника изменяют таким образом, чтобы соотношение сторон прямоугольной плоской поверхности указанного элемента-приемника соответствовало соотношению сторон стереоизображения или соотношению сторон кадра видеопотока. If necessary dimensions selected receiver elements varies so that the aspect ratio of the rectangular planar surface of said receiver element corresponds to the aspect ratio or aspect ratio of the stereo video frame. Изменение размеров элемента-приемника производят путем исполнения вершинных или геометрических шейдеров, либо напрямую указывают новые координаты для каждой из вершин трехмерного меша, представленного в программе объектом класса ManualObject. Changing the receiver element size produced by executing vertex or geometry shaders, either directly indicate the new coordinates for each vertex of the three-dimensional mesh represented in the program object class ManualObject.

Производят вычисление стереоскопического параллакса элемента-приемника по формуле: Calculates the stereoscopic parallax element receiver according to the formula:

Ре=(Pmax·Se)/Smin, Re = (Pmax · Se) / Smin,

где Pmax - максимальный стереоскопический параллакс, Se - глубина элемента-приемника, Smin - минимальный шаг на текущем кадре визуализации. where Pmax - maximum stereoscopic parallax, Se - depth of the receiver element, Smin - minimum step current imaging frame.

Затем вычисляют минимальный стереоскопический параллакс стереоизображения либо стереоскопического видеопотока. Then calculate the minimum stereoscopic parallax stereo or stereoscopic video stream. Для этого определяют характерные пары точек изображения, вычисляют вектор расхождения для каждой пары характерных точек в двумерном пространстве изображения. To determine the characteristic of the pairs of image points, calculating a vector difference for each pair of feature points in two-dimensional image space. Далее определяют пару характерных точек с минимальной длиной вектора. Next, define a pair of feature points with the minimum vector length. Длина вектора определенной пары точек определяется как минимальный стереоскопический параллакс изображения. The length of the vector defined pairs of points is determined as the minimum parallax stereoscopic images.

Проверяют условие превышения стереоскопическим параллаксом элемента-приемника минимального стереоскопического параллакса стереоизображения либо стереоскопического видеопотока. Check the condition of exceeding stereoscopic parallax element receiver minimum stereoscopic parallax stereo or stereoscopic video stream. В случае подтверждения условия элемент-приемник перемещают в пространстве трехмерной сцены по направлению к точке наблюдения по продольной оси наблюдения на расстояние, равное минимальному шагу Smin, тем самым уменьшая стереоскопический параллакс элемента-приемника. In case of confirmation of conditions receiver element is moved in three-dimensional space of the scene towards the observation point along the longitudinal axis of the observation by a distance equal to the minimum step Smin, thereby reducing the parallax of a stereoscopic-receiver element. Данную операцию повторяют до тех пор, пока стереоскопический параллакс элемента-приемника не окажется меньшим или равным минимальному стереоскопическому параллаксу стереоизображения или стереоскопического видеопотока. This operation is repeated as long as the stereoscopic parallax receiver element would be not less than or equal to the minimum stereoscopic parallax stereo or stereoscopic video stream.

В случае, если стереоизображение или стереоскопический видеопоток являются комбинированными, т.е. If stereo or stereoscopic video stream are combined, i.e. состоящими из двух и более однотипных графических ресурсов, для каждого из которых определена маска прозрачности (альфа-канал), производят следующие действия. consisting of two or more same type image resources for each of which is defined mask transparency (Alpha), produce the following steps.

Вычисляют минимальный стереоскопический параллакс каждого из стереоизображений либо стереоскопических видеопотоков, образующих комбинированное стереоизображение либо комбинированный стереоскопический видеопоток вышеуказанным методом. Calculating a minimum stereoscopic parallax of each of the stereo images or stereoscopic video streams, forming a combined stereo or stereoscopic video stream is combined to the aforementioned method. Таким образом, для каждого элемента комбинированного стереоскопического графического ресурса повторяют этап 2 в части вычисления минимального стереоскопического параллакса. Thus, for each element of the combined stereoscopic image asset repeat step 2 in calculating the minimum portion stereoscopic parallax.

Создают дополнительные поверхности элемента-приемника, каждая из которых расположена соответственно минимальному стереоскопическому параллаксу стереоизображения или стереоскопического видеопотока и представляет собой объект класса SubEntity, связанный с объектом класса Entity, соответствующим элементу-приемнику, аналогично созданию самого элемента-приемника. Create additional surface-receiver element, each of which is disposed respectively minimum stereoscopic parallax stereo or stereoscopic video stream and represents SubEntity object class associated with the object class Entity corresponding receiver element, similar to the creation of the receiver element. Глубину каждой из поверхностей определяют по формуле: The depth of each of the surfaces is determined by the formula:

Zs=[\(Pr-Ре)|/Smin]+Ze, Zs = [\ (Pr-Fe) | / Smin] + Ze,

где Pr - минимальный стереоскопический параллакс стереоизображения или стереоскопического видеопотока, Ре - стереоскопический параллакс элемента-приемника, Smin - минимальный шаг, Ze - глубина элемента-приемника. where Pr - minimum stereoscopic parallax stereo or stereoscopic video stream, Fe - stereoscopic parallax receiver element, Smin - minimum step, Ze - depth of the receiver element.

Проверяют условие параллельности векторов нормалей поверхностей элемента-приемника и продольной оси наблюдения. Check the condition of the parallel surfaces normal vectors receiver element and the longitudinal axis of observation. В случае непараллельности таковых положение и размер дополнительных поверхностей элемента-приемника корректируют при помощи афинных преобразований либо путем задания кватернионов преобразования таким образом, чтобы нормали указанных поверхностей и продольной оси наблюдения были параллельны. In the case of non-parallelism such position and amount of additional element surfaces receiver is corrected using the affine transformation or by specifying a quaternion conversion so that the normal of said surfaces and a longitudinal axis parallel to the observation. Осуществление преобразований производят путем вызова функций D3DXMatrixPerspectiveFovLH и pDirect3DDevice->SetTransform(D3DTS_PROJECTION, &MatrixProjection). Implementation transformation is performed by calling functions and D3DXMatrixPerspectiveFovLH pDirect3DDevice-> SetTransform (D3DTS_PROJECTION, & MatrixProjection).

Производят загрузку необходимых графических ресурсов для отображения элемента-приемника, после чего средствами графического движка осуществляют визуализацию трехмерной сцены, содержащей элемент-приемник. Produce load required to display graphic resources receiver element, after which the graphic engine means visualized three-dimensional scene comprising a receiver element.

5. Визуализация трехмерной сцены 5. Visualization of three-dimensional scene

Визуализация трехмерной сцены выполняется средствами графического движка. Visualization of three-dimensional scene is performed by means of the graphics engine. В случае использования API Direct3D визуализация в общем случае может выполняться с помощью программного кода, аналогичного следующему. In the case of using API Direct3D visualization may generally be performed using software code similar to the following.

VOID RenderingDirect3D() VOID RenderingDirect3D ()

{ {

if(pDirect3DDe vice=NULL) // если интерфейс создан, то можно приступать к рендерингу if (pDirect3DDe vice = NULL) // if the interface is created, you can start rendering

return; return;

// чистим задний буфер // clean the back buffer

pDirect3DDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(39, 64, 139), 1.0f, 0); pDirect3DDevice-> Clear (0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB (39, 64, 139), 1.0f, 0); //(23, 95, 54) // (23, 95, 54)

pDirect3DDevice->BeginScene(); pDirect3DDevice-> BeginScene ();

// указываем источник для визуализации // specify the source for visualization

pDirect3DDevice->SetStreamSource(0, pBufferVershin, 0, sizeof(CUSTOMVERTEX)); pDirect3DDevice-> SetStreamSource (0, pBufferVershin, 0, sizeof (CUSTOMVERTEX));

// указываем тип вершин // specify the type of vertex

pDirect3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX); pDirect3DDevice-> SetFVF (D3DFVF_CUSTOMVERTEX);

pDirect3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, CIRCLE_RES*2); pDirect3DDevice-> DrawPrimitive (D3DPT_TRIANGLESTRIP, 0, CIRCLE_RES * 2);

// Отрисовка элементов // Render elements

pDirect3DDevice->SetStreamSource(0, pBufferObjects, 0, sizeof(CUSTOMVERTEX)); pDirect3DDevice-> SetStreamSource (0, pBufferObjects, 0, sizeof (CUSTOMVERTEX));

pDirect3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX); pDirect3DDevice-> SetFVF (D3DFVF_CUSTOMVERTEX);

pDirect3DDevice->DrawPrimitive(D3DPT_LINELIST, 0, 3); pDirect3DDevice-> DrawPrimitive (D3DPT_LINELIST, 0, 3);

pDirect3DDevice->EndScene(); pDirect3DDevice-> EndScene ();

pDirect3DDevice->Present(NULL, NULL, NULL, NULL); pDirect3DDevice-> Present (NULL, NULL, NULL, NULL); // Вывод заднего буфера }. // Display back buffer}.

В случае отображения горизонтальной стереопары определяют два вьюпорта, для первого и правого глаза соответственно, и располагают их в позициях [0] и [0,5] относительно полного разрешения экрана по горизонтали. In the case of displaying two horizontal stereopair define a viewport, the first and the right eye, respectively, and have their positions in the [0] and [0.5] for the full screen resolution horizontally.

Вьюпортом называется проекция вида из камеры на поверхность рендера (в данном случае, на экран) - камера визуализирует сцену из вьюпорта и размещает результаты в некое подмножество целей прорисовки ("rendering target"), которое может занимать всю поверхность рендера или только часть этой поверхности. Viewport is the projection of the camera to the surface rendering (in this case, on the screen) - camera renders the scene from the viewport and places the results in a subset of vectorization purposes ( "rendering target"), which can occupy the entire surface rendering or only a part of this surface. Каждый вьюпорт имеет одну камеру в качестве источника и одну цель в качестве точки назначения. Each viewport has one camera as a source and a target as the destination. Одна камера имеет только 1 вьюпорт, но может иметь несколько целей. One camera has only 1 viewport, but may have several purposes. Вьюпорт также имеет порядок наложения Z-order (порядок расположения объектов по оси Z по отношению к наблюдателю), то есть, если имеется более одного вьюпорта на единственную цель прорисовки, и эти вьюпорты частично перекрываются, один из них должен перекрывать другой по некоторым предопределенным правилам [http://www.ogre3d.org/docs/api/html/classOgre_l_lViewport.html]. Viewport also has a stacking order of the Z-order (the order of location of objects on the Z axis with respect to the observer), that is, if there is more than one viewport on the sole purpose of drawing, and the viewports partially overlap, one of them should overlap the other to some predefined rules [http://www.ogre3d.org/docs/api/html/classOgre_l_lViewport.html].

В графическом движке Z-order для объектов класса Viewport определяют по следующим правилам: чем меньше параметр Z-order, тем дальше объект от наблюдателя. The graphics engine Z-order for the Viewport class of objects is determined by the following rules: the smaller the parameter Z-order, the further away the object from the observer. [http://www.ogre3d.org/docs/api/html/classOgre_l_lViewport.html]. [Http://www.ogre3d.org/docs/api/html/classOgre_l_lViewport.html].

Инициализацию создания вьюпортов производят с помощью вызова функции AddVieport в рамках графического движка: Initialization creating viewports produce by calling AddVieport functions within the graphics engine:

//Создание вьюпортов: // Create viewports:

Viewport* vp=mWindow->addViewport(mCamera,0,0,0,.5,1); Viewport * vp = mWindow-> addViewport (mCamera, 0,0,0, .5,1);

Viewport* vp2=mWindow->addViewport(mCamera2,1,.5,0,.5,1), Viewport * vp2 = mWindow-> addViewport (mCamera2,1, .5,0, .5,1),

которая устанавливает виртуальные камеры в сцене в нужные позиции и производит рендеринг из этих камер. which sets the virtual camera in the scene in the right position and makes the rendering of these cameras.

Первый параметр функции определяет используемую камеру, второй параметр - порядок наложения (Z-order) вьюпорта (чем выше, тем ближе к наблюдателю), причем этот параметр не может быть одним и тем же для двух (и более) вьюпортов, даже если они не перекрываются. The first parameter of the function specifies the used camera, the second parameter - the stacking order (Z-order) viewport (the higher, the nearer to the observer), and this parameter can not be the same for the two (or more) viewports, even if they are not overlap. Следующие 2 параметра - это положения левого и верхнего краев вьюпорта, которые выражаются числом из диапазона от 0 до 1. Последние 2 параметра - ширина и высота вьюпорта в процентном выражении относительно размеров экрана (они также выражены в диапазоне от 0 до 1). The following 2 parameters - position is left and top edges of the viewport, which expresses the number from the range from 0 to 1. The last two parameters - width and height of the viewport as a percentage relative to the screen sizes (they are also expressed in the range 0 to 1).

В случае вертикальной стереопары определяют два вьюпорта аналогично случаю горизонтальной стереопары и располагают их в позициях [0] и [0,5] относительно полного разрешения экрана по вертикали. In the case of vertical stereopair define two viewport similarly to the case of horizontal stereopair and have their positions in the [0] and [0.5] for the full vertical resolution of the screen.

В случае анаморфной горизонтальной стереопары стереопару сжимают по горизонтали вдвое при помощи пиксельного шейдера. In the case of horizontal stereopair anamorphic stereopair compressed horizontally twice using the pixel shader.

В случае анаморфной вертикальной стереопары стереопару сжимают по вертикали вдвое при помощи пиксельного шейдера. In the case of anamorphic vertical stereopair stereopair compressed vertically in half by using the pixel shader.

Чересстрочную стереопару получают из горизонтальной стереопары посредством применения шейдера, который на нечетные строки ставит нечетные строки одного вьюпорта, а на четные - нечетные строки второго вьюпорта. Interlaced stereo pair of horizontal stereopair obtained by applying a shader that for odd lines puts one viewport odd lines and the even - odd lines of the second viewport. Пример такого шейдера: An example of such shaders:

float4x4 WorldViewProj: WorldViewProjection; float4x4 WorldViewProj: WorldViewProjection;

float4 mainVS float4 mainVS

( (

float4 pos: POSITION, float4 pos: POSITION,

float2 uv: TEXCOORDO, float2 uv: TEXCOORDO,

out float2 oUv: TEXCOORDO out float2 oUv: TEXCOORDO

) )

: POSITION : POSITION

{ {

oUv=uv; oUv = uv;

return mul(pos, WorldViewProj); return mul (pos, WorldViewProj);

} }

float4 mainPS float4 mainPS

( (

float2 uv: TEXCOORDO, float2 uv: TEXCOORDO,

uniform sampler2D evenSample: register(s0), uniform sampler2D evenSample: register (s0),

uniform sampler2D oddSample: register(s1), uniform sampler2D oddSample: register (s1),

uniform float4 texSize uniform float4 texSize

) )

: COLOR : COLOR

{ {

float4 even=tex2D(evenSample, uv); float4 even = tex2D (evenSample, uv);

float4 odd=tex2D(oddSample, uv); float4 odd = tex2D (oddSample, uv);

return (fmod(uv.y * texSize.y, 2)=0) ? return (fmod (uv.y * texSize.y, 2) = 0)? even: odd; even: odd;

} }

6. Создание спрайта для кооперации окна приложения с окнами сторонних приложений 6. Create a sprite for cooperation of the application window with third-party applications windows

Для быстрого создания и визуализации спрайта (плоский объект с текстурой), применяют геометрический и пиксельный шейдеры. To quickly create and visualize a sprite (a flat object with a texture), applied geometry, and pixel shaders.

Создают геометрический шейдер на языке HLSL (High Level Shader Language). Create a geometry shader in HLSL language (High Level Shader Language).

Пример геометрического шейдера: EXAMPLE geometry shader:

[maxvertexcount(6)] [Maxvertexcount (6)]

void GS(point GS_INPUT point[1], inout TriangleStream<PS_INPUT>triStream) void GS (point GS_INPUT point [1], inout TriangleStream <PS_INPUT> triStream)

{ {

PS_INPUT vl,v2,v3,v4,v5,v6; PS_INPUT vl, v2, v3, v4, v5, v6;

//Для каждой вершины спрайта: // For each vertex of the sprite:

vp=float4(sprite[0].topLeft[0],sprite[0].topLeftill-sprite [0].dimensions[1],0,1); vp = float4 (sprite [0] .topLeft [0], sprite [0] .topLeftill-sprite [0] .dimensions [1], 0.1);

vt=float2(0,1); vt = float2 (0,1);

triStream.Append(v); triStream.Append (v);

} }

После создания геометрического шейдера задают функцию конвертирования экранных координат в координаты трехмерной сцены. After creating geometry shader set function of converting the coordinates into screen coordinates of the three-dimensional scene.

Пример такой функции: An example of such a function:

inline float convertPixelsToClipSpace(const int pixelDimension, const int pixels) inline float convertPixelsToClipSpace (const int pixelDimension, const int pixels)

{ {

return (float)pixels/pixelDimension*2 -1; return (float) pixels / pixelDimension * 2 -1;

} }

inline float convertPixelsToClipSpaceDistance(const int pixelDimension, const int pixels) inline float convertPixelsToClipSpaceDistance (const int pixelDimension, const int pixels)

{ {

return (float)pixels/pixelDimension*2; return (float) pixels / pixelDimension * 2;

} }

После этого создается пиксельный шейдер: You will then create a pixel shader:

struct PS_INPUT struct PS_INPUT

{ {

float4 p: SV_POSITION; float4 p: SV_POSITION;

float2 t: TEXCOORD; float2 t: TEXCOORD;

float opacity: OPACITY; float opacity: OPACITY;

} }

Рассчитывают размер и положение спрайта путем указания вершин спрайта. Calculate the size and position of the sprite by indicating vertices of the sprite. Для прямоугольного спрайта данная операция может выглядеть следующим образом: For a rectangular sprite this operation might look like this:

verts[0].topLeft[0]=convertPixelsToClipSpace(800,200); verts [0] .topLeft [0] = convertPixelsToClipSpace (800,200);

verts[0].topLeft[1]=-convertPixelsToClipSpace(600,0); verts [0] .topLeft [1] = - convertPixelsToClipSpace (600,0);

verts[0].dimensions[0] verts [0] .dimensions [0]

convertPixelsToClipSpaceDistance(800,400); convertPixelsToClipSpaceDistance (800,400);

verts[0].dimensions[1] verts [0] .dimensions [1]

convertPixelsToClipSpaceDistance(600,42); convertPixelsToClipSpaceDistance (600,42);

verts[0].opacity=1. verts [0] .opacity = 1.

После данных операций создается вершинный буфер: After these operations creates a vertex buffer:

D3D10_SUBRESOURCE_DATA initData; D3D10_SUBRESOURCE_DATA initData;

initData.pSysMem=& verts; initData.pSysMem = & verts;

D3D10_BUFFER_DESC bd; D3D10_BUFFER_DESC bd;

bd.Usage=D3D10_USAGE_DEFAULT; bd.Usage = D3D10_USAGE_DEFAULT;

bd.ByteWidth=sizeof(SpriteVertex) * (numSprites); bd.ByteWidth = sizeof (SpriteVertex) * (numSprites);

bd.BindFlags=D3D10_BIND_VERTEX_BUFFER; bd.BindFlags = D3D10_BIND_VERTEX_BUFFER;

bd.CPUAccessFlags=0; bd.CPUAccessFlags = 0;

bd.MiscFlags=0; bd.MiscFlags = 0;

if (FAILED(pD3DDevice->CreateBuffer(&bd, ScinitData, &pVertexBuffer))) return fatalError("Could not create vertex buffer!"). if (FAILED (pD3DDevice-> CreateBuffer (& bd, ScinitData, & pVertexBuffer))) return fatalError ( "Could not create vertex buffer!").

Шейдеры включают в технику рендера методом, поддерживаемым используемым API. Shaders rendering technique include the method used supported API. Например, так: For example, like this:

technique10 RENDER technique10 RENDER

{ {

pass P0 pass P0

{ {

SetVertexShader(CompileShader(vs_4_0, VS())); SetVertexShader (CompileShader (vs_4_0, VS ()));

SetGeometryShader(CompileShader(gs_4_0, GS())); SetGeometryShader (CompileShader (gs_4_0, GS ()));

SetPixelShader(CompileShader(ps_4_0, PS()));0.0f, 0.0f, 0.0f, 0.0f), 0×FFFFFFFF); SetPixelShader (CompileShader (ps_4_0, PS ())); 0.0f, 0.0f, 0.0f, 0.0f), 0 × FFFFFFFF);

} }

}. }.

В случае запуска стереоскопического приложения в оконном режиме встает необходимость обеспечения кооперации с окнами сторонних приложений в случае перекрытия окнами сторонних приложений рабочей области стереоскопического приложения. In the case of stereoscopic applications run in windowed mode raises the need for cooperation with third-party applications in the case of overlapping windows windows-party applications workspace stereoscopic applications. Наряду с этим существенным ускорением процесса визуализации трехмерной сцены является обеспечение вывода в поток рендеринга только тех областей трехмерной сцены, которые не перекрываются окнами сторонних приложений. Along with this, a significant acceleration of the process of visualization of three-dimensional scenes is to provide output in the rendering stream only those regions of the three-dimensional scenes that do not overlap windows, third-party applications. Данные задачи реализуют с помощью следующей последовательности операций. These tasks are implemented using the following sequence of operations.

Итеративно (на каждом кадре визуализации) проверяют условие работы стереоскопического приложения в оконном режиме с помощью отслеживания событий инициализации Direct3D и считывания булевого параметра FULL_SCREEN. Iteratively (for each imaging frame) check operation condition stereoscopic application in a window using Direct3D initialization event tracking and reading a Boolean parameter FULL_SCREEN. Все последующие операции выполняют лишь в том случае, если параметр FULL SCREEN является ложью (false). All subsequent operations are carried out only if the parameter is false FULL SCREEN (false).

Определяют координаты левого верхнего угла и размеры окна стереоскопического приложения с помощью соответствующих функций WinAPI Windows.Forms.Location() и Windows.Forms.Size(). Determine the coordinates of the upper left corner of the window size and the stereoscopic application through appropriate functions WinAPI Windows.Forms.Location () and Windows.Forms.Size (). В результате создают объект типа Rectangle. As a result, create an object type Rectangle.

Производят циклический перебор всех открытых окон операционной системы, имеющих видимую клиентскую часть и имеющих более высокий Z-уровень по сравнению с окном стереоскопического приложения. Cycle through all open windows operating system with the visible part of the customer and have a higher Z-level, compared with a window stereoscopic applications. Для каждого такого окна определяют прямоугольную область пересечения с рабочей областью стереоскопического приложения, представленную в программе объектом типа Rectangle [http://msdn.microsoft.com/ru-ru/library/system.drawing.rectangle.aspx]. For each of the windows define a rectangular area of ​​the intersection with the working area of ​​stereoscopic applications submitted in the program an object of type Rectangle [http://msdn.microsoft.com/ru-ru/library/system.drawing.rectangle.aspx].

Производят объединение всех прямоугольников, соответствующих перекрывающим областям окон сторонних приложений, в результате чего получают координатное описание фигуры, соответствующей перекрываемой области окна стереоскопического приложения. Produce the union of all rectangles, corresponding to the overlapping area of ​​third-party applications, windows, resulting in a coordinate description of the figures corresponding to the overlapped area of ​​the window stereoscopic applications. Схема данного процесса представлена на фиг.4. Driving this process is shown in Figure 4.

В трехмерной сцене создают спрайт, соответствующий фигуре перекрытия. The three-dimensional scene create a sprite corresponding ceiling figure. Для конвертации экранных координат в координаты трехмерной сцены используется функция ConvertPixelsToClipSpace, аналогичная описанной в п.6. To convert screen coordinates to coordinates of three-dimensional scenes used ConvertPixelsToClipSpace function similar to that described in claim 6. После этого из-за изменения состава графа сцены производят переразбиение пространства трехмерной сцены таким образом, что полигоны, находящиеся по отношению к камере за поверхностью спрайта, исключаются из визуализации, что приводит к существенному ускорению процесса рендеринга при оконном режиме работы стереоскопического приложения. Thereafter, due to changes in the composition of a scene graph produce repartition space three-dimensional scene in such a way that the polygons are relative to the camera behind the surface of the sprite are excluded from imaging, resulting in a significant acceleration of the rendering process when a stereoscopic window mode application.

Производят итеративное (на каждом кадре визуализации) отслеживание событий перемещения окон сторонних приложений, окна стереоскопического приложения, изменение состава видимых окон, их Z-индекса, а также их размеров. Produce iterative (each imaging frame) event tracking movement of third-party applications, windows, windows stereoscopic applications, changing the composition of the visible windows, their Z-Index, as well as their size. В случае успеха такой проверки выполняют изменение формы и положения спрайта описанным способом. If successful, this test is done by changing the shape and position of the sprite described.

7. Синхронизация корректировки изображений со сменой кадров 7. The image correction synchronization with the change of personnel

Вертикальная синхронизация (VSync: Vertical Synchronization) - это опциональный параметр поведения драйвера видеокарты. Vertical Synchronization (VSync: Vertical Synchronization) - This optional parameter is the behavior of the graphics driver. Включенная вертикальная синхронизация означает, что после отрисовки очередного кадра, во время переключения буферов (функция SwapBuffers() в OpenGL и функция IDirect3DSwapChain() в Direct3D) драйвер будет ждать начала очередного обратного хода луча монитора и только потом переключит экранные буферы. Included Vertical Synchronization means that after drawing the next frame, while switching buffers (SwapBuffers () function in OpenGL and IDirect3DSwapChain () function in the Direct3D) driver will wait for the start of the next reverse monitor beam path and then switches the screen buffer.

Для синхронизации корректировки изображений со сменой кадров необходимо, чтобы вертикальная синхронизация была включена. To synchronize the image adjustments with the change of personnel is necessary in order to vertical sync turned on. Это можно сделать по меньшей мере двумя способами. This can be done in at least two ways.

Включить или выключить vsync обычно можно вручную в настройках драйвера видеокарты. Enable or disable vsync can usually be manually graphics driver settings. Для этого открывают окно настройки экрана Display Properties (правой кнопкой мыши кликают на рабочем столе и выбирают пункт выпадающего меню Свойства (Properties)), выбирают вкладку Настройки (Settings), нажимают кнопку Дополнительно (Advanced), указывают настройки для ожидания вертикальной синхронизации (Wait for Vertical Sync) путем включения или отключения флага [http://www.ehow.com/how_7872535_open-device-driver-vertical-synchronize.html]. To do this, open the settings window Display Properties screen (right-mouse click on the desktop and select the item drop-down menu select Properties (Properties)), choose Settings tab (Settings), click the Advanced button (Advanced), indicate the settings for standby VSync (Wait for Vertical Sync) by enabling or disabling flag [http://www.ehow.com/how_7872535_open-device-driver-vertical-synchronize.html].

Чтобы программно включить или выключить VSync в OpenGL, выполняют следующий программный код (или аналогичный) [http://www.gamedev.ru/tip/?id=3719]: To programmatically enable or disable VSync in OpenGL, perform the following code (or similar) [http://www.gamedev.ru/tip/?id=3719]:

typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int intervals); typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int intervals);

void set_vsync(bool enabled) // true -- VSync включен, false -- выключен void set_vsync (bool enabled) // true - VSync enabled, false - disabled

{ {

PFNWGLSWAPINTERVALEXTPROC wglSwapInterval=NULL; PFNWGLSWAPINTERVALEXTPROC wglSwapInterval = NULL;

wglSwapInterval=(PFNWGLSWAPINTERVALEXTPROC) wglGetProcAddress("wglSwapIntervalEXT"); wglSwapInterval = (PFNWGLSWAPINTERVALEXTPROC) wglGetProcAddress ( "wglSwapIntervalEXT");

if (wglSwapInterval) wglSwapInterval(enabled ? 1: 0); if (wglSwapInterval) wglSwapInterval (enabled 1: 0?);

} }

Чтобы программно включить или выключить VSync в Direct3D, перед инициализацией D3DDevice присваивают полям структуры D3DPRESENT_PARAMETERS следующие значения, чтобы включить синхронизацию To programmatically enable or disable VSync in Direct3D, before initializing fields D3DPRESENT_PARAMETERS D3DDevice assigned structure following values ​​to enable synchronization

[http://www.gamedev.ru/terms/vsync]: [Http://www.gamedev.ru/terms/vsync]:

g_d3d9Parameters.SwapEffect=D3DSWAPEFFECT_COPY; g_d3d9Parameters.SwapEffect = D3DSWAPEFFECT_COPY;

g_d3d9Parameters.Presentation!nterval=D3DPRESENT_INTERVAL_ONE; g_d3d9Parameters.Presentation nterval = D3DPRESENT_INTERVAL_ONE!;

Отметим, что при использовании сглаживания вместо D3DSWAPEFFECT_COPY устанавливают D3DSWAPEFFECT_DISCARD. Note that instead of using a smoothing D3DSWAPEFFECT_COPY set D3DSWAPEFFECT_DISCARD.

Claims (11)

  1. 1. Способ создания стереоскопического графического интерфейса пользователя компьютера, содержащего двухпортовый видеоконтроллер, поддерживающий возможность создания стереоскопического изображения на основе пространства трехмерной сцены, и устройство для показа стереоизображения на базе двух жидкокристаллических дисплеев, подключенных к двум выходам видеоконтроллера, при котором: 1. A method of creating stereoscopic computer graphic user interface comprising dual video controller that supports the ability to create a stereoscopic image based on three-dimensional space of the scene, and an apparatus for displaying a stereo image on the basis of two liquid crystal displays that are connected to the two outputs of the video controller, comprising:
    устанавливают режим работы видеоконтроллера, в котором производится создание стереоизображение с помощью драйвера либо модуля драйвера видеоконтроллера; set mode video controller, which made the creation of a stereo image with the help of the driver or module video controller driver;
    создают программный интерфейс прикладных программ, позволяющий создавать элементы графического пользовательского интерфейса в трехмерной сцене на основе графических библиотек Direct3D и OpenGL, и устанавливают уровень кооперации указанного программного интерфейса в соответствии с типом приложения, использующего выдачу на экран стереоизображений; create a software application program interface that allows you to create GUI elements in a three-dimensional scene based graphics libraries Direct3D and the OpenGL, and set the level of cooperation of this software interface in accordance with the type of application, using the issuance of stereoscopic display;
    создают трехмерную сцену в памяти компьютера; create a three-dimensional scene in a computer memory;
    в процессе работы определяют, когда необходимо изменить детализацию элементов трехмерной сцены, в зависимости от производительности аппаратной части и текущей нагрузки на таковую со стороны самого приложения либо сторонних приложений в текущий момент времени, для поддержания величины задержки обработки одного кадра в графическом буфере в диапазоне, сравнимом с интервалом времени смены кадров на мониторе; during operation of determining when to change the details of the elements of three-dimensional scenes, depending on the performance of the hardware and the current load on the per se from the application itself or third-party applications in current time, to maintain the processing delay value of one frame in the graphic buffer in a range comparable to change the time interval of frames on a monitor;
    формируют первичное изображение в графическом буфере для первого глаза; primary image formed in the graphic buffer to the first eye;
    формируют разностное изображение в графическом буфере для второго глаза; forming a difference image to the graphic buffer for a second eye;
    формируют сигнал изображения интерфейса для первого глаза на первом выходе видеоконтроллера и одновременно формируют сигнал изображения для второго глаза на втором выходе видеоконтроллера; forming an interface image signal for the first eye at the first output video controller and simultaneously forming the image signal for the second eye on the second output video controller;
    непрерывно подают изображения для первого и второго глаза с первого и второго выходов видеоконтроллера на экраны вышеупомянутых жидкокристаллических дисплеев. Images are continuously fed to the first and second eyes from the first and second video controller outputs to the aforementioned liquid crystal display screens.
  2. 2. Способ по п.1, в котором создание трехмерной сцены включает в себя создание элементов графического пользовательского интерфейса, используя полигональные сетки (меши) либо маски прозрачности, текстовые элементы графического пользовательского интерфейса, используя технологию RTT (Render-To-Texture). 2. The method of claim 1, wherein creating the three-dimensional scene includes creating graphical user interface elements using meshes (meshes) or transparency mask, the text elements of the graphical user interface using RTT (Render-To-Texture) technology.
  3. 3. Способ по п.1, в котором определяют порядок следования элементов графического пользовательского интерфейса. 3. The method of claim 1 wherein the determined order of the elements of the graphical user interface.
  4. 4. Способ по п.1, в котором при необходимости вывода стереоскопических изображений или стереоскопического видеопотока в указанном окне приложения создают элемент-приемник, корректируют размеры такого элемента, измеряют стереоскопический параллакс элемента-приемника, измеряют стереоскопический параллакс стереоскопического изображения, отображаемого на таком элементе, проводят необходимые корректировки положения и размеров элемента-приемника. 4. The method of claim 1, wherein if necessary output stereoscopic image or a stereoscopic video in said application window element creates receiver, adjust dimensions of such an element, measured stereoscopic parallax element receiver, measured stereoscopic parallax stereoscopic image displayed on this cell, carry out necessary adjustments and receiver element sizes.
  5. 5. Способ по п.1, в котором при отображении стереоизображения либо стереоскопического видеопотока на поверхности элемента-приемника принудительно подменяют прямоугольные области графического буфера, соответствующие левому и правому каналам проекции поверхности элемента-приемника на зрительную плоскость, на содержимое левого и правого каналов стереоизображения либо стереоскопического видеопотока. 5. The method of claim 1, wherein when displaying the stereoscopic images or stereoscopic video stream on the surface of the receiver element forcibly substitute rectangular graphics buffer area corresponding to the left and right channels of the projection receiver element on the visual surface plane on the contents of the left and right stereo channels or stereoscopic video stream.
  6. 6. Способ по п.1, в котором левый и правый каналы являются переключаемыми. 6. The method of claim 1, wherein the left and right channels are switched.
  7. 7. Способ по п.1, в котором расхождение итогового (наблюдаемого пользователем на дисплее) стереоскопического изображения (стереоскопический параллакс) является изменяемым. 7. The method of claim 1, wherein the divergence of the final (user observes the display) of the stereoscopic image (stereoscopic parallax) is changeable.
  8. 8. Способ по п.1, в котором возможен поворот либо вращение элементов графического пользовательского интерфейса. 8. The method of claim 1, wherein the possible rotation or rotation elements of the graphical user interface.
  9. 9. Способ по п.1, в котором дополнительно производят преобразование цифрового сигнала изображения интерфейса, получаемого на выходе либо выходах видеоконтроллера, из цифрового в аналоговый. 9. The method of claim 1, further comprising a digital interface converts the image signal obtained at the output or outputs of the video controller, from digital to analog.
  10. 10. Способ по п.1, в котором создают две и более точек наблюдения (камер) в трехмерной сцене. 10. The method of claim 1, wherein creating two or more viewpoints (cameras) in a three-dimensional scene.
  11. 11. Способ по п.1, в котором трехмерная сцена создается с помощью графического движка, фреймворка либо платформы, использующих Direct3D или OpenGL. 11. The method of claim 1, wherein the three-dimensional scene is created via the graphics engine, framework or platform using Direct3D or OpenGL.
RU2013113347A 2013-03-27 2013-03-27 Method of creating stereoscopic computer user interface RU2532866C1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2013113347A RU2532866C1 (en) 2013-03-27 2013-03-27 Method of creating stereoscopic computer user interface

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2013113347A RU2532866C1 (en) 2013-03-27 2013-03-27 Method of creating stereoscopic computer user interface

Publications (2)

Publication Number Publication Date
RU2013113347A true RU2013113347A (en) 2014-10-10
RU2532866C1 true RU2532866C1 (en) 2014-11-10

Family

ID=53379603

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2013113347A RU2532866C1 (en) 2013-03-27 2013-03-27 Method of creating stereoscopic computer user interface

Country Status (1)

Country Link
RU (1) RU2532866C1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6020931A (en) * 1996-04-25 2000-02-01 George S. Sheng Video composition and position system and media signal communication system
US6225979B1 (en) * 1997-07-22 2001-05-01 Sanyo Electric Co., Ltd. Cursor display method and apparatus for perceiving cursor as stereoscopic image in stereoscopic display region, and recording medium recorded with cursor display program that can be read out by computer
US6344860B1 (en) * 1998-11-27 2002-02-05 Seriate Solutions, Inc. Methods and apparatus for a stereoscopic graphic user interface
RU2360276C2 (en) * 2004-08-03 2009-06-27 Майкрософт Корпорейшн Multi-planar three-dimensional user interface
RU2380763C1 (en) * 2008-07-01 2010-01-27 Институт проблем управления им. В.А. Трапезникова РАН Method for creation of stereoscopic graphic interface for computer user

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6020931A (en) * 1996-04-25 2000-02-01 George S. Sheng Video composition and position system and media signal communication system
US6225979B1 (en) * 1997-07-22 2001-05-01 Sanyo Electric Co., Ltd. Cursor display method and apparatus for perceiving cursor as stereoscopic image in stereoscopic display region, and recording medium recorded with cursor display program that can be read out by computer
US6344860B1 (en) * 1998-11-27 2002-02-05 Seriate Solutions, Inc. Methods and apparatus for a stereoscopic graphic user interface
RU2360276C2 (en) * 2004-08-03 2009-06-27 Майкрософт Корпорейшн Multi-planar three-dimensional user interface
RU2380763C1 (en) * 2008-07-01 2010-01-27 Институт проблем управления им. В.А. Трапезникова РАН Method for creation of stereoscopic graphic interface for computer user

Also Published As

Publication number Publication date Type
RU2013113347A (en) 2014-10-10 application

Similar Documents

Publication Publication Date Title
US7839419B2 (en) Compositing desktop window manager
US6496183B1 (en) Filter for transforming 3D data in a hardware accelerated rendering architecture
US7629945B2 (en) Mixed resolution displays
US7730413B1 (en) Display method for multiple layered screens
US20080042923A1 (en) Systems, methods, and apparatus for recording of graphical display
US6683614B2 (en) System and method for automatically configuring graphics pipelines by tracking a region of interest in a computer graphical display system
US6882346B1 (en) System and method for efficiently rendering graphical data
US6587112B1 (en) Window copy-swap using multi-buffer hardware support
US20050052623A1 (en) Projecting system
US5889529A (en) System and method for generating and displaying complex graphic images at a constant frame rate
US20020167460A1 (en) Methods of using mixed resolution displays
US20030164834A1 (en) System and method utilizing multiple pipelines to render graphical data
US5850232A (en) Method and system for flipping images in a window using overlays
US20020167458A1 (en) System utilizing mixed resolution displays
US6411292B1 (en) Display of pointing indicator within two-dimensional window display in three dimensions on a computer screen
US20070288640A1 (en) Remote rendering of multiple mouse cursors
US6157395A (en) Synchronization of frame buffer swapping in multi-pipeline computer graphics display systems
US7525547B1 (en) Programming multiple chips from a command buffer to process multiple images
US6760020B1 (en) Image processing apparatus for displaying three-dimensional image
US7911409B1 (en) Independent views generated for multiple display devices by a software application
US6229542B1 (en) Method and apparatus for managing windows in three dimensions in a two dimensional windowing system
US20080211816A1 (en) Multiple parallel processor computer graphics system
US20020145612A1 (en) Method and system for minimizing an amount of data needed to test data against subarea boundaries in spatially composited digital video
US7400322B1 (en) Viewport-based desktop rendering engine
US20080007559A1 (en) Apparatus, method and a computer program product for providing a unified graphics pipeline for stereoscopic rendering

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20150328