42486

ИСПОЛЬЗОВАНИЕ ВИЗУАЛЬНЫХ МАНИПУЛЯЦИОННЫХ МЕТАФОР ПРИ РАЗРАБОТКЕ ИНФОРМАЦИОННОЙ СИСТЕМЫ

Дипломная

Информатика, кибернетика и программирование

В процессе работы была подробно проанализирована метафора «Человек в стеклянном кубе», позволявшая отображать результаты запросов пользователей на реалистичной трехмерной модели человека. При этом, был найден удобный «манипулятор», который обеспечивает не только отображение статичных запросов пользователей, но и взаимодействие в реальном времени пользователя и интерфейса.

Русский

2015-01-19

333.5 KB

2 чел.

РЕФЕРАТ

Попова А. В. ИСПОЛЬЗОВАНИЕ ВИЗУАЛЬНЫХ МАНИПУЛЯЦИОННЫХ МЕТАФОР ПРИ РАЗРАБОТКЕ ИНФОРМАЦИОННОЙ СИСТЕМЫ, квалификационная работа на степень магистра наук: стр. 44, рис. 4, библ. 10 назв.

Ключевые слова: МЕТАФОРА ВИЗУАЛИЗАЦИИ, МАНИПУЛЯЦИОННАЯ МЕТАФОРА, МЕТАФОРА ИНТЕРФЕЙСА.

Цель работы – исследование причин и способов разработки различных видов программных интерфейсов для определенной группы пользователей, и в частности, медиков.

 В процессе работы была подробно проанализирована метафора «Человек в стеклянном кубе», позволявшая отображать результаты запросов пользователей на реалистичной трехмерной модели человека. При этом, был найден удобный «манипулятор», который обеспечивает не только отображение статичных запросов пользователей, но и взаимодействие в реальном времени пользователя и интерфейса.


ОГЛАВЛЕНИЕ

[1] ОГЛАВЛЕНИЕ

[2] ВВЕДЕНИЕ

[3] ЛИТЕРАТУРНЫЙ ОБЗОР

[3.1] Применение виртуальной реальности в медицине.

[3.2] Визуализация Программного Обеспечения

[3.3] Структура метафоры визуализации

[4] ПОСТАНОВКА ЗАДАЧИ РАБОТЫ

[4.1] Принципы создания трехмерной модели человека.

[4.2] Идея волшебной палочки для виртуальной реальности.

[5] ОБОСНОВАНИЕ ИНТЕРФЕЙСА

[5.1] Обзор реализации метафоры «Человек в стеклянном кубе».

[5.2] Решение проблем, при реализации метафоры манипуляции «Волшебный скальпель».

[6] ЗАКЛЮЧЕНИЕ

[7] СПИСОК ЛИТЕРАТУРЫ


ВВЕДЕНИЕ

Современный этап компьютеризации связан с тем, что создаются специализированные системы, предназначенные для профессионалов в тех областях, которые не связаны с вычислительной техникой. При этом требовать от них освоения технологии взаимодействия в принципе не рационально, так как решаемые ими практические задачи требуют и без того значительного напряжения интеллекта. Именно к таким профессионалам относятся медики различных специальностей, для которых в настоящее время разрабатываются компьютерные системы разного уровня: от сравнительно простых систем поддержки медицинского документооборота до высокоуровневых экспертных «систем-ассистентов», служащих для помощи хирургам во время сложных операций на сердце или мозге.

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

Опыт создания специальных систем для медиков показывает, что успех связан часто не только с функциональностью, но и с интерфейсом, учитывающим требования пользователей-медиков, которые они обычно явно не выражают, но отказываются использовать неподходящие для себя системы. Исследования и опытные разработки идут сразу по нескольким направлениям, одно из которых связано с «интеллектуализацией» интерактивных систем. Эту «интеллектуализацию» можно осуществить за счет использования давно известных принципов, заложенных в базы знаний и экспертные системы (однако интеллектуальные возможности реально используемых систем в медицине не велики, хотя первые экспертные системы уже были созданы в конце 80-х начале 90-х годов).

Второй путь – это проектирование интерфейса, ориентированного на специальные медицинские задачи, учитывающие особенности работы медиков и конкретной области приложения. Наконец, еще одно направление связано с увеличением возможностей самого интерфейса. Один из подходов – использование новых технических средств, каким-то образом связанных с виртуальной и расширенной реальностью, таких как: табло, большие экраны, очки, шлемы. Однако, в практике реальных медицинских учреждений, включающих учреждения, управления здравоохранением, сложно представить использование дорогой аппаратуры, не предназначенной непосредственно для лечения больных. Поэтому следует искать более дешевые подходы для создания информационной поддержки процесса управления здравоохранением и работы медицинских учреждений.


ЛИТЕРАТУРНЫЙ ОБЗОР

Применение виртуальной реальности в медицине.

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

Вот несколько примеров применения систем виртуальной реальности в медицине:

- Диагностика. Создание виртуальной модели начинается с получения совокупности плоских снимков компьютерной томографии. На отдельно взятых снимках картина опухоли может быть недоступна. Другое дело, когда совокупность плоских изображений конвертируется в непрерывную трехмерную модель. Мощные вычислительные ресурсы компьютера представляют эту информацию в виде интерактивной модели с возможностью «пролета» над поверхностями того или иного канала и регистрацией возможных отклонений от нормы и т.д.

- Виртуальные анатомический атласы. Эти системы представляют различные органы и системы среднестатистических мужчин и женщин. Компьютер может воссоздавать не только внешние, но и механические параметры органов. Принципиальное отличие виртуальной анатомии состоит в том, что наблюдатель может быть помещен в любую точку как вне, так и внутри организма, а также может «попутешествовать» вдоль тех или иных каналов и систем.

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

Кроме того, важно отметить тот факт, что коммерчески доступные медицинские тренажеры очень дороги и требуют специальной дорогостоящей вычислительной техники. В нашем случае предлагается пойти по пути использования общедоступных высокопроизводительных персональных компьютеров и разработать программное обеспечение, которое позволит решать те же самые задачи, но на несколько порядков дешевле. Многоуровневость архитектуры программного обеспечения позволит получать приемлемые результаты даже на стандартной конфигурации персонального компьютера, в то время как с дополнительными и сравнительно недорогими устройствами виртуальной реальности можно будет достигнуть гораздо большего эффекта «погружения» и тем самым более естественной работы.

Визуализация Программного Обеспечения

