Иерархические графические модели
описанной в главе 6. Альтернативный вариант- объявить отдельный класс оптических свойств материала, например, в таком виде:
class material {
public: float specular[3]; float shininess; float diffuse[3]; float ambient[3];
}
Можно связать свойства материала с геометрическим объектом с помощью соответствующего метода класса геометрического объекта:
cube а; material b; a.setMaterial(b); Источники света относятся к геометрическим объектам, поскольку обладают такими характеристиками, как положение и ориентация. Объявление класса источника света может выглядеть так:
class light {
public:
boolean type; boolean near; float positionf3]; float orientation!3]; float specular[3]; float diffuse^]; float ambient[3];
}
Определив набор классов геометрических объектов, мы сможем описать сцену, включающую экземпляры таких объектов. Описание сцены также удобно оформить в виде древовидной структуры. Эту новую структуру будем называть графом сцены {scene graph).
8.8. Граф сцены
Мы считаем сцену совокупностью геометрических объектов, образы которых должны появиться на экране, и объектов других типов (камеры и источники освещения), влияющих на то, как будут выглядеть геометрические объекты. Оба типа объектов характеризуются определенными геометрическими параметрами и негеометрическими атрибутами, в частности цветом. Между всеми объектами сцены существуют определенные иерархические отношения. Например, в тот момент, когда примитив объявляется в программе, текущие параметры камеры используются для формирования образа этого примитива. Если в дальнейшем изменить параметры камеры, например фокусное расстояние объектива, и создать новый геометрический объект (пусть даже такой же формы), его образ будет отличаться от образа первого объекта. Хотя с помощью реальной фото- или кинокамеры такое изображение получить невозможно, компьютер позволяет нам проделывать еще и не такие фокусы. Для описания отношений между объектами сцены - геометрическими, камерой и источниками света - мы можем использовать все ту же древовидную структуру графа.