OpenGL в Delphi

       

Использование патчей


Одним из главных достоинств сплайнов является то, что поверхность задается небольшим количеством опорных точек - весьма экономный подход

Замечание
Возможно, к достоинствам можно отнести и то, что нет необходимости самостоятельно рассчитывать нормали к поверхности, как это делалось в предыдущем примере

Вспомним пример предыдущей главы с холмообразной поверхностью Для хранения этой поверхности достаточно запомнить шестнадцать точек, если ее разбивать по треугольникам, то шестнадцати вершин окажется явно не достаточно для сохранения гладкости.
Подкаталог Ех29 содержит модификацию примера предыдущей главы на построение NURBS-поверхности. Отличает этот проект то, что в нем задаются свойства материала, так что поверхность выглядит гораздо эффектнее, также здесь добавилось то, что среди опорных точек одна выделяется и Рисуется красным цветом. Такую точку можно перемещать в пространстве нажимая на клавиши 'X', Т, 'Z', а также на эти клавиши совместно с <Shift>. Клавишами управления курсором можно задавать, какая из опорных точек является выделенной. Создавать кусочки поверхностей с помощью сплайнов - дело несложное, если попытаться подобрать опорные точки для того, чтобы нарисовать одним сплайном поверхности подобные чайнику, то это окажется занятием крайне трудоемким. Если же поверхность имеет негладкие участки, как, например, область соприкосновения носика чайника с его корпусом, то традиционными сплайнами это нарисовать окажется вообще невозможно. Имеется стандартный способ рисования поверхностей, сочетающий в себе достоинства использования сплайнов и лишенный его недостатков: поверхность разбивается на отдельные гладкие участки, для каждого из которых строится отдельный сплайн. Такие кусочки называются патчами (patch, заплатка).
В частности, модель чайника строится именно таким способом, по отдельным патчам, вы можете заглянуть в модуль для того, чтобы убедиться в этом. Следующий пример, проект из подкаталога Ex25, строит поверхность на основе патчей, опорные точки для которых считываются из текстового файла (Рисунок 4. 19).



Содержание раздела