По мнению ряда специалистов, визуализация программного обеспечения имеет дело с программными объектами, такими как алгоритмы, программы, параллельные процессы. В этой связи под визуализацией программного обеспечения понимается совокупность методик использования графики и средств человеко-машинного взаимодействия, применяемых для лучшего уяснения понятий и эффективной эксплуатации программного обеспечения ЭВМ, а также для представления программных объектов в процессе создания программ.

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

Термин "Визуальное программирование" подразумевает использование визуальных выражений (графиков, рисунков, пиктограмм) в процессе программирования. То есть этот термин относится к тем системам, которые позволяют пользователям специфицировать программу в дву (или более) мерном виде.

Термин "Визуализация программирования" подразумевает использование визуальных представлений (графиков, образов, анимированных последовательностей образов) для того, чтобы иллюстрировать данные, программу, структуру сложной системы, поведение сложной системы в динамике. Этот термин определяет использование графики для того, чтобы облегчить понимание уже написанных программ в таких системах, как, например, визуальные отладчики, системы анимации алгоритмов и программ.

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

Перечислим основные направления визуализации программного обеспечения в соответствии с этой классификацией:

1. Системы визуального программирования на базе визуальных языков проектирования и программирования программных систем;

2. Системы визуализации программирования, включающие в себя системы анимации алгоритмов, системы визуальной отладки и системы измерения и отладки эффективности параллельных программ;

3. Системы, реализующие визуальные методы работы с базами данных, базами знаний и информационными системами, в том числе:

- визуальное представление данных и структур данных;

- визуальная навигация в базах данных;

- визуальные и иконические языки запросов в базах данных и информационных системах;

4. Программирование путем демонстраций;

5. Визуальная инженерия знаний;

6. Визуализация обучения программированию;

7. Визуальный и иконический интерфейс и визуальные средства разработки интерфейса.

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

а) разработка физической модели;

б) разработка математической модели;

в) алгоритмизация;

г) программирование;

д) вычисление по программе;

е) визуализация, интерпретация и анализ результатов.

Делая не совсем строгое обобщение этой схемы, будем говорить о физическом, математическом, алгоритмическом и программном уровнях вычислительной модели и о модельных объектах разного уровня или о физических, математических, алгоритмических и программных объектах, которым могут соответствовать визуальные объекты, отображаемые на плоскость вывода.

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

Можно выделить несколько подходов к пониманию метафоры при разработке систем визуализации и визуального интерфейса.

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

В отечественных работах описаны результаты исследований и разработок, связанные с применением метафор для описания сущностей программирования. Они представляют особый интерес, так как основаны на многолетнем опыте работы со студентами, специализирующимися на системном программировании и параллельных вычислениях. Используемые образы характеризуются разной степенью стилизации - реалистические изображения вращающегося магнитного диска, схемы и временные диаграммы, примитивные абстрактные образы. Степень стилизации влияет на восприятие, и не всегда более реалистичная картинка лучше, так как за деталями могут теряться как раз те понятия, освоение которых и является целью обучения. Иногда для визуализации тех или иных понятий используются образы из сферы деятельности, весьма отдаленной от изучаемой. Например, для демонстрации понятий синхронизации, взаимного исключения, параллельности, семафоров и т.д. была использована модель водопровода с баками, трубами и задвижками. Преимуществом такого подхода является апелляция к обыденному человеческому опыту и активизация интереса студентов, что облегчает понимание и усвоение принципиальных моментов исходного процесса. К недостаткам такого подхода можно отнести потерю деталей и некоторых специфических понятий, аналоги к которым не удалось подобрать в выбранной сфере, необходимость сопоставления понятий из разных сфер в процессе обучения, а также появление дополнительных и нежелательных аналогий, связанных с обыденными метафорами.

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

1. Метафоры проваливаются.

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

2. Метафоры редки.

Так как метафоры чрезвычайно редки, то встает вопрос - как может проектировщик или пользователь расширить метафору? Не более чем поменять ее параметры. Или попытаться на ее базе создать новую метафору.

3. В метафорах отсутствует ориентация на данную область.

А если присутствует, то она (метафора) крайне ограничена по своему применению.

4. Метафоры консервативны.

Они препятствуют прогрессу.

Важное значение имеет замечание о том, что перенос значения, который поддерживает пространственные визуальные метафоры посредством сходства или аналогий с ситуациями реального мира, может быть как позитивным, так и негативным, когда на метафорическое значение переносятся ограничения реальных ситуаций. Возможны упрощение понимания сути явлений, потеря деталей и некоторых специфических понятий, аналоги к которым не удалось подобрать в выбранной метафоре. Часто при использовании метафоры проявляются "метафорические артефакты", то есть на компьютерную модель переносятся отдельные свойства объектов метафоры, не существующие в исходной постановке. В сознании пользователя появляются дополнительные и нежелательные аналогии, связанные с обыденными метафорами. Укажем на недопустимость выбора метафоры по словесному сходству. Часто такие метафоры связаны с программистским жаргоном и являются языково и/или культурно ориентированными, что делает их непонятными и вредными для носителей другого языка и/или культуры. Хотя ряд критических замечаний можно оспорить, но опыт использования визуальных методов показывает, что доля критицизма полезна в качестве предупреждения для проектировщиков визуальных систем. Отметим в этой связи, что данная критика касается узкого понимания метафоры, как применения бытовых реалий. По нашему мнению именно это узкое понимание, а не само использование метафоры, является причиной неудачных решений и основанием для критики. Нельзя переносить понимание метафоры, успешно используемое в человеко-машинном интерфейсе, на все случаи визуализации. Следует выработать более широкое понимание метафоры визуализации, включающее современную традицию использования метафоры в человеко-машинном интерфейсе, но не требующее мелочного следования всем деталям выбранной проектировщиком сферы деятельности. Предлагаемый подход к пониманию метафоры, как главной идеи, при отображении прикладной области на визуальный мир является расширительным по сравнению с традиционным и в значительной мере базируется на использование понятий семиотики. Представляется, что этот подход поможет формализовать поиск, проектирование и порождение видов отображения для визуализации. Формализация понятий, связанных с метафорой, обеспечит систематический подход к оценке качества языков и средств визуализации.

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

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

Структура метафоры визуализации

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

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

