Поиск и разведка месторождений полезных ископаемых (562041), страница 59
Текст из файла (страница 59)
Для растровой графики вопрос контроля видимости иногда решается проще, чем для векторной графики. Коснемся алгоритмов, применимых для векторной графики. Линии, изображающие объемные предметы и пространственные сцены, могут иметь различный смысл, Во-первых, это могут быть тонкие нити, стержни, которые загораживают лежащие за ними части объекта лишь в пределах собственной толщины. Во-вторых, линии могут изображать рисунок, нанесенный на какую-нибудь плоскость, поверхность. Сам по себе такой рисунок тоже ничего не загораживает. В-третьих, это могут быть края, граничные линии участков поверхностей, граней, которыми часть объекта заканчивается или по которым одна грань сопрягается с другой.
Наблюдая объект, можно видеть и такие очерковые, или, как иногда говорят, контурные линии, которые для нашего глаза представляют видимую границу объекта, но на самом объекте их как таковых нет. Причины, по которым какая-либо линия может быть на проекции частично или полностью невидимой, могут быть двоякого рода: либо носитель линии (поверхность, грань, сплошное тело) повернут к наблюдателю «обратной» стороной, либо линия заслоняется более близкими к зрителю частями объекта. Всвязи с этим программы контроля видимости могут опираться на два критерия: критерий ориентации и критерий зкранирования. Пусть объект является выпуклым многогранником или выпуклой поверхностью, которая может быть представлена набором мелких граней.
Если многогранник— сплошное тело, то ясно, что любая его грань может быть видима только с одной — наружной стороны. Пусть и кусок поверхности обладает таким же свойством. Вопрос: как аналитически проверить, с какой стороны видна грань (часть поверхности) на проекции? Один из приемов такой. Нанесем на грань три пронумерованные точки, образующие треугольник — такой, чтобы при взгляде на эту грань с внешней стороны треугольник имел положительную ориентацию (чтобы направление обхода его вершин было положительным), Тогда на проекции признаком того, что грань видна с этой же наружной стороны, будет положительная ориентация проекции этого треугольника.
Если известны координаты точек в первичной пространственной координатной системе, очевидно, можно найти координаты их образов в системе чертежа. Можно воспользоваться простой формулой, определяющей ориентированную площадь треугольника, или сходной формулой, подсчитывающей величину векторного произведения двух сторон треугольника, принятых за векторы: С = (х« — х,) (у,— — у,) — (х» — х,) (у, — у,). Знак величины С указывает, с какой стороны мы видим грань. Для правильной работы этого способа используемые преобразования координат должны сохранять ориентацию пространственных осей.
Другой прием заключается в том, что в какой-либо точке исследуемой грани или в точке поверхности строят нормальный к ним вектор, направленный «наружу», и определяют величину его проекции на луч зрения, направленный в его основание. Если знак проекции отрицательный — конец вектора ближе к наблюдателю, чем начало, а грань видна с наружной стороны, и наоборот. При использовании этого приема преобразования координат должны бьггь изометрическими (в расширенном смысле). Однако этот метод не позволяет полностью устранять невидимые линии, необходимо также использовать контроль по экранированню. Как осуществляется этот контроль, любопытствующие читатели могут узнать из нескольких опубликованных источников (Фокс, Пратт, 1972; Фоли, ван Дэм, 1985; Котов, 1988; Аммерал, 1992). 3а((и ))акки йпикийивй )()и ш Ь)(ийивй ми(((( В ЗО-программах используется интерактивный режим общения геолога с компьютером.
Этот режим под- Я разумевает то, что они рисуют (создают модель) по иЦМ)(Н1( йЦЦ()НА( ИЩНЩИ1 ~ (11аПЛ(1(аз ЮИЕ очереди — то рисует компьютер, то, используя курсор мыши, рисует на экране дисплея пользователь. Например, геологу нужно нарисовать линию контакта двух геологических тел между двумя скважинами. Он подводит курсор к первой скважине и просит программу (как это делается, мы не уточняем) найти точку контакта двух геологических тел на стволе скважины.
Самому геологу точно навести курсор на точку трехмерного пространства на экране дисплея практически невозможно, т. к. каждый пиксель экрана соответствует нескольким метрам в реальности. Поэтому пользователь просит программу найти «ближайшую» точку нужного качества и произвести ее «захват». То же самое делается на следующей скважине.
Потом рисуется линия контакта. Такая задача геометрически не очень трудна, а вот с точки зрения создания понятного интерфейса, связывающего программу с пользователем, может оказаться логически довольно сложной. По современным стандартам любые графические пакеты должны соответствовать разным цветовым моделям. Лучше всего известна РОВ-модель (Вес), Огееп, В1пе). Но кроме нее должны использоваться: СМУК (Суап, Мадеп1а, Уе11о»«, В1ас1с); НБВ (Ние, Багпгабоп, ВпдЫпезз); С1Е 1.аЬ (Соппп)зз(оп 1п1егпа11опа1 сГЕс1ацаде (1.) компонента — яркость; (а) цветовая компонента — от зеленого к красному; (Ь) цветовая компонента — от синего к желтому); Огаузса1е.
Пользователь должен помнить, что цвета по-разному передаются на экране дисплея, на бумаге и на транспаранте (прозрачной пленке).И это происходит не только потому, что у некоторых принтеров и графопостроителей не все в порядке с драйверами. Здесь сказываются чисто технические ограничения некоторых устройств. Например, модель Огаузса)е способна на экране дисплея воспроизвести 25б оттенков серого цвета, а на принтере воспроизводится не более 50 уровней серого цвета.
6111Щ11Щ 1ИП, 11Р1МЫ1аЬ, тИИ В ЗР-программах всегда присутствует источник освещения (в одних программах он называется фонарем, в других — прожектором~. Пользователь может менять направление освещения и его интенсивность. В большинстве программ можно включить дополнительный прожектор и точечный источник света. Все эти возможности помогают достичь максимальной выразительности модели. На самом деле задача интенсивности освещенности объекта является сложной оптико-геометрической задачей. Предположим, что направление падающего света совпадает с направлением наблюдения, т. е.
перпендикулярно плоскости экрана. 30-программы по умолчанию, действительно, выбирают такое направление. Основной источник света удален очень далеко, поэтому лучи света практически параллельны. Кроме этого источника будем предполагать наличие некоторой рассеянной составляющей, которая обусловливает, что не будут совершенно темными даже те части объекта, которые непосредственно не освещаются основным источником. Интенсивность света, отраженного от поверхности, состоит из трех составляющих: 1.
Рассеянная составляющая 1 вследствие наличия освещения объекта от окружающей среды, например от стен комнаты, 2. Диффузионная составляющая 1«, которая в соответствии с законом косинусов Ламберта пропорциональна косинусу угла д между направлением падающего света и нормалью к поверхности. 3. Зеркальная составляющая З„которая особенно применима к гладким и отражающим поверхностям, подобно зеркалу. Для полностью отражающей поверхности угол отражения равен углу падения. Способ вычисления и комбинирования этих составляющих называется моделью освещения.
Не углубляясь в суть предмета, скажем, что в большинстве случаев используется модель Фонта. Важно уяснить главное, то, что интенсивность освещенности вычисляется для всех плоских участков модели. Некоторые модели состоят из Я десятков тысяч микротреугольников. При каждом мини- 11МНП1161 И$йя11яйИ ВкСПНИДН11 1 $НШПЯЧЕ111 11ДРН мальном повороте модели должны мгновенно осуществляться миллионы арифметических операций, для того, чтобы программа знала, какие детали модели видимы, а какие невидимы в ~~нный момент, н чтобы успела рассчитать освещенность любого микротреугольника.
Пользователю также предоставляется возможность опробовать стереоэффект. В этом случае на экране появляется дубль модели, в различной степени смещенный относительно оригинала. Способности стереовидения у разных людей ощутимо отличаются. Некоторым приходится долго тренироваться, чтобы появился стереоэффект. Но зато потом они могут достичь высшей степени иллюзии объемности модели. В некоторых других областях применения программ трехмерного моделирования, например в кинематографе, используются более продвинутые варианты графического ядра.