Модель трехмерной сцены и библиотека OpenGL

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

?рмаль для квадрата определяется аналогичным образом как и для круга.

  1. Параллелепипед

У параллелепипеда нормаль определяется перпендикуляром к каждой грани и значит для всей грани нормаль будет одна и направлена наружу.

  1. Полусфера

Нормаль для полусферы определяется координатами самой фигуры, поэтому просто переписаны координаты из glVertex3f в glNormal3f.

 

Графическое представление тела с освещением

 

 

Описание наложения текстуры на тело

 

Для наложения текстур на тела, поверхности применяется функция SetupTextures(); В своей работе я использовал 4 вида текстуры, различных размеров. Текстура накладывается на цилиндр, параллелепипед, лопасть, квадрат. Способ наложения примитивно прост. По порядку разберёмся с каждой из фигур.

  1. Цилиндр.

Для того, чтобы наложить текстуру на фигуру необходимо было абстрактно раскрутить цилиндр в ровную поверхность, прямоугольник и сопоставить координаты полученного прямоугольника с координатами текстуры, как показанно на рисунках.

 

 

 

  1. Параллелепипед.

По аналогии с цилиндром абстрактно раскучиваем параллелепипед и наложим текстуру.

  1. Лопасть.

На лопасть текстура накладывается также исходя из особенности посторения. Поскольку лопасть получается путем видоизменения прямоугольника, т.е. строится из прямоугольником накладывающихся сторонами друг на друга и поворачивающихся по мере наложения на некий угол, то на лопасть текстура накладывается по аналогии с прямоугольником, как это было показано на цилиндре.

  1. Квадрат.

Текстура на квадрат накладывается один к одному с существующими координатами.

 

Графическое представление тела с текстурой

 

 

Описание представления поверхности

Поверхность строится перебором координат x и y в пределах от -N до N и вычислением для каждой пары (x,y) значения z.

 

 

Нормаль к поверхности в точке находятся через честные производные функции по x, y, z

 

 

Примечание: Поскольку при обходе циклов по i и j они оба обращаются в ноль, то для того, чтобы избежать выход из области действительных значений координат в выражения для вектора нормали по х и по у вписаны незначительные для конечного результата добавки.

Текстура на поверхность накладывается целиком и растягивается по размерам поверхности. Наложение происходит соотношением координат поверхности и координат текстуры так, что каждому QUAD, из которого строится поверхность, соотносится часть растрового изображения, разбивая его, свои образом, на сетку. Координаты текстуры для точки :

 

 

Графическое представление поверхности

 

 

 

 

 

 

 

Список используемой литературы

 

  1. А.В. Боресков. Графика Трехмерной Компьютерной Игры на Основе OpenGL. М.: Диалог-МИФИ,2004
  2. Ю.М. Боянковский, А.В. Игнатенко, А.И. Фролов. Графическая библиотека OpenGL. уч.-мет.пособие. Москва,2003
  3. NeHe Tutorials