Анализ использования систем визуализации указывает на наличие "фокуса" метафоры, обеспечивающего основное воздействие на пользователя визуального языка, порожденного данной метафорой. Иногда фокус метафоры основан на несходстве метафорических и модельных сущностей, или же воздействие метафоры на пользователя происходит за счет помещения объекта метафоры в новый для него смысловой ряд. Отметим возможность отсутствия фокуса в конкретной метафоре, а также заведомую субъективность восприятия фокуса метафоры и возможность его необнаружения конкретным пользователем.

Метафору визуализации можно описать как набор, состоящий из:

-  образности метафоры;

- предписываемых метафорой действий по изменению визуальных образов или по манипуляциям пользователей с визуальными объектами (в вырожденном случае эти действия могут сводиться к наблюдению);

- набора уподоблений между модельными и метафорическими сущностями и/или элементами смыслового несовпадения;

- фокуса метафоры, обеспечивающего ее основное воздействие.

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

Теперь отметим тот факт, что одной из актуальных задач в связи с визуализацией программного обеспечения является задача поиска, и/или построения визуальных метафор. В литературе часто встречаются указания на необходимость поиска "хороших" визуальных метафор. Действительно, от их удачного выбора во многом зависит успех или неудача системы.

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

Процесс порождения метафор включает в себя на первом этапе выделение основных объектов, характеристик, состояний и событий реального процесса, а на втором - подбор визуальных объектов с характеристиками, соответствующими характеристикам реальных объектов. Существует интересный опыт визуализации понятий операционных систем, параллельных и распределенных систем и их элементов с помощью бытовых аналогий. Используемые образы характеризуются разной степенью стилизации - реалистические изображения вращающегося магнитного диска, схемы и временные диаграммы, примитивные абстрактные образы. Степень стилизации влияет на восприятие, и не всегда более реалистичная картинка лучше, так как за деталями могут теряться как раз те понятия, освоение которых и является целью обучения. Иногда для визуализации тех или иных понятий используются образы из другой сферы деятельности, чем изучаемый предмет. Например, для демонстрации понятий синхронизации, взаимного исключения, параллельности, семафоров и т.д. была использована модель водопровода с баками, трубами и задвижками. Преимуществом такого подхода является апелляция к обыденному человеческому опыту и активизация интереса, что облегчает понимание и усвоение принципиальных моментов исходного процесса. К недостаткам такого подхода можно отнести потерю деталей и некоторых специфических понятий, аналоги к которым не удалось подобрать в выбранной сфере, необходимость сопоставления понятий из разных сфер в процессе обучения, а также появление дополнительных и нежелательных аналогий, связанных с обыденными метафорами.

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

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

Рассмотрим несколько взаимнодополнительных подходов к формализованному описанию визуальной метафоры.

При первом из них метафора описывается как набор:

I,M,S,F,

где

I - множество образов i - образность, порождаемая метафорой;

M - набор действий m - действия, предписываемые метафорой по изменению визуальных образов и/или по манипуляциям пользователей с визуальными объектами причем в вырожденном случае эти действия могут сводиться к наблюдению o;

S - набор s, являющийся объединением уподоблений между модельными и метафорическими сущностями, а также элементами смыслового несовпадения;

F - фокус метафоры, обеспечивающий ее основное воздействие.

Второй подход предполагает описание метафоры как отображения J множества [E] сущностей прикладной области на [O] множество динамических визуальных объектов языка системы визуализации, то есть

J([E])=[O].

Далее, введем [E], [O] - множества смыслов содержащихся в [E], [O], соответственно.

[E] и [O] принадлежат SEN.

Пусть Ms - мера близости на SEN. Тогда если Ms([E]) близка к Ms([O]), то метафора J удачна.

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

Рассмотрим метафору как некоторую аналогию (или систему аналогий) данной предметной области с другой областью, чьи основные сущности общеизвестны и несут общепринятые смыслы. Применив аналогию (уподобление), мы сразу определяем возможный визуальный словарь, элементы которого имеют общепринятый смысл. Восприятие элементов и фраз на этом языке также предопределено сближениями используемой метафоры. Тоже самое можно сказать и о размещении элементов языка и их методе задания их отношений. Они также в основном предопределены привычным размещением объектов предметной области, использованной в качестве аналогии. Таким образом, визуальный язык VL можно представить как результат развития DC ядер словаря, синтаксиса, семантики, и прагматики (соответственно Cd, Csin, Csem, Cp), содержащихся в описании метафоры.

В качестве элементарного примера использования описанного выше подхода проанализируем известную метафору блок-схемы, примененную Дж. фон Нейманом еще на заре компьютерной эры, и активно используемую и при документировании проектов, и во многих визуальных языках программирования в качестве метода представления графа потока управления программы.

Метафора блок-схемы достаточно жестко определяет все возможные языки, построенные на ее базе. Очевидно, что проектируемый визуальный язык должен быть диаграмматическим языком, основанным на потоке управления. Набор образов для представления программных конструкций диктуется, если не существующими стандартами на блок-схемы, разработанными в различных странах, то традицией. Методы соединения и размещения на экране также четко определены самим понятием блок-схемы, как графа потока управления программы.

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

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

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


ПОСТАНОВКА ЗАДАЧИ РАБОТЫ

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

Однако, при отсутствии  «манипулятора» (некоторого устройства, решающего функции в контексте метафоры) реализация системы, основанной на такой базе, очень трудоемкая задача. В дополнении предлагается метафора манипуляций – идея «волшебного скальпеля». «Скальпель» позволяет «разрезать» площадь организма для глубокого изучения. В продолжении человеческого организма объект «разрезается», все физические изменения отображаются, как если бы мы делали это реально. В другом случае, иногда одного «разрезания» недостаточно. Семантическое погружение позволяет идти близко к объекту так, как это будет необходимо, проходя через некоторые системы организма, делая их невидимыми или видимыми время от времени. Это свойство помогает нам получать более точную медицинскую визуализацию. В случае комбинации метафоры «волшебного скальпеля» с трехмерной моделью человеческого тела, мы можем получить виртуальную модель операции.

Важно обратить внимание на правильное моделирование всех систем человека. Рассмотрим кровеносную систему. Достаточно в любом трехмерном редакторе (например, 3ds Max или Maya) смоделировать динамику крови определенным образом - не в каждом разном случае как-то особенно, а несколько обособленных случаев, которые можно будет применять в некоторых вариациях. Рассмотрим пример, пусть у нас есть анимация поведения крови при порезе артерии. Тогда в системе реализации метафоры «волшебный скальпель» мы имеем возможность вычислить точку соприкосновения «скальпеля» и аорты, и уже от направления и движения «скальпеля» относительно кровеносного сосуда моделировать движение крови. Такая реализация может дать преимущество в более низких требованиях к графическим и вычислительным ресурсам компьютера, что составляет не маловажный аспект. Подобные системы уже применяются в американских учреждениях для обучения медицинского персонала, но они отличаются меньшей эффективностью реализации и значительной стоимостью оборудования, к которому предъявляются очень высокие аппаратные требования.

