1C.Net:Предприятие + DirectX = 3D-графика на формах 1С:Предприятие

24.06.2010 07:08 [25.06.2010 14:14] Elisy 18 [+] [−] Перейти к комментариям (9)

Внешний отчет, обработка для 1С: Предприятие 8.0; 1С: Предприятие 8.1; 1С: Предприятие 8.2

1C.Net:Предприятие + DirectX = 3D-графика на формах 1С:Предприятие

Представленный пример для 1С:Предприятие 8.1 посвящен трехмерной графике. Информации по использованию 3d в 1С Интернет не предоставляет. Пример будет полезен 1С-разработчикам, программирующим для души. Так как пока сложно представить бухгалтеров, как в игре, гуляющих внутри 1С по виртуальным 3д-складам, листающих виртуальные 3д-журналы документов. Хотя почему бы и нет. Кто знает, что нас ждет через несколько лет и как изменятся знакомые нам программы.

или посмотреть и скачать все файлы (1)

Представленный пример для 1С:Предприятие 8.1 посвящен трехмерной графике. Информации по использованию 3d в 1С Интернет не предоставляет. Пример будет полезен 1С-разработчикам, программирующим для души. Так как пока сложно представить бухгалтеров, как в игре, гуляющих внутри 1С по виртуальным 3д-складам, листающих виртуальные 3д-журналы документов. Хотя почему бы и нет. Кто знает, что нас ждет через несколько лет и как изменятся знакомые нам программы.

Сразу нужно отметить, что информации по 3D-программированию на .Net Framework на русском языке также практически нет. На английском языке достойных статей единицы и за основу примера взята статья «Windows Presentation Foundation (WPF) 3D Tutorial». Статья объемная и перевод ее на русский может занять много времени, поэтому здесь перевод не представлен. У кого проблемы с английским, предлагаю воспользоваться хорошим сервисом Google Translate для перевода.

Как WPF использует DirectX

Применение в приложениях .Net-технологии для работы с богатой графикой WPF (Windows Presentation Foundation) уже подразумевает использование DirectX. Ниже представлена схема ключевых компонентов WPF, где показано, что на нижнем уровне расположена технология DirectX.

Архитектура WPF. Место в ней DirectX.

WPF (Windows Presentation Foundation) в своей работе использует DIrectX. Для этих целей служит MILCORE (Media Integration Layer Core) – неуправляемый компонент, который обрабатывает 2d, 3d, анимацию, обращаясь к DirectX. Скорость работы – достоинства DirectX – это главная причина, по которой milcore оформлен как неуправляемый компонент. Milcore – это интерфейс между DirectX и CLR (Common Language Runtime). Сборка PresentationCore не содержит элементов управления, но содержит базовые типы для определения UI-элементов. PresentationFramework содержит определения элементов управления WPF и реализацию связанной функциональности.

Как DirectX использовать в 1С:Предприятие

Когда речь в 1С заходит о .Net framework, на выручку приходит компонент Elisy .Net Bridge. Компонент достаточно описан в Интернете, для него написаны десятки примеров. В данном случае за основу будет взят пример, показывающий, как вставлять WPF-контрол на форму 1С. Больше информации на этот счет можно найти в статье «1C.Net:Предприятие – использование богатых графических возможностей .Net framework». Суть проблемы вставки WPF-контрола сводится к использованию вспомогательного ActiveX-компонента Elisy.HwndHost, в котором необходимо реализовать обработчик события Created.

Интерфейс в WPF описывается языком XAML. Файл описания прикреплен к внешней обработке в виде макета Xaml. В файле описания ключевым объектом является класс Viewport3D с именем mainViewport. В нем определены камера (PerspectiveCamera) и освещение (DirectionalLight). Свойства камеры настраиваются через интерфейс пользователя и хранятся в реквизитах внешней обработки.

Впечатление от примера

Работа с 3d-графикой в любой среде, будь то С++, С# или 1С – дело не из простых. Но сама возможность использования трехмерной графики в 1С:Предприятие, о которой раньше можно было только мечтать, ставит 1С наравне с другими популярными системами.

Результат примера - 3d-поверхность

Чтобы разрабатывать с успехом 3d-приложения, нужно вспомнить курс старших классов школы и понимать векторы, точки в трехмерном пространстве, нормали к поверхностям.

Результат примера - куб

Пример позволяет рисовать треугольник, куб и поверхность. Свойства камеры и взгляда настраиваются через интерфейс пользователя и хранятся в реквизитах внешней обработки. В случае необходимости нормали к плоскостям можно визуализировать. А если нужно – показать сетку и увидеть, на основе каких примитивов строятся объемные фигуры.

Весь пример изобилует обращением к пространству имен System.Windows.Media.Media3D, информацию о котором можно найти на MSDN даже на русском языке.

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

Выводы

Тема трехмерной графики в 1С достаточно новая, В связи с этим в сети Интернет нельзя найти примеров подобного подключения. Получается, что приведенный здесь пример является пионером в 3d-графике. К достоинствам можно отнести полную интеграцию с 1С, где прорисовка ведется в форме с другими родными элементами управления 1С.

Хотя практическую ценность технологии применительно к 1С придумать сложно. Фантазия подсказывает только виртуальный 3д-склад или планограмму марчендайзеров. Тем не менее, методика позволяет программировать на 1С для души. Ведь многие молодые разработчики мечтают в будущем создавать игры, а технология позволит им попрактиковаться на знакомой 1С-системе прямо сейчас.

Ссылки по теме

Оригинальный пример на C#: «Windows Presentation Foundation (WPF) 3D Tutorial»

System.Windows.Media.Media3D - пространство имен

1C.Net:Предприятие – использование богатых графических возможностей .Net Framework

3D in XAML (на английском языке)

http://www.richmedia.us/post/2010/06/23/1c-directx-wpf.aspx

Сетка примитивов включена для показа

Сетка примитивов включена для показа

Включен показ нормалей поверхностей

Включен показ нормалей поверхностей

Оценка сообщества

18

Поставьте плюс, если вы рекомендуете данную публикацию к прочтению и использованию.
Плюс добавляет публикацию в Мои рекомендации.

[+] Рекомендую   [−] Не тратить время
Если рейтинг упадет до -5, то публикация автоматически скроется.