Отображение 3D моделей в WPF - PullRequest
13 голосов
/ 27 июня 2010

Я хотел бы отобразить 3D-модель в приложении WPF (модель подготовлена ​​с помощью внешнего инструмента, такого как блендер). Какова лучшая практика? Есть ли инструменты для облегчения этого? Как насчет производительности вращения / преобразования?

Ответы [ 4 ]

16 голосов
/ 10 октября 2012

Хороший вопрос! Результат-ответ зависит от ваших целей.

  1. подход. Вы заинтересованы в том, чтобы поместить некоторый объект модели .3ds (.obj, ..) как стационарную часть вашей сцены без каких-либо интерактивных преобразований (перемещение, масштабирование и т. Д.) Этот подход для простой игры (обучения WPF3D), как правило
  2. подход. Вы думаете иметь полную интерактивную часть с поддержкой любых преобразований WPF3D в вашем Viewport3D. Этот подход, как правило, для богатых манипуляций с 3D сценами в профессиональных приложениях.

Существует довольно много инструментов для решения этой задачи, но универсального решения для случая не существует. Для выполнения этой задачи есть две проблемы:

  1. Несовместимые форматы между инструментами. Например, один инструмент создает Модель .3ds (.obj, ..), но второй инструмент для перевода его в .xaml (читая .3ds, .obj, ...) не понимаю эту модель.
  2. Модель, которую вы подготовили в профессиональном инструменте, таком как 3DMax, ... не В WPF3D все так хорошо.

Кроме того, будет очень хорошо изменить материалы в модели совместимым (для дальнейшего адекватного представления WPF) способом.

Будьте готовы много раз экспериментировать для достижения наилучших результатов ... Похоже, вы о 2 очке - подход. Итак, лучший инструмент для чтения .3ds, файл .obj: Helix 3D Toolkit

Рецепт очень прост. Например, в VB

Dim CurrentHelix3DSStudioReader As New StudioReader()
Dim MyToyModel3DGroup as Model3DGroup = CurrentHelix3DSStudioReader.Read("MyToy.3ds")

Или

Dim CurrentHelixObjReader As New ObjReader()
Dim MyToyModel3DGroup as Model3DGroup = CurrentHelixObjReader.Read("MyToy.obj")

Лучшим инструментом для манипулирования моделями .3ds, .obj, ..., включая сохранение в .xaml, является Deep Exploration. Мой образец в WPF 3D-сцене. Быстрый полный управляемый объект

My sample in WPF 3D scene. Fast full managed object

16 голосов
/ 27 июня 2010

Zam3d это был отличным инструментом для преобразования 3D-моделей в Xaml, но похоже, что Electric Rain перестала существовать, вы можете найти копию где-нибудь, Поиск в Google . Я очень рекомендую книгу Петцольда 3D-программирование для Windows . В Интернете также есть множество учебных пособий, я бы порекомендовал некоторые современные.

1 голос
/ 17 сентября 2015

Вы можете импортировать и конвертировать OBJ-файлы в XAML, используя «Blend for Visual Studio», пожалуйста, посмотрите здесь:

Альтернатива к зам-3d-редактор

1 голос
/ 30 июня 2010

Вы можете скачать пробную версию 3dsmax и конвертировать вашу модель с помощью Xaml exporter для 3D Studio Max Этот инструмент мне очень помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...