Мы выбрали реалистичные методы отображения, что естественно и удобно. Модель была описана в 3ds Max.

Принципы создания трехмерной модели человека.

Трехмерное моделирования тела человека требуют знания анатомии. Следствием недостаточных познаний в данной области является создание непропорциональных и искаженных фигур. Очень часто модель в целом выглядит так, как если бы она была составлена из отдельных, не связанных друг с другом кусочков.

Пропорции.

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

Ширина плеч женщины составляет две целых и две третьих ширины головы. Ширина плеч мужчины составляет три ширины головы. Высота туловища и мужчины, и женщины, начиная от макушки и до промежности, составляет приблизительно четыре высоты головы.

В начале профессиональной деятельности научное знание анатомии и пропорций тела человека будет полезным, но если следовать им безоговорочно, то это станет препятствием на пути к созданию “живых” фигур.

Скелет.

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

Внутренняя скелетная структура также влияет на внешние контуры фигуры. Этому моменту требуется уделять повышенное внимание, поскольку в некоторых местах кости менее отчетливы.

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

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

а) Череп.

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

б) Скелет туловища.

Скелет верхней и нижней частей туловища можно разбить на четыре части: позвоночник, реберная клетка, плечевой пояс и тазовый пояс. Все четыре части сгруппированы вокруг позвоночника. Позвоночник состоит из 33 позвонков, 9 нижних позвонков объединены и образуют крестец и копчик. Оставшиеся 24 позвонка, являются исключительно гибкими. Друг от друга они отделены волокнистой прокладкой из эластичных хрящей, смягчающих внешние воздействия и делающих возможными движения между позвонками. Аниматоры, формирующие скелет, должны принять это во внимание и создать ряд соединенных друг с другом костей, количество которых аналогично реальному позвоночнику.

в) Кости руки.

Самые маневренные кости тела располагаются в руке. Диапазон их жестов и предназначения еще более расширен за счет маневренности плечевого пояса и ловкости пальцев. Поскольку, в отличие от костей ноги, кости руки не должны поддерживать тело, то они более тонкие.

При моделировании руки важно знать структуру образующих ее костей. Без этого точное моделирование руки не представляется возможным. Наиболее распространенной ошибкой является моделирование кисти слишком малых размеров. В развернутом состоянии кисть должна закрывать четыре пятых поверхности лица.

г) Кости ноги.

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

Мускулатура.

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

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

При сокращении мышцы толкают кости. Они так же удерживают скелет в стационарном неподвижном состоянии. Можно отметить тот факт, что ни один мускул не функционирует автономно. При сокращении мускула в действие вступает другой, противоположный ему, который регулирует его действие. Благодаря противостоящему расположению, мускулы дают возможность выполнять сложные действия и позволяют различным частям тела возвращаться в свое исходное состояние покоя.

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

Мышцы головы.

В отличие от остальных частей тела, мышцы головы относительно тонкие. Форма головы в наибольшей степени определяется костями черепа.

Те, кого интересуют вопросы анимации лица, должны потратить какое-то время на изучение его мышц и на то, каким образом они влияют на выражение лица. Для моделирования лица важно знать структуру черепа.

Мышцы шеи.

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

Мышцы туловища.

Структурные особенности туловища являются результатом прямохождения. В отличие от других млекопитающих, плечи человека не должны поддерживать голову и грудную клетку и поэтому они располагаются на некотором расстоянии друг от друга, что увеличивает полезность рук. Грудину отличает не ее глубина, а ширина. На верхнюю и нижнюю часть туловища воздействуют две группы мышц. Верхняя группа действует на плечи и верхнюю часть рук, тогда как нижние группы мышц, идущие от реберной клетки к тазу, управляют движениями у талии.

Мышцы руки.

Мышцы руки можно подразделить на две группы. Верхняя группа управляет шарнирным суставом локтя, а нижняя — шарнирным суставом запястья. При рассмотрении руки, свисающей с боку от туловища, группы мышц плеча расположены спереди и сзади руки. Они действуют как сгибатели и разгибатели предплечья. Группы мышц предплечья расположены по бокам и управляют движением шарнирного сустава запястья под прямым углом к локтевому отростку.

Мышцы ноги.

Средний ягодичный и большой ягодичный мускулы являются начальными для задания контура ноги. Большой ягодичный мускул является самым большим и сильным мускулом тела. Он функционирует как разгибатель и движет ногу назад при ходьбе, беге и прыжках. Кроме того, он помогает удерживать тело в вертикальном положении.

Идея волшебной палочки для виртуальной реальности.

Можно ли работать руками, делая какие-то манипуляции с сложными объектами - не поворачивать (это руками естественно), а вытаскивать, иссекать и увеличивать. Тут нужен инструмент. Какой же?

Прежде всего на ум приходит волшебная палочка, типа той, что используется в фильме Золушка. Но она имеет недифференцированное действие и нуждается в голосовом управлении. Другая идея - лазерный резак. Вообще среды виртуальной реальности знают много примеров использования виртуальных инструментов, например, каких-нибудь удочек. Имеются примеры «Вуду - интерфейса», когда мы манипулируем с образами-куклами, а результат переносится на другие объекты. Тогда нужен сенсор, чувствующий наши команды. Можно и экран такой сделать, а можно получить что-то вроде пульта или трехмерной мыши. Но быстрее всего сделать mini-map на другом экране, там и работать манипулятором, а результат выдавать на виртуальную реальность. Возможно два человека - наблюдатель и оператор. Наблюдатель смотрит в очки и командует, а оператор имеет дело с этим самым mini-map. Конечно, все результаты отображаются и на виртуальный экран. Можно использовать и перчатку как пять манипуляторов с простыми функциями.

Вопрос: как осуществлять манипуляции в виртуальной реальности?

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

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

Какие приборы возможны?

- реальные, например, основанные на лазерных указках и экранных сенсорах, «чувствующих» появление лазерного луча;

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

- фантастические с новыми функциями, например, заимствованными из фильма «Звездные войны».

