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

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

8.1. Символы и экземпляры Сначала рассмотрим, каким образом можно хранить модель, которая включает множество достаточно сложных объектов. Тут сразу возникают два вопроса: как описывать объекты, более сложные, чем те, с которыми мы работали до сих пор, и как представлять множество таких объектов. В большинстве графических API пользователя не особенно балуют разнообразием типов встроенных примитивов. Считается, что можно обойтись минимумом основных примитивов, предоставив пользователю возможность самостоятельно конструировать из них более сложные объекты. Иногда в состав графической системы включаются дополнительные библиотеки, такие как GLU и GLUT, которые мы уже не раз использовали при работе с OpenGL, и в этих библиотеках имеются средства поддержки расширенного набора объектов, созданных на основе базового комплекта примитивов. Будем считать, что нам доступны некоторые трехмерные объекты, поддерживаемые такой библиотекой. В последующих главах будут рассмотрены и другие типы геометрических объектов, в частности кривые и криволинейные поверхности (глава 10) и рекурсивно определяемые объекты (глава 11).


⇐ Предыдущая| |Следующая ⇒