Секция «Информатика и вычислительная техника»
Модели деревьев с различной глубиной рекурсии: а - глубина рекурсии = 5; б - 6; в - 7; г - 8; д - 9; е - 10 соответственно
Также стоит отметить, что при смене силы ветра дерево не меняет вид мгновенно - то есть не хватает еще и инерции. Хаотичность (неравномерность) ветра хорошо описывает так называемый шум Перлина. Инерция подразумевает постепенное изменение позиции при мгновенно изменившейся силе. Для этого будем использовать обычную линейную интерполяцию между предыдущим и текущим значениями ветра по времени:
sv4 = sv4 х (1 - сИ) + Су4 х сИ, где - статичный (сохраняющий значение между вызовами процедуры) вектор; Су4 - вектор ветра; С -время, прошедшее с предыдущего кадра.
Внесем хаотичность, добавим к «у4 случайную величину, заданную шумом Перлина, и резонансные случайные движения тонких веток, зависящие от силы ветра. Для трех верхних ступеней рекурсии заполним их случайными числами так, чтобы для тонких веток значения были больше.
Все расчеты были произведены с помощью вер-тексных шейдеров, что обеспечило высокое быстродействие и предотвратило необходимость загрузки в оперативную память больших объемов информации. Разработанный программный продукт написан на
языке Visual Basic из состава Microsoft Visual Studio 2008 Express. Для запуска EXE файлов необходимо иметь установленными NET Framework 2.0, DirectX9.0c и Managed DirectX. Видеоадаптер должен поддерживать вертексные шейдеры vsi-1.
Библиографические ссылки
1. Honda H. Description of the form of trees by the parameters of the tree-like body: Effects of the branching angle and the branch length on the shape of the tree-like body // Journal of Theoretical Biology 31, 1971. Р. 331338.
2. Prusinkiewicz P., Mark S., Hammel E. M. Animation ofplant development. ACM Press, 2001.
3. Prusinkiewicz P., Hanan J., Mech R. An L-System Plant Modeling Language // In Proc. of the Int. Workshop AGTIVE'99, The Netherlands, September, 1999. Р. 395410.
4. Runions A., Lane B., Prusinkiewicz P. Modeling trees with a space colonization algorithm // Eurographics Workshop on Natural Phenomena, 2007. Р. 63-70.
© Чунина А. А., Фаворская М. Н., 2011
УДК 004.932
Д. С. Яковлев Научный руководитель - М. Н. Фаворская Сибирский государственный аэрокосмический университет имени академика М. Ф. Решетнева, Красноярск
ТЕХНОЛОГИИ ФИЛЬТРАЦИИ ТЕКСТУР
Рассматриваются проблемы, возникающие при отображении текстур в трехмерной графике, такие как эффекты увеличения и уменьшения текстур, а также разновидность эффекта ступенчатости применительно к текстурным поверхностям. Приведен обзор основных современных подходов, позволяющих решить эти проблемы.
Текстурирование является важнейшим элементом сегодняшних 3Б приложений, без текстур многие трехмерные модели теряют значительную часть своей визуальной привлекательности. Однако процесс нанесения текстур на поверхности не обходится без арте-
фактов и соответствующих методов их подавления. В мире трехмерных игр встречаются специализированные термины типа«М1Р-таррт%», «трилинейная фильтрация» и т.п., которые как раз и относятся к этим методам [1].
Актуальные проблемы авиации и космонавтики. Информационные технологии
Предположим, что мы рисуем шахматную доску практически бесконечного размера на экране и смотрим на нее под небольшим углом. Для достаточно удаленных участков доски размеры клеток неизбежно начнут уменьшаться до размера одного пикселя и меньше. Это так называемое оптическое уменьшение текстуры (minification). Между пикселями текстуры начнется «борьба» за обладание пикселями экрана, что приведет к неприятному мельтешению, что является одной из разновидностей эффекта ступенчатости. Увеличение экранного разрешения (реального или эффективного) помогает только немного, потому что для достаточно удаленных объектов детали текстур все равно становятся меньше пикселей.
С другой стороны, наиболее ближние к нам части доски занимают большую экранную площадь, и можно наблюдать огромные пиксели текстуры. Это называется оптическим увеличением текстуры (magnification). Хотя эта проблема стоит не так остро, для уменьшения негативного эффекта с ней тоже необходимо бороться.
Для решения проблем текстурирования применяется так называемая фильтрация текстур. Если разобраться в процессе рисования трехмерного объекта с наложенной текстурой, можно увидеть, что вычисление цвета пикселя идет как бы «наоборот», - сначала находится пиксель экрана, куда будет спроецирована некоторая точка объекта, а затем для этой точки находятся все пиксели текстуры, попадающие в нее. Выбор пикселей текстуры и их комбинация (усреднение) для получения финального цвета пикселя экрана и называется фильтрацией текстуры.
В процессе текстурирования каждому пикселю экрана ставится в соответствие координата внутри текстуры, причем эта координата не обязательно целочисленная. Более того, пикселю соответствует некоторая область в изображении текстуры, в которую могут попадать несколько пикселей из текстуры. Будем называть эту область образом пикселя в текстуре. Для ближних частей нашей доски пиксель экрана становится значительно меньше пикселя текстуры и как бы находится внутри него (образ содержится внутри пикселя текстуры). Для удаленных, наоборот, в каждый пиксель попадает большое количество точек текстуры (образ содержит в себе несколько точек текстуры). Образ пикселя может иметь различную форму и в общем случае представляет собой произвольный четырехугольник [2].
Рассмотрим различные методы фильтрации текстур и их вариации. В наиболее простом методе «Ближайшего соседа» (Nearestneighbor) в качестве цвета пикселя просто выбирается цвет ближайшего соответствующего пикселя текстуры. Этот метод самый быстрый, но и наименее качественный. «Билинейная фильтрация» (Bilinear) находит четыре пикселя текстуры, ближайшие к текущей точке экрана и результирующий цвет определяется как результат смешения цветов этих пикселей в некоторой пропорции.
Метод ближайшего соседа и билинейная фильтрация работают достаточно хорошо, когда степень уменьшения текстуры невелика и, когда мы видим
текстуру под прямым углом, т.е. фронтально, потому что для случая сильного уменьшения «образ» пикселя экрана в текстуре будет включать в себя очень много пикселей текстуры (вплоть до всех пикселей). Кроме того, если мы смотрим на текстуру под углом, этот образ будет сильно вытянут. В обоих случаях описанные методы будут работать плохо, поскольку фильтр не будет «захватывать» соответствующие пиксели текстуры. Для решения этих проблем применяют «MIP-mapping» и «анизотропную фильтрацию» [4].
При обработке большого числа пикселей текстуры для усреднения всех точек требуются значительные затраты вычислительных и временных ресурсов. Однако проблему можно решить, если создавать и хранить версии текстуры, в которых значения будут усреднены заранее, а на этапе визуализации для пикселя искать нужную версию исходной текстуры и брать значение из нее, этот принцип лежит в основе технологии «MIP-mapping». При использовании этой технологии в памяти графического ускорителя в дополнение к изображению текстуры хранится набор ее уменьшенных копий, причем каждая новая в два раза меньше предыдущей. Далее для каждого пикселя выбирается подходящий уровень MIP-map (чем больше размер «образа» пикселя в текстуре, тем меньший MIP-map берется). Значения в MIP-map могут усредняться билинейно или методом ближайшего соседа и дополнительно происходит фильтрация между соседними уровнями MIP-map. Такая фильтрация называется «трилинейной». Она дает весьма качественные результаты и широко используется на практике. Однако проблема с «вытянутым» образом пикселя в текстуре остается [3].
«Анизотропная фильтрация» (Anisotropicfiltering) -это процесс фильтрации текстуры, специально учитывающий случай вытянутого образа пикселя в текстуре [5]. Фактически, вместо квадратного фильтра (как в билинейной фильтрации), используется вытянутый, что позволяет более качественно выбрать нужный цвет для экранного пикселя. Такая фильтрация используется вместе с «MIP-mapping» и дает на сегодняшний день наилучшие результаты. Однако, существуют и недостатки: реализация анизотропной фильтрации достаточно сложна и при ее включении скорость рисования значительно падает. Анизотропная фильтрация поддерживается последними поколениями графических процессоров NVidia и ATI. Причем с различным уровнем анизотропии - чем больше этот уровень, чем более «вытянутые» образы пикселей можно корректно обрабатывать и тем лучше качество [3].
Библиографические ссылки
1. Гайдуков С. Н. OpenGL. Профессиональное программирование трехмерной графики на C++. СПб. : БХВ-Петербург, 2004.
2. Порее В. Н. Компьютерная графика. СПб. : БХВ-Петербург, 2002.
3. Игнатенко А. Современные технологии улучшения качества 3D-изображений. Компьютерная графика и мультимедиа. Вып. 2004. № 2(1). URL:
Секция ««Информатика и вычислительная техника»
http://cgm.computergraphics.ru/content/view/56- 5. Wikipedia, thefreeencyclopedia. URL: http://
04.03.2011. en.wikipedia.org/wiki/Anisotropic_filtering. 02.03.2011.
4. Анизотропная фильтрация. URL: http://www.
ixbt.com/video/anisotropic.html. 04.03.2011. © Яковлев Д. С., Фаворская М. Н., 2011
УДК 669.713.7
Д. Н. Яковлев Научный руководитель - Р. Р. Кагиров Сибирский государственный аэрокосмический университет имени академика М. Ф. Решетнева, Красноярск
ПРОГРАММНАЯ СИСТЕМА ПОСТРОЕНИЯ ТОПОЛОГИИ ЛОКАЛЬНОЙ СЕТИ ПО ДАННЫМ ТАБЛИЦЫ МАС-АДРЕСОВ
Рассматриваются алгоритмы построения топологии сети.
Имеется компьютерная сеть, расположение узлов которой не известно. Документация по указанной сети отсутствует. Управление сетью без документации затруднительно, а иногда и невозможно. Решить проблему можно двумя способами: провести инвентаризацию или построить структуру автоматически по данным таблиц МАС (Media Access Control, аппаратный адрес) адресов коммутаторов и маршрутизаторов.
Целью является рассмотрение алгоритмов построения физической топологии сети, выявление наиболее эффективных из них.
В связи с ростом компьютерных сетей появляется острая необходимость в качественном управлении и мониторинге. Одной из задач управления является знание физической топологии сети, что позволит уменьшить время на поиск неполадок. Системы мониторинга более развиты по сравнению с системами управления, так как в этих системах используются общепринятые стандарты.
В настоящее время используются два основных подхода к построению. Первый заключается в использовании специальных протоколов, которые самостоятельно обнаруживают связи между узлами сети. Второй подход заключается в самостоятельной обработке информации на основе данных таблицы МАС-адресов.
Чтобы обеспечить работоспособность первого варианта необходимо, чтобы все сетевые узлы поддерживали протокол LLDP (Link Layer Discovery
Protocol, протокол обнаружения канального уровня). Т.к. этот протокол утвержден только в 2009 г., то еще не на всем оборудовании он реализован. В связи с этим недостатком, был реализован алгоритм выявления связей между узлами сети по данным таблиц МАС-адресов, собранных со всех узлов сети.
Суть алгоритма заключается в выявлении физических связей между коммутаторами или маршрутизаторами по данным, собранным со всех узлов сети по протоколу SNMP (Simple Network Management Protocol, протокол простого управления сетями). Работа алгоритма предполагает следующие ограничения:
Все сетевое оборудование находится в одной логической сети (например, в одном VLAN (Virtual Local Area Network))
Поддержка сетевым оборудованием стандарта RFC 1493.
Не поддерживает следующие протоколы: LACP (Link Aggregation Control Protocol, протокол агрегирования физических каналов), STP (Spanning Tree Protocol, протокол связующего дерева) и их разновидности.
Программа реализована на языке программирования PHP и использует СУБД MySQL. Работает под операционной системой Unix, также может работать и под другими операционными системами. В качестве входных данных задается диапазон IP-адресов узлов сети и версия протокола SNMP.
© Яковлев Д. Н., Кагиров Р. Р., 2011