В чем причина возникающих сложностей с реализацией манипулятивных методик, основанных на применении работы с трехмерными объектами на двумерном экране? Их суть состоит в разложении перемещения манипулятора в проекции на перпендикулярные оси, лежащие в плоскости экрана. Далее интересующие нас данные перемещаются вдоль осей, либо поворачиваются вокруг них на расстояния и углы прямо пропорциональные величинам проекций. Метод чрезвычайно прост в исполнении и универсален, однако, его «двухмерность» может очень плохо сказаться на его применении. Плоскость экрана, оставляет ему лишь две степени свободы. В большинстве случаев этого может оказаться недостаточно.

Манипуляции могут быть мгновенными или наоборот плавными, полезными, например в случае режима демонстрации. Функции манипуляции данными разделены на группы, такие как «перемещение», «вращение», «построение сечений» и т.д. Во избежание путаницы и перегруженности вида отображения, эти группы разделены взаимоисключающими режимами манипуляции, так, что при выбранном режиме, доступны только его функции. Переключение режимов осуществляется выбором пиктограмм, или колесом прокрутки манипулятора.

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


ОБОСНОВАНИЕ ИНТЕРФЕЙСА

Обзор реализации метафоры «Человек в стеклянном кубе».

Реализация метафоры «Человек в стеклянном кубе» представляет собой отображение трехмерной модели человека, а также его внутренних систем. Обработка и отображение запросов, непосредственно зависят от содержания информации, представляемой медицинскими работниками, и отображение каких-либо болезней на этой модели. Так как моя работа состояла на полной инициативе, следствием чего является отсутствие подобной информации, поэтому для реализации этой метафоры, был реализован прототип физиологического атласа. Пользователь, выбирая в интерфейсе нужные системы человеческих органов, может посмотреть их как в совокупности, так и отдельно друг от друга (рис. 1).

рис. 1

Решение проблем, при реализации метафоры манипуляции «Волшебный скальпель».

Самым проблематичным моментом во всем проекте является вопрос, связанный с реализацией метафоры манипуляции – «Волшебный скальпель». Рассмотрим в этом разделе моменты, как я ее решала.

Так как проект является макетом, я рассматривала несколько элементов для отображения человеческой системы:

  1.  верхний покров кожи;
  2.  скелет;
  3.  более подробная модель строения уха, для наглядной отображения.

И для манипуляции я использую трехмерную реалистичную модель скальпеля.

Как происходит отсечение треугольников для отображения систем, находящихся под кожным покровом?

Для начала необходимо распознать, какие координаты экрана необходимо взять, что бы считать их «главными». Наш манипулятор – трехмерный, поэтому он имеет множество точек, которыми мы можем начинать «резать». Сам скальпель находится под таким углом, что для макетной реализации можно взять его один конец, с координатами x и y. Эти координаты заранее неизвестны, они вычисляются каждый раз, как сцена поворачивается, или пользователю удобнее будет резать с левой стороны, чем справой. Они вычисляются уже в самой программе. Теперь, если у нас есть точка, с экранными координатами (x,y), нужно вычислить какие координаты эта точка будет иметь в трехмерной сцене, т. е. необходимо конвертировать экранные координаты в мирровые. Когда Direct 3D конвертирует точку из мировых координат в экранные, требуются следующие шаги:

World Space -> View Space -> Viewport Space -> Screen Space.

Мы должны сделать этот процесс в обратном порядке. Это означает, что первое конвертирование должно быть из Screen Space (пространство экранных координат) в Viewport Space (область просмотра). Viewport Space использует нормализованные координаты. Это означает, что вместо X координат, измеряемых в (800х600) в пределах от 0 до 800 точка находится в пределах -1 до +1. Это же справедливо для Y координат. Это означает, что мы должны масштабировать координаты нашей мыши в пределах от -1 до +1 как для оси X так и для оси Y. Есть еще и другое различие. Начало Screen space находится в левом верхнем углу экрана, а начало Viewport space находится в центре экрана. Мы можем ковертировать координаты мыши в пределы [-1, 1] и передвинуть «точку отсчета» в центр экрана с помощью следующих расчетов:

float NMouseX=1.0 - 2.0*mousex/640;
float NMouseY=1.0 - 2.0*mousey/480;

Сейчас мы имеем координаты мыши в пределе [-1, 1], но что нам от этого? Посмотрим на рис. 2:

рис. 2.

Viewing Frustum – Пирамида просмотра. Заметим из вышесказанного, что по мере увеличения дистанции от камеры, увеличивается поле видимости. К примеру, красная линия B находится на расстоянии 1.0 от камеры. Голубая точка представляет относительно максимальное расстояние Y от камеры, которое попадает в поле зрения на расстоянии 1.0 от камеры. Когда она воспроизводится на экране, она будет находиться на самом верху дисплея, а то, что находится выше – будет обрезано. Посмотрим на красную линию D. Она представляет максимальное положение Y, которое попадает в поле зрения на расстоянии 2.0 от камеры. И очевидно, что вторая голубая точка имеет более высокую Y координату, чем предыдущая. Она является максимальной Y координатой, которая попадает в поле видимости на расстоянии 2.0 от камеры. Проблема тут в том, что обе эти точки воспроизводятся на экране в одинаковой позиции.

Первое, что нужно сделать, это вычислить, как далеко от центра экрана находится координата Y мыши. Мы вычисляем вектор, идущий из позиции камеры до точки попадания на расстоянии 1.0 от камеры. Он будет задавать направление и угол луча, который будет иметь начало в точке, где установлена камер. Когда мы получим этот вектор, мы можем увеличить его длину до любого расстояния, создавая наклон для использования пересечения с моделью человека. Что бы увидеть, как этот алгоритм работает, мы вычислим вектор, от позиции камеры, до попадания мыши, на расстояние 1.0. Если у нас есть вектор, мы можем умножить его на любое расстояние, на которое мы хотим продлить луч. Умножим его на 2, что бы получить спроектированную точку попадания на расстоянии 2.0, даже когда могут быть разными положения Y в мировом пространстве (но будут иметь одну и ту же координату на экране). Как получить этот вектор? Следующая формула вычисляет относительное максимальное положение Y от камеры, которое попадает на экран на расстоянии 1.0.

MaxY = tan (FOV / 2),

где FOV – угол обзора камеры. Аналогично вычисляется значение максимальное значение дальней точки (угол FOV в моем случае, равен 45°). Необходимо помнить, что наши координаты мыши были нормированы на отрезок [-1, 1], таким образом можем их использовать как % от максимального Y (1.0 = 100%, т.е. самый верх экрана).

