Курс «Компьютерная 3D графика и научная визуализация»

Курс состоит из одной лекции и лабораторной работы в неделю в течение 2 семестров. Его структура включает три части:
• графическая библиотека OpenGL и ее расширения WebGL и OpenCL
• пакет трехмерной графики Blender 3D и платформа Blend4Web
• визуализация научных данных на основе Blender 3D, OpenGL и Blend4Web
Содержание курса:
• Базовые понятия OpenGL: история; использование в различных средах программирования; Python и PyOpenGL; применение GitHub для реализации проекта; графические примитивы OpenGL
• Элементы трехмерной математики OpenGL: трехмерные преобразования; однородные координаты; масштабирование, деформация, отражение и сдвиг; аффинные преобразования; функции графических преобразований
• Основные возможности OpenGL: атрибуты графических примитивов; освещение; текстурирование; взаимодействие с пользователем; шейдеры; рендеринг в текстуру
• Расширения OpenGL: графика в браузере на основе WebGL, Three.js; параллельное программирование на OpenCL; программирование 3D звука на OpenAL; использование 3D камеры
• Базовые понятия Blender 3D: основные сведения; интерфейс; оконная система; устройства ввода, контекстное меню; концепция экранов и сцен
• Объекты в Blender 3D: ориентация в 3D пространстве; базовые манипуляции объектами; иерархия сцены – группы, связи, слои; работа с файлами, импорт; примеры моделирования
• Моделирование в Blender 3D: примитивы и их структура; основные инструменты редактирования; симметричное моделирование; булевы операции; вспомогательная решетка; высокополигональное моделирование; кривые Безье, поверхности NURBS; работа с текстом; модификаторы; материалы и текстуры; освещение, виртуальные камеры; применение Node Editor; создание фотореалистичных изображений, рендеринг, постпроцессинг
• Анимация и физика в Blender 3D: основы анимации; управление с Timeline; точная настройка анимации с Graph Editor; движение объекта по кривой; анимация и деформация; скелетная анимация; запись видео и звука; создание ткани; моделирование волос и меха; коллизии; моделирование мягких тел
• Скрипты и плагины в Blender 3D: использование Python скриптов; пакеты Mathutils, BPY, BMesh; создание простого плагина; примеры профессиональных плагинов – Archimesh для создания архитектурных элементов, openPSTD для моделирования звука в помещениях
• Платформа Blend4Web: концепция Blend4Web; основные возможности – геометрия, материалы, изображения, камера, морфинг, скелетная анимация, геймпад, мультитач, поддержка Leap Motion, 3D видео; примеры кода, программирование анимации на JavaScript; создание 3D презентаций
• Научная визуализация: общие принципы; симуляция на основе системы частиц; визуализация сплошных сред; визуализация течений; визуализация объемов
• Визуализация на базе Blender 3D и Blend4Web: обзор возможностей; моделирование упругих тел; силовые поля; симуляция жидкости, дыма; системы частиц; сплошные среды, течения, объемы, гало
• Публикация результатов: запись видео; панорамное видео; 3D презентация; интерактивное приложение Blend4Web