Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Реклама

Windows presentation foundation with - MacDonald M.

MacDonald M. Windows presentation foundation with — Вильямс , 2008. — 928 c.
ISBN 978-5-8459-1429-3
Скачать (прямая ссылка): wpfwindowspresente2008.pdf
Предыдущая << 1 .. 384 385 386 387 388 389 < 390 > 391 392 393 394 395 396 .. 473 >> Следующая

Book_Pro_WPF-2.mdb 760 19.05.2008 18:11:24
Трехмерная графика 761
ценный код, предоставленный командой разработчиков WPF, а также независимыми разработчиками.
Основы трехмерной графики
Трехмерная графика в WPF включает в себя следующие ингредиенты:
• окно просмотра (viewport), содержащее ваше трехмерное содержимое;
• трехмерный объект;
• источник света, освещающий часть вашей трехмерной сцены;
• камера, представляющая точку, из которой вы наблюдаете трехмерную сцену.
Конечно, наиболее сложные трехмерные сцены будут содержать множество объектов и могут включать множество источников света. (Можно также создать трехмерный объект, не требующий источника света, если он сам является таковым.) Однако перечисленные ингредиенты представляют собой хорошую начальную точку.
Трехмерную графику от двумерной отличают, прежде всего, второй и третий компоненты. Новички в трехмерном программировании иногда предполагают, что трехмерные библиотеки — это лишь упрощенный способ создания трехмерного внешнего вида, такого как светящийся куб или вращающаяся сфера. Но если это все, что вам нужно, то, вероятно, для такого трехмерного рисования вам стоит ограничиться классами двумерной графики, о которых мы рассказали выше. В конце концов, нет причин, которые помешали бы вам использовать фигуры, трансформации и геометрию, о которой шла речь в главах 13 и 14, чтобы сконструировать формы, выглядящие объемными. Фактически, это даже проще, чем с то же самое с применением трехмерных библиотек.
Так в чем же преимущество использования поддержки трехмерной графики в WPF? Первое преимущество состоит в том, что вы можете создавать эффекты, которые чрезвычайно сложно вычислить на основе эмулируемой трехмерной модели. Хорошим примером могут быть такие эффекты, как отражение, которое становится чрезвычайно сложным, когда приходится иметь дело с множественными источниками света и разными материалами с различной отражающей способностью. Другое преимущество использования трехмерной графической модели заключается в том, что она позволяет взаимодействовать с вашим изображением как с набором трехмерных объектов. Это значительно расширяет ваши программистские возможности. Например, однажды построив требуемую трехмерную сцену, вы получаете простую возможность вращения объекта или вращения камеры вокруг объекта. Для выполнения той же работы на основе двумерной программной модели потребуется чудовищный объем кода (и математики).
Теперь, когда вы знаете, что вам нужно, попробуем построить пример, включающий все перечисленные выше составляющие. Потом в последующих разделах мы будем постепенно изменять этот пример.
Окно просмотра
Если вы хотите работать с трехмерным содержимым, вам понадобится контейнер, который может его в себе разместить. Этот контейнер представлен классом Viewport3D, находящимся в пространстве имен System.Windows.Controls. Класс Viewport3D унаследован от FrameworkElement и потому может быть размещен везде, где размещается любой обычный элемент. Например, вы можете использовать его в качестве содержимого окна либо страницы или же поместить внутрь более сложной компоновки.
Класс Viewport3D лишь намекает на сложность трехмерного программирования. Он добавляет только два свойства: Camera, определяющее точку зрения на трехмерную сцену, и Children, содержащее все трехмерные объекты, которые вы хотите поместить
Book_Pro_WPF-2.mdb 761 19.05.2008 18:11:24
762 Глава 23
на сцене. Достаточно интересно то, что источник света, освещающий вашу сцену, сам является объектом в окне просмотра.
На заметку! Среди унаследованных свойств класса viewport3D одно является особенно важным — ClipToBounds. Если оно установлено в true (по умолчанию так и есть), то содержимое, выходящее за пределы окна просмотра, усекается. Если же упомянутое свойство равно false, это содержимое появляется поверх любых соседних элементов. Это то же поведение, что вы получаете от свойства ClipToBounds класса Canvas. Однако при использовании viewport3D тут есть одно существенное отличие: производительность. Установив Videport3D.ClipToBounds в false, можно в значительной мере увеличить производительность при визуализации сложной, часто обновляемой трехмерной сцены.
Трехмерные объекты
Окно просмотра может содержать в себе любой трехмерный объект, унаследованный от Visual3D (из пространства имен System.Windows.Media.Media3D, в котором находится подавляющее большинство трехмерных классов). Однако чтобы создать трехмерное представление, вам придется выполнить немного больше работы, чем вы можете предположить. В версии 1.0 библиотеки WPF не хватало коллекции трехмерных фигур-примитивов. Если вам нужен был куб, цилиндр или тор, то приходилось строить их самостоятельно.
Одним из наиболее удачных проектных решений команды разработчиков WPF, принятых при создании классов рисования трехмерной графики, была структуризация их способом, подобным структуризации классов рисования плоской графики. Это означает, что вы можете легко разобраться в назначении многих классов, образующих основу трехмерной графики (даже не зная еще, как их следует использовать). В табл. 23.1 представлены соответствующие аналогии.
Предыдущая << 1 .. 384 385 386 387 388 389 < 390 > 391 392 393 394 395 396 .. 473 >> Следующая