| Россия, г. Новочеркасск | 
Рендеринг вращающихся кубов в DirectX
Файлы к лабораторной работе Вы можете скачать  здесь.
здесь.
Вся геометрия в трехмерной сцене составляется из графических примитивов, которые называют полигонами. В качестве полигонов чаще всего применяются треугольники. В этой работе мы будем аппроксимировать кубы с помощью треугольников. Любой квадрат, прямоугольник или параллелепипед можно сложить из двух треугольников. Соответственно куб можно создать из шести квадратов. Поскольку куб имеет восемь угловых вершин, их координаты и будут определять треугольники соответствующих граней.
Создание заготовки приложения
Чтобы не создавать приложение с нуля, мы воспользуемся результатами работы №10 и некоторыми предварительными преобразованиями подготовим ее для решения поставленной задачи.
- 
 Создайте
      новый пустой  проект с именем RenderCube  типа C# Создайте
      новый пустой  проект с именем RenderCube  типа C#
- 
 Вызовите
      контекстное меню для имени проекта или узла References   в
      панели Solution Explorer  (или в меню Project  оболочки),
      чтобы открыть окно добавления ссылок на необходимые для
      проекта библиотеки DLL Вызовите
      контекстное меню для имени проекта или узла References   в
      панели Solution Explorer  (или в меню Project  оболочки),
      чтобы открыть окно добавления ссылок на необходимые для
      проекта библиотеки DLL
- 
 Добавьте
      к проекту, удерживая клавишу Ctrl, ссылки на библиотеки Добавьте
      к проекту, удерживая клавишу Ctrl, ссылки на библиотеки
- 
 В
      панели Solution Explorer  выделите узел проекта и с помощью
      команды Add
      Existing Item  меню Project  оболочки
      добавьте к проекту файлы Form1.cs       и Program.cs  из лабораторной работы №10 В
      панели Solution Explorer  выделите узел проекта и с помощью
      команды Add
      Existing Item  меню Project  оболочки
      добавьте к проекту файлы Form1.cs       и Program.cs  из лабораторной работы №10
Файл Form1.Designer.cs является подчиненным файлу Form1.cs и скопируется оболочкой автоматически.
Оболочка скопирует эти файлы в каталог размещения нового проекта.
- 
 Убедитесь,
        что на данном этапе панель Solution Explorer  проекта выглядит
    так Убедитесь,
        что на данном этапе панель Solution Explorer  проекта выглядит
    так
- 
 Вызовите
      окно Find and Replace  комбинацией клавиш Ctrl-H  (или командой Edit/Find and Replace/Quick Replace ),
      настройте его в соответствии с рисунком и щелкните на кнопке Replace All Вызовите
      окно Find and Replace  комбинацией клавиш Ctrl-H  (или командой Edit/Find and Replace/Quick Replace ),
      настройте его в соответствии с рисунком и щелкните на кнопке Replace All
Оболочка выполнит во всех файлах замену пространства имен SimpleMedia на RenderCube. Это действие нужно для того, чтобы классы приложения находились в одном (уже новом) пространстве имен и видели друг друга.
Для того, чтобы упростить задачу - не задавать координаты нормалей, настроим наш код на работу без источника света. Для этого вместо режима использования структуры PositionNormalColored нужно применить структуру PositionColored и отключить источник света.
- 
 Откройте
      файл Form1.cs  в режиме View Code,
      вызовите окно Find
      and Replace  комбинацией
      клавиш Ctrl-H  и  при настройке Currend Document  выполните
    замену PositionNormalColored  на PositionColored Откройте
      файл Form1.cs  в режиме View Code,
      вызовите окно Find
      and Replace  комбинацией
      клавиш Ctrl-H  и  при настройке Currend Document  выполните
    замену PositionNormalColored  на PositionColored
- 
 Через
    раскрывающийся список Members  редактора
    кода позиционируйтесь на обработчике vb_Created()  и
    удалите из него  код создания нормалей к вершинам
    треугольника Через
    раскрывающийся список Members  редактора
    кода позиционируйтесь на обработчике vb_Created()  и
    удалите из него  код создания нормалей к вершинам
    треугольника
// Дополнить вершины параметрами нормалей
            verts[0].SetNormal(new Vector3(0.0F, 0.0F, -1.0F));
            verts[1].SetNormal(new Vector3(0.0F, 0.0F, -1.0F));
            verts[2].SetNormal(new Vector3(0.0F, 0.0F, -1.0F));
                            Листинг
                        12.1.
                    Удаляемый код создания нормалей в обработчике vb_Created()
- 
 Удалите
    из функции OnPaint()  код настройки источника света Удалите
    из функции OnPaint()  код настройки источника света
// Настроить параметры света источника с номером 0
            device.Lights[0].Type = LightType.Point;    // Точечный источник
            // По умолчанию (0,0,0) - источник в начале координат
            device.Lights[0].Position = new Vector3();  
            // Свет диффузионный белый
            device.Lights[0].Diffuse = System.Drawing.Color.White;
            // Затухание света при удалении
            device.Lights[0].Attenuation0 = 0.2f;
            // Дальность освещения, поддерживаемая устройством 
            device.Lights[0].Range = 1000.0f;
            // Принять настройки
            device.Lights[0].Commit();
            // Установить активным 
            device.Lights[0].Enabled = true;
                            Листинг
                        12.2.
                    Удаляемый код настройки источника света в функции OnPaint()
- 
 В
      функции SetupCamera()  отключите освещение
    сцены, установив флаг device.RenderState.Lighting     конвейера
    в состояние false В
      функции SetupCamera()  отключите освещение
    сцены, установив флаг device.RenderState.Lighting     конвейера
    в состояние false
- 
 Установите
          режим Release  работы компилятора и
          запустите приложение, чтобы проверить, что на данном
          этапе оно   функционирует
  нормально Установите
          режим Release  работы компилятора и
          запустите приложение, чтобы проверить, что на данном
          этапе оно   функционирует
  нормально
Мы видим, что одновременно запускаются два окна: консольное и графическое. Отключим консольное окно.
- 
 В
      панели Solution Explorer  для узла проекта вызовите контекстное
      меню и выполните команду Properties В
      панели Solution Explorer  для узла проекта вызовите контекстное
      меню и выполните команду Properties
- 
 Для
      вкладки Application  окна свойств проекта
      установите свойство Output
      type  в
      значение Windows
    Application  и закройте это окно свойств Для
      вкладки Application  окна свойств проекта
      установите свойство Output
      type  в
      значение Windows
    Application  и закройте это окно свойств
На этом подготовительный этап к выполнению данной лабораторной работы завершен.
 
                             