D3DXVECTOR3 cameraspace;
cameraspace.y=(NMouseY*tan(FOV / 8.0));

В этой точке имеем координату Y, на расстоянии 1.0 от положения камеры. Теперь нам нужно найти положение координаты X мыши на расстоянии 1.0. Делаем то же самое, только учтем 2 отличия. Во-первых, мы должны инвертировать нашу нормализованную X координату мыши, потому что будет неверно округлять до +1 с левой стороны, и -1 с правой. Во-вторых, мы должны разделить это значение на соотношение экранных размеров, которое мы используем. Соотношение экранных размеров (aspectRatio) получается делением ширины экрана на его высоту (640/480 =1.333333). В любом случае мы получаем Х координату так:

cameraSpace.x = ((-NMouseX/aspectratio)*Math.Tan(7.0/10.0));
cameraSpace.z = 1.0;

Мы сейчас конвертировали положение X и Y мыши в пространство камеры на дистанцию 1.0 от камеры. Сейчас мы должны провести наш луч, который определяется начальной и конечной точкой. Начальная точка – это положение камеры. Конечной точкой будут наши вычисленные координаты cameraSpace.X и cameraSpace.Y, увеличенные на длину луча, и конвертированные в World Space. Глубину луча будем использовать не более 500 пикселей. Любые объекты, лежащие дальше, будут игнорироваться.

D3DXVECTOR3 LineEnd;
LineEnd.x=cameraspace.x*200; // (200=length of ray)
LineEnd.y=cameraspace.y*200;
LineEnd.z=200;

Теперь известна конечная точка и, можно конвертировать ее в координаты мирового пространства, трансформируя ее при помощи инверсной матрицы просмотра.

D3DXMATRIX matView;
float det;
lpDevice->GetTransform(D3DTRANSFORMSTATE_VIEW,(D3DMATRIX *)&matView);
D3DXMatrixInverse(&matView,&det,&matView);
D3DXVec3TransformCoord(&LineEnd,&vec,&matView);
D3DXVECTOR3 LineStart=CameraPosition; 

D3DXVECTOR3 MGM_MakeRay(float FOV,float AspectRatio,WORD MouseX,WORD MouseY,float range)
{
   D3DXVECTOR3 LineEnd,CameraSpacePos;
   float NMouseX,NMouseY,det;
   D3DXMATRIX matView;
   NMouseX=1.0 - 2.0*MouseX/640;
   NMouseY=1.0 - 2.0*MouseY/480;
   //is FOV in radians
   CameraSpacePos.y=(NMouseY*tan(FOV/2.0));
   CameraSpacePos.x=((-NMouseX/AspectRatio)*tan(FOV/2.0));
   LineEnd.x=range*CameraSpacePos.x;
   LineEnd.y=range*CameraSpacePos.y;
   LineEnd.z=range;
   lpDevice-> GetTransform(

       D3DTRANSFORMSTATE_VIEW,(D3DMATRIX*)&matView);
   D3DXMatrixInverse(&matView,&det,&matView);
   D3DXVec3TransformCoord(&LineEnd,&LineEnd,&matView);
   return LineEnd;
} 

Эта функция находит мировые координаты конечной точки, расположенной на дальнем расстоянии от камеры.

D3DXVECTOR3 rayend,raystart;
raystart=CameraPosition;
rayend=MGM_MakeRay( fov , 1.333333, mousex , mousey, 200); 

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

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

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

Vector edge1=v2-v1;
Vector edge3=v3-v1;
Vector Normal=CrossProduct(edge1,edge2); 

С начала мы должны найти расстояние к плоскости от позиции камеры:

VECTOR L1=vertex-linestart;
Distance_to_plane=DotProduct(L1,Normal);

Далее находим длину спроецированной (projected) линии:

VECTOR line_direction=(lineend-linestart);
float linelength=DotProduct(line_direction,Normal);

После этого, делим расстояние к плоскости на длину спроецированной линии, чтобы изучить отношение между ними Это дает процент, который мы должны пройти, в низ по линии, чтобы достичь пересечения (это значение будет находиться в интервале от 0 до 1). Если результат больше или равен 1 (свыше 100% длины линии), тогда линия не достигает плоскости. С другой стороны, если результат отрицательный, тогда плоскость находится позади начала линии, т.е. плоскость расположена за камерой.

float percentage = - Distance_to_Plane / linelength; intersect.x=linestart.x+line_direction.x*percentage; intersect.y=linestart.y+line_direction.y*percentage; intersect.z=linestart.z_line_direction.z*percentage;

Следующая функция берет точку начала и конца луча, так же берет нормаль многоугольника и любую вершину в многоугольнике. Функция возвращает true если пересечение было, false если небыло. Если произошло пересечение, возвращается указатель на дистанцию float и возвращается дистанция от начала луча (в интервале от 0 до 1).

bool MGM_GetIntersect (D3DXVECTOR3 linestart,D3DXVECTOR3 lineend,D3DXVECTOR3 vertex,D3DXVECTOR3 normal,D3DXVECTOR3 * intersection,float *distance)
{
   D3DXVECTOR3 direction,L1;
   float linelength,dist_from_plane,percentage; 

   direction.x=lineend.x-linestart.x;

   direction.y=lineend.y-linestart.y;
   direction.z=lineend.z-linestart.z;
   linelength=D3DXVec3Dot(&direction,&normal);

   if (fabsf(linelength)< 0.00001)

       {
           return false; //=0 означает, что линия паралельна 

                           плоскости и не может ее пересекать
       }
   L1.x=vertex.x-linestart.x;

   L1.y=vertex.y-linestart.y;
   L1.z=vertex.z-linestart.z;
   dist_from_plane=D3DXVec3Dot(&L1,&normal);
   percentage=dist_from_plane/linelength; // Как далеко пересечение линии в процентах от 0 до 1
   if (percentage< 0.0) // Плоскость позади начала линии
   {
       return false;
   }
   else
       if (percentage > 1.0) // Линия не достигает плоскости
       {
           return false;
       }
   *distance=percentage; //Записываем дистанцию от начала луча

   intersection->x=linestart.x+direction.x*percentage;

   intersection->y=linestart.y+direction.y*percentage;
   intersection->z=linestart.z+direction.z*percentage;
   return true;
} 

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

Но этого не достаточно, необходимо еще выяснить, попадает ли точка пересечения во внутрь треугольника, или же точка пересечения находится вне предлагаемого многоугольника. Необходимо эту ситуацию проверить, и отбросить ненужные варианты.

