240 likes | 408 Views
3 D графика в Silverlight 5 beta. Виталий Дильмухаметов Oogway software. Основы 3D. 3 координаты точки – ( X,Y,Z ) В Si l verlight 5 – правосторонняя система координат Вектор – задаёт направление и скорость движения. B( x b ,y b ,z b ). Y. C( x c ,y c ,z c ). A( x a ,y a ,z a ).
E N D
3D графика в Silverlight5 beta Виталий Дильмухаметов Oogway software
Основы 3D • 3 координаты точки – (X,Y,Z) • В Silverlight 5 – правосторонняя система координат • Вектор – задаёт направление и скорость движения B(xb,yb,zb) Y C(xc,yc,zc) A(xa,ya,za) X Z K(xk,yk,zk)
Основы 3D • Модель состоит из полигонов • Точка – вершина (vertex) • Несколько граней – сетка (mesh) Контуры Вершины Грани Полигоны Поверхности
Матрицы в 3D • Имеют вид 4x4 • Матрица мира: • Перемещение • Вращение • Масштаб • Матрица вида: • Управление камерой • Матрица проекции: • Настройка проекции 3D на экран
Матрицы в 3D • Преобразование модели (координат вершин) Матрица проекции Матрица мира Матрица вида Область отображения
3D в Silverlight 5 • Основа – элемент управления DrawingSurface • Отрисовка силами GPU • HLSL шейдеры версии 2.0 • API из XNA • Встроенные эффекты (не в beta) • Библиотека XNA Math Helper
Процесс отрисовки Пиксельный шейдер Вершинный шейдер • Буфер вершин • Буфер индексов вершин • Матрицы преобразования • Положение/тип источника • света • Текстуры
Шейдеры • Для написания используется HLSL • Компиляция при помощи FXC из DirectX SDK • Используется версия 2.0 (поддержка в очень большом спектре GPU) • Вершинные шейдеры • Работа с данными вершин • Пиксельные шейдеры • Обработка точек результирующего изображения
Шаг 1: Включение 3D • Добавить в HTML: <objectdata="data:application/x-silverlight-2,"type="application/x-silverlight-2"...> <paramname="EnableGPUAcceleration"value="true"/> </object>
Шаг 2: DrawingSurface • Добавить в XAML-разметку: <Gridx:Name="LayoutRoot"Background="Black"> <DrawingSurface Draw="OnDraw" /> </Grid>
Шаг 3: Отрисовка • Обработчик OnDraw() publicvoid OnDraw(Object sender, DrawEventArgs args) { // Очистка поверхности args.GraphicsDevice.Clear(...); // Собственно отрисовка args.GraphicsDevice.DrawPrimitives(...); // Объявить о необходимости обновить поверхность // За этим вызовом следует генерирование Draw ещё раз args.InvalidateSurface(); }
Демо Простое приложение с 3D-графикой
Важные моменты • В приложениях c 3D: • UI поток • Поток отрисовки 3D (в нём выполняется обработчик Draw) • Из потока отрисовки нельзя обращаться к DependencyProperty! • Использование промежуточной модели данных, блокировки и кэширования • Анимация в 3D – посредством матричных преобразований
Важные моменты • Создание ресурсов (текстур, шейдеров и пр.) – вне обработчика Draw • Для исключения задержек при отрисовке • Использование GraphicsDeviceManager.Current.GraphicsDevice • Поддержка смешивания цветов • Silverlight использует BGRA, XNA – RGBA! • Проверка доступности 3D: • GraphicsDeviceManager.Current.RenderMode • Событие RenderModeChangedуGraphicsDeviceManager
Немного о будущем • Не войдёт в релиз 5 версии: • Content pipeline и работа с моделями • Обработка ввода • 3D звук • Пользовательские эффекты • Средства упрощения создания игр
Немного о будущем • Не вошло в beta и будет добавлено: • Эффекты (BasicEffect, SkinnedEffect, Environment Map и др.) • Антиалиасинг • Рисование на текстуре (render target texture) • Управление устройствами • Доп. параметры для DrawingSurface
Babylon • Графический движок • Обнаружение столкновений • BasicEffect– освещение и отражение света Авторы: David Catuhe, Michel Rousseau URL: http://code.msdn.microsoft.com/Babylon-3D-engine-f0404ace
3D Housebuilder • Частичная поддержка COLLADA • Трансляция 2D координат мыши в 3D • MIP-текстурирование Авторы: Archetype, Inc. (http://www.archetype-inc.com/) URL: http://code.msdn.microsoft.com/3D-Housebuilder-demo-from-def4af04
Silverlight 3D Model Importer • Импорт моделей из популярных форматов с помощью XNA • Анимированные модели • Освещение и текстуры Автор: Simon Ferquel URL: http://sl3dmi.codeplex.com/
Balder • Есть alpha-версия под Silverlight 5 beta • http://balder.codeplex.com/
Примеры с MIX11 • Набор исходных кодов с демонстраций MIX11, посвященных 3D в Silverlight 5 beta • Все ссылки в блоге Aaron Oneal: • http://aarononeal.info/?p=125
Полезные вещи • Инструменты • Autodesk FBX Converter 2012 • NVidia FX Composer • Microsoft DirectX SDK • Материалы • http://xnadev.ru • http://create.msdn.com