Функция, которая проверяет, находится ли точка пересечения в пределах многоугольника:

bool MGM_HitPolygon (D3DXVECTOR3 plane_intersection ,D3DXVECTOR3 *polygon,int numVertices)
{
   D3DXVECTOR3 *Lines=new D3DXVECTOR3 [numVerts];
   float total_angles,result,vlength;
   int a;
   for (a=0;a< numVertices;a++) // цикл всех вершин в многоугольнике
   {
       Lines[a].x=plane_intersection.x-polygon[a].x; // получить 

                   вектор направления из пересечения с вершиной [a]
       Lines[a].y=plane_intersection.y-polygon[a].y;
       Lines[a].z=plane_intersection.z-polygon[a].z;
   D3DXVec3Normalize((D3DXVECTOR3*)&Lines[a],

                        (D3DXVECTOR3*)&Lines[a]);
}
total_angles=0.0; //начинаем считать эти углы
for (int b=0;b < numVertices-1;b++)
{
   total_angles= total_angles + acos     (D3DXVec3Dot(&Lines[b],&Lines[b+1])); // просчитываем углы между 

                                       каждым вектором
}
total_angles= total_angles+acos(D3DXVec3Dot(&Lines[numVertices-1],&Lines[0])); // Последний вектор обработан вне цикла. ( L2 , L0 )
delete Lines;
if (fabsf (total_angles-6.28)< 0.005)
{
   //попали в многоугольник
   return true;
}
return false; //не попали в многоугольник
}

Теперь необходимо проверить каждый объект в сцене на столкновение. Сейчас луч находится в мировых координатах, это значит, что мы должны преобразовать каждую вершину каждого объекта в систему координат мирового пространства. Это реализуется с помощью умножения вершин объектов на мировую матрицу. Но такая реализация потребует огромного количества преобразований, и существенно замедлит процесс отображения и вычисления. В таком случае, лучшим способом будет решение, которое будет преобразовывать координаты луча из пространства мировых координат в пространство координат модели.

Следующая функция возвращает ближайший полигон в сцене и объект, которому он принадлежит.

Структура будет выглядеть примерно так:

struct MGM_GetPickDesc{
WORD object;
WORD face;
BOOL HitAnything;
};

MGM_GetPickDesc MGM_GetPick(D3DXVECTOR3 CameraPosition,WORD mousex,WORD mousey,float fov)
{
   //Вызываем MGM_MakeRay чтобы определить наш луч из позиции камеры
   D3DXVECTOR3 LineStart=CameraPosition;
   D3DXVECTOR3 LineEnd=MGM_MakeRay(fov,1.3333,mousex,mousey);
   MGM_GetPickDesc HitObject;
   HitObject.HitAnything=false;
   //Устанавливаем переменную дистанции, чтобы определить ближайший

       многоугольник 1000.0; 
   float ShortestDistance=1000.0;
   //Цикл, проверяющий каждый обьект в сцене
   for (int a=0;a< NumberOfObjects;a++)
   {
       //Трансформируем луч в каждый обьект пространства, умножая 

           //начальные и конечные точки луча на обратную матрицу

           //обьектов:-
       D3DXMATRIX matWorld;
       D3DXVECTOR3 TransformedLineStart,TransformedLineEnd;
       D3DXMatrixInverse(&matWorld,&det,&object[a].matWorld);
      D3DXVec3TransformCoord(&TransformedLineEnd,&LineEnd,&matWorld);
  D3DXVec3TransformCoord(&TransformedLineStart,&LineStart,&matWorld);
...
       //Цикл, который проверяет каждую грань нашего обьекта
       for (int b=0;b< Object[a].NumFaces;b++)
       {
       //создаем нормаль грани, используя векторное произведение.

       //Вызываем Call MGM_GetIntersect() используя начало и конец

       //линии, мировую //позицию первой вершины в грани и нормаль

       //грани
       float dist;
       if (MGM_GetIntersect (LineStart,LineEnd,

       Object[a].Face[b].Vertex[0], Normal,& intersection,& dist)

       ==true)
       {
       //Если произошло пересечение с плоскостью и если возвращенная

       //дистанция меньше, чем предыдущая записанная в

       //MGM_HitPolygone, тогда эту дистанцию записываем как текущую
           if (dist< ShortestDistance) {
               ShortestDistance=dist;
               //Если попадание произошло, запоминаем обьект и грань.

            Функция MGM_GetPick обьединяет все вызовы функций в одно.
               HitObject.Object=a;
               HitObject.Face=b;
               HitObject.HitAnything=true;
           }
       }
}
return HitObject;
} 

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

Реализация этого пункта позволяет организовать прототипный тренажер для хирургов. При выборе такого манипулятора, как скальпель, пользователь системы, может в любом месте «разрезать» кожу, и посмотреть, какие органы находятся в этом месте, или возможны какие-либо отклонения, при этом камера меняет свое положение, приближаясь к разрезаемой области, для более детального отображения системы, а некоторая область объекта полностью отсекается (рис. 3 и рис. 4).

рис. 3.

рис. 4.

Существует в этом проекте систематизация физиологии человека на отдельные системы, например, кожный покров, система мышц, система скелетной части и т.д. В реализации проекта эти системы аналогично  существуют абсолютно отдельно, при этом, каждой системе присваивается коэффициент, который обозначает «степень нажима» скальпеля на проникновение манипулятора в данную систему. Эта «степень нажима» не позволит пользователю с равной силой разрезать кожный покров, скелетный покров. Такой подход добавляет реальности к проектируемой системе.


ЗАКЛЮЧЕНИЕ

В данной диссертации были подчеркнуты острые проблемы в области медицины, что является поводом для решения этих проблем. Решением же является построение удобного интерфейса, как для пользователей, которым достаточен только ограниченный доступ, так и усовершенствование системы вплоть до виртуальной реальности, которая смогла бы заменить дорогостоящие тренажеры, применявшиеся в области медицины.

Мною была реализована пробная система. Этот проект может быть использован как для обучения студентов в области анатомии, так и для проектирования и тренировки операции. Для последнего случая необходима более точная доработка по реализации и визуализации систем и органов человека, моделирование потоков крови, детальная разработка базы данных, для чего необходимо общение с персоналом, работающим в области медицины, а возможно и с дизайнерами пакетов 3ds Max или Maya.

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

Центр микрохирургии глаза прекрасным образом компьютеризирован. Врачи снабжены хорошими компьютерными станциями, которые позволяют делать самые сложные и тонкие операции. Тем не менее, интерфейс с этими станциями требует большой нагрузки от медика. На этой технике очень сложно осуществлять тренировку и подготовку к операции, Одной из области применения наших идей и реализации может быть тренажер для медиков. Однако, в связи с тем, что медики работают не скальпелем, а манипулируют различными инструментами, необходимо подумать о правильной методике манипуляционного инструмента.

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

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


СПИСОК ЛИТЕРАТУРЫ

  1.  «Computer Graphics & Medicine», Luciana Porcher Nedel, Isabel Harb Mannsour, Carla Maria Dal Sasso Freitas, UFRGS, Campinas 1999;
  2.  «Theory of Three Dimensional Computer Graphics», Szirmay-Kalos, Marton, Dobos, Horvath, Risztics, Kovacs;
  3.  «Visualizing a Knowledge Domain’s Intellectual Structure», Chaomei Chen, Rey J. Paul, Brunel University, 2001;
  4.  «XML in the Visualization Pipeline», Warwick Irwin, Neville Churcher, New Zealand;
  5.  «Information Visualization in the Interaction With IDL», Maria Francesca Costabile, Giovanni Semeraro, Italy;
  6.  «User Interface Declarative Models and Development Environments: A Survey», Paulo Pinheiro da Silva, England 2000;
  7.  “System Metaphor in “Extreme Programming”: A Semiotic Approach”, Rilla Khaled, Pippin Barr, James Noble, Robert Biddle, New Zealand & Canada.
  8.  «Трехмерное моделирование и анимация человека», 2–е издание, Питер Ратнер, изд. Вильямс, 2005;
  9.  Авербух В.Л. Метафоры визуализации // Программирование, 2001. N 5, с. 3-17.
  10.  Авербух В.Л. К теории компьютерной визуализации // Вычислительные технологии Т. 10, N 4, 2005 , стр 21-51.


 

А также другие работы, которые могут Вас заинтересовать

20469. Якість ПЗ 13.62 KB
  Підвищення якості ПЗ по одній з властивостей часто може бути досягнуто наприклад ціною зміни вартості термінів завершення розробки тощо. В даному випадку мова не йде про розробку ідеального з точки зору показників якості ПЗ досягнути цього скоріш всього взагалі неможливо а про розробку ПЗ із задовільною якістю. Тому при опису якості ПЗ насамперед повинні бути визначені критерії оцінки якості ПЗ. критеріями якості ПЗ вважають: функціональність надійність легкість застосування ефективність супровід ...
20470. Забезпечення функціональності ПЗ 12.34 KB
  При розробці ПС доцільно застосовувати різні методи еталони і види тестування кожний з яких орієнтований на виявлення локалізацію або діагностику певних типів дефектів.У складних комплексах програм при будьякій технології розробки неможливо гарантувати абсолютну відсутність дефектів і помилок. Непередбачуваність виду місця і часу прояви дефектів ПС в процесі експлуатації призводить до необхідності створення спеціальних додаткових систем автоматичної оперативної захисту від ненавмисних випадкових спотворень обчислювального процесу...
20471. Безпека програмного забезпечення 16.55 KB
  Проблеми хто потенційно може здійснити практичне впровадження програмних дефектів деструктивного впливу в програмний код які можливі мотиви дій суб'єкта що здійснює розробку таких дефектів як можна ідентифікувати наявність програмного дефекту як можна відрізнити навмисний програмний дефект від програмної помилки які найбільш імовірні наслідки активізації деструктивних програмних засобів при експлуатації комп'ютерних систем Меоди та концепції захисту Для захисту програм від дослідження необхідно застосовувати методи захисту від...
20472. Методологiя структурного програмування 17.08 KB
  Метою структурного програмування є створення ієрархічно впорядкованих модульних програм в яких застосовуються стандартні керуючі конструкції. Одним із шляхів вдосконалення структурного програмування є введення стандартів що регламентують процес програмування. Необхідність стандартизації програмування обумовлена: необхідністю підвищення експлуатаційних характеристик програм що створюються; прагненням зробити систему достатньо простою доступною для сприйняття програмістом який знайомий з відповідними стандартами; вимогою зробити систему...
20473. Клієнт-сервер (англ. Client-server) 16.26 KB
  Clientserver обчислювальна або мережева архітектура в якій завдання або мережева навантаження розподілені між постачальниками послуг сервісів званими серверами і замовниками послуг званими клієнтами. Нерідко клієнти і сервери взаємодіють через комп'ютерну мережу і можуть бути як різними фізичними пристроями так і програмним забезпеченням.Багаторівнева архітектура клієнтсерверБагаторівнева архітектура клієнтсервер різновид архітектури клієнтсервер в якій функція обробки даних винесена на один або декілька окремих серверів. Це...
20474. Ефективність програмного забезпечення та її оцінка 36 KB
  Оптимізація – це покращення характеристик програмної системи або просто програми. Отже перший етап програмування – створення правильної програми і лише другий – її оптимізація. Але перед тим як починати покращувати ефективність програми слід перевірити наскільки це покращення буде корисним і точно визначити місце яке слід переробити. Справа у тому що існує правило 20 80: 20 об’єктного коду тексту програми виконується 80 часу роботи всієї програми.
20475. Абсолютна величина і норма матриці 139 KB
  За абсолютну величину модуль матриці будемо вважати матрицю де – модулі елементів матриці . Якщо і – матриці для яких операції і мають сенс то: а б в число. За норму матриці вважаємо дійсне число що задовольняє умови: а причому тоді і тільки тоді коли =0; б число і зокрема ; в ; г і матриці для яких відповідні операції мають сенс.
20476. Біном Ньютона 31 KB
  Запишемо його у вигляді добутку пронумерувавши дужки: Кожний доданок містить n множників: k множників a і nk множників b тобто має вигляд akbnk де k≤n k≥0.
20477. Візуальні мови проектування специфікацій 36 KB
  Складність сучасних обчислювальних систем а також висока вартість створення якісного та надійного програмного забезпечення ЕОМ стимулюють розвиток теоретично обгрунтованих методів та засобів розробки програмних систем. Особливо актуальним є застосування таких методів та засобів при об'єктноорієнтованому підході до створення програмних систем. Формалізовані візуальні мови набули широкого використання при проектуванні та розробці складних програмних систем. Об'єктноорієнтовані методи розробки програмного забезпечення широко застосовують...