3d pdf чем открыть
Перейти к содержимому

3d pdf чем открыть

  • автор:

Что не так с 3D PDF и eDrawings. Как мы заменили просмотрщик 3D-моделей в своем приложении

Это рассказ о том, как мы встроили новый просмотрщик C3D Viewer в систему управления жизненным циклом изделия ЛОЦМАН:PLM, почему мы это сделали, и что у нас получилось.

.1 Что такое «вторичное представление»

Любое достойное упоминания PLM-решение включает в себя механизмы/подсистему PDM (управление данными об изделии).

В базе данных PDM-системы хранятся документы и файлы, созданные в различных САПР: 3D-модели, чертежи, спецификации и расчеты.

Для того, чтобы содержание этих документов было доступно тем пользователям, у которых на рабочем месте не установлены соответствующие приложения САПР (а они бывают о-о-очень дорогими), PDM-система формирует «вторичное представление документа» — копию документа в каком-то «нейтральном» общедоступном формате.

После того, как «вторичное представление» загружено в систему, на его основе можно построить предварительный просмотр содержимого документа непосредственно в интерфейсе клиента PDM-системы; использовать как носитель при обмене информацией с внешними пользователями, в процессах согласования и при обмене замечаниями с помощью заметок и аннотаций.

.2 Вторичное представление в ЛОЦМАН:PLM

В разное время в качестве «вторичного представления» 3D-моделей в ЛОЦМАН:PLM поочередно выступали VRML, eDrawings, 3D PDF.

Про VRML я говорить не буду – ошибки молодости… с кем не бывает.

eDrawings был неплох, но за разработку адаптера к нему и услуги поддержки приходилось платить весьма нескромные деньги. К тому же начиная с 2014 года eDrawings стал доступен только в версии x64. Мы при всем желании не могли больше встраивать его в наш 32bit клиент ЛОЦМАН:PLM как ActiveX.

3D PDF поначалу казался подарком — бесплатный, уже установлен на каждом первом компьютере, стандарт de facto в нашем рукаве галактики, плюс готовая библиотека ActiveX, пригодная для встраивания, но, со временем, нам стала открываться его темная сторона:

  1. Мы имеем право распространять Acrobat Reader в своем дистрибутиве. Оказалось, Acrobat Reader установлен далеко не на каждом первом компьютере. Иногда там установлен Acrobat Reader несовместимой версии, а иногда — вообще другое приложение для просмотра PDF, несовместимое с Acrobat Reader и, при этом, очень дорогое сердцу пользователя.
  2. Вектор развития Acrobat Reader непредсказуем. Каждый релиз полон сюрпризов и пополняет используемый нами арсенал средств, предназначенных для автоматического закрытия окон ненужных сообщений, сворачивания назойливых панелей и установки туманно документированных опций.
  3. Выход обновления Acrobat Reader внезапен и неотвратим. О нем мы узнаем из сообщений пользователей о том, что у нас перестало работать «вторичное представление».
  4. Обратная связь с разработчиком, вероятно, возможна, но, как показывает регулярное изучение печальных форумов, бесперспективна.
  5. Иногда использование ActiveX Acrobat Reader приводит к аварийному завершению вашего приложения. Мы пришли, в итоге, к использованию режима SafeMode в Acrobat Reader. В этом режиме периодически аварийно завершается только скрытый дочерний процесс Acrobat Reader, а наше приложение продолжает работать.
  6. ActiveX Acrobat Reader доступен только в версии 32bit без вариантов.
  • Низкая скорость экспорта из КОМПАС-3D в 3D PDF.
    Возможно, часть ответственности лежит на КОМПАС-3D, но что есть — то есть.
  • Большой размер файла 3D PDF, что увеличивает нагрузку на файловую систему и сеть и требует больше оперативной памяти.
    Поиск оптимальных, с точки зрения соотношений точности вывода моделей к размеру файла, настроек не дал приемлемых результатов.
  • Низкая скорость загрузки больших моделей 3D PDF.
  • Неудовлетворительные скорость / качество рендеринга больших файлов.

.3 Знакомство с C3D Viewer

Результаты исследования вдохновили нас на запуск проекта, итогом которого должно было стать встраивание компонента C3D Viewer в качестве средства просмотра и аннотирования вторичного представления 3D-моделей в ЛОЦМАН:PLM.

  • Ускорение сохранения в формат C3D по сравнению с PDF – от 6 до 18 раз!
    Корреляции с размером моделей и количеством компонентов не выявлено.
  • Размер файлов C3D меньше файлов PDF – от 2 до 39 раз!
  • Скорость загрузки файлов C3D выше скорости загрузки PDF – от 6 до 264 раз.
    Корреляции с размером моделей и количеством компонентов не выявлено.
  • Качество и плавность отображения при вращении у C3D Viewer значительно превосходит качество Adobe Reader.
    По непонятным причинам замерить FPS в Adobe Reader не всегда получалось. В случаях, когда попытки замера были удачными, FPS не превышал значения «5». C3D Viewer «крутит» со скоростью 30-100++ FPS на разных моделях.

Интерес к проекту был взаимным, что наилучшим образом сказалось на качестве взаимодействия с разработчиками и скорости решения различных проблем.
По нашим запросам команда C3D Labs разработала функционал аннотирования 3D моделей, обеспечила локализацию на русский язык.

Ряд доработок API C3D Viewer был обусловлен спецификой применения компонента в нашем приложении. В результате в API появились новые методы и события, позволившие реализовать собственный механизм индикации прогресса загрузки модели и экстренного прерывания/отмены загрузки.

И раз уж я упоминал о дороговизне eDrawings, то справедливости ради надо сказать, что C3D Viewer тоже не бесплатен для нас, но условия его использования гораздо более демократичные.

.4 Встраивание

В начале следует дать краткое техническое описание системы, в которую нам предстояло встроить C3D Viewer, – клиентского приложения ЛОЦМАН:PLM.

Это десктопное Win32 приложение с MDI интерфейсом, написанное на Delphi 2006.
Компоновка дочерних MDI окон — динамическая, строится на основе описания набора взаимосвязанных «панелей», каждая из которых представляет некоторый аспект информации об указанном объекте.
Программный компонент C3D Viewer – это ActiveX COM Library (C++, Qt).

API простой и компактный, ключевые операции — асинхронные, выполняются в отдельном потоке, поэтому взаимодействие с компонентом основано на вызове методов и обработке событий.

Прототип модуля просмотра вторичного представления удалось собрать и встроить в ЛОЦМАН:PLM всего за пару часов, а вот прочие «мелочи» потребовали значительно больше времени.

Мы реализовали собственные панели инструментов, контекстное меню, панель, отображающую структуру модели, и панель со списком аннотаций — в нужном нам объеме и виде, в соответствии с общей визуальной стилистикой интерфейса приложения.

Мы применяем компонент в нескольких режимах работы с вторичным преставлением: встроенный просмотр, полноэкранный просмотр и режим аннотирования.

Какие были сложности:

Импорт описания библиотеки типов

Одной из первых проблем оказалось то, что Delphi 2006 некорректно импортирует описание библиотеки типов из ActiveX C3D Viewer, которая написана на C++ c Qt.

Выкрутились, применив утилиту импорта библиотеки типов Delphi 2010, которая, впрочем, также давала не 100% правильный результат — пришлось все-таки исправить десяток строк «вручную».

Трудности «усыновления»

В нашем приложении пользователю доступен WYSIWYG редактор компоновки, который позволяет добавлять и перемещать «панели» с информацией. На одной их таких панелей располагается и ActiveX C3D Viewer.

Оказалось, что при перемещении панели с ActiveX C3D Viewer в другой «контейнер» происходит его частичное «разрушение».

Выяснили, что причина — в специфической реализации механизма смены родительского окна VCL Delphi. Если коротко, то в итоге происходит вызов winapi функции DestroyWindow ActiveX C3D Viewer, после чего тот начинает считать себя «убитым», а Delphi тем временем продолжает считать его «живым».

Эту проблему мы обошли, поместив ActiveX в специальный контейнер, который умеет определять, что происходит смена родительского окна, и в этот момент корректно освобождает ActiveX и создает его заново.

Проблемы с памятью

У нас 32х битное приложение, и «Out of memory» никто не отменял. Возможность появления огромных сборок в условиях ограниченного 2 ГБ объема оперативной памяти неизбежно привела к тому, что проблема стала острее.

Особую остроту придавало то, что если память заканчивалась в процессе загрузки модели в C3D Viewer, то это приводило к неожиданному аварийному завершению всего приложения.
Причину определить удалось не сразу. Пришлось разработать собственный PostMortem Debugger на основе sampling profiler-а, который восстанавливал стек c помощью отладочной информации JDBG.

Поняв причину, мы начали с того, что увеличили лимит доступной оперативной памяти до 3.5 ГБ, добавив флаг IMAGE_FILE_LARGE_ADDRESS_AWARE в заголовок EXE, несколько сократили потребление памяти в своем приложении, но результат не радовал.

Дело в том, что если у вас 32х битное MDI приложение (с многооконным интерфейсом), то пользователь, в принципе, может открыть неограниченное здравым смыслом количество окон. И он это обязательно сделает. Имеет право.

Чтобы снизить вероятность проявления проблем, связанных с нехваткой памяти, мы встроили в приложение механизм контроля и оптимизации использования памяти. При достижении определенного лимита неактивные в данный момент MDI окна погружаются в «спящий режим», высвобождая тем самым ресурсы.

Проблемы с виртуальными машинами

C3D Viewer требует для отображения OGL версии не менее 2.1. Мы попробовали разные виртуальные машины, вот некоторая информация об этом:

Hyper-V — C3D Viewer не работает.
Virtual Box 4.1.44 + Window 7 — C3D Viewer работает.
VMWare Player v14 (Accelerate 3D Graphics + OGL v3 в настройках) — C3D Viewer работает.

В итоге активная фаза разработки и отладки нового просмотрщика заняла около двух месяцев. Еще две-три недели мы затратили на устранение ошибок.

.5 Что впереди

В следующих версиях C3D Viewer мы надеемся увидеть функции динамического сечения, измерения моделей, новые возможности работы с PMI, конфигурациями моделей в связке с КОМПАС-3D и ЛОЦМАН:PLM.

Для знакомства с C3D Viewer есть бесплатная версия (скачать здесь). Она не включает API и некоторые другие функции. Версию для встраивания можно запросить на тестирование у разработчиков C3D Labs.

Сергей Ершов, руководитель группы прикладных АРМ, АСКОН.

Аналоги Soda PDF 3D Reader

Читайте любой PDF-документ, например, книгу, используя 3D-технологию. Создавайте PDF документы из Word, Excel и более 300 форматов. Soda PDF 3D Reader на 100% совместим со всеми файлами PDF, созданными с помощью любого программного обеспечения, а его мощные инструменты позволяют легко открывать, просматривать, создавать и печатать документы PDF.

— Просмотр любого файла PDF в 3D.
— Заполните формы.
— Создание PDF-файлов из более чем 300 форматов.

— Открывайте, просматривайте и распечатывайте файлы PDF
— Просматривайте любые файлы PDF в 3D без преобразования файла
— Создавайте PDF из Word, Excel и более 300 форматов (требуется регистрация)
— Читайте цифровые комиксы в 3D (.cbr и .cbz)
— Просматривайте каталоги, книги, журналы и т. д. на своем ПК!
— Возможно увеличение и уменьшение масштаба при просмотре в 3D
— Используйте настраиваемые параметры просмотра, включая полный экран
— Создавайте документы из Internet Explorer и FireFox
— Работает с плагином MS Office

Отображение 3D-моделей в файлах PDF

В Acrobat можно просматривать и управлять высококачественным 3D-содержимым, созданным при помощи трехмерных САПР или программ 3D-моделирования и встроенным в документ PDF. Например, можно скрывать и отображать части 3D-модели, снимать крышку, чтобы заглянуть внутрь, и поворачивать элементы как будто держа их в руках.

Первоначально 3D-модель отображается в виде двухмерного изображения. Модель можно активировать, щелкнув ее инструментом «Рука» или инструментом «Выделение»; при этом открывается панель инструментов «3D» и воспроизводится анимация.

Выбранный 3D-объект

A. Дерево моделей B. Панель инструментов «3D» C. 3D-объект

Включение воспроизведения 3D-содержимого в документе PDF

Если открыть документ PDF с 3D-содержимым, вверху отображается желтая строка с сообщением «3D-содержимое отключено. Включите эту функцию, если вы доверяете этому документу.»

Автовоспроизведение 3D-содержимого отключено по умолчанию

Включение 3D-содержимого в текущем документе:

Нажмите кнопку «Параметры» и выберите один из вариантов:

  • Доверять этому документу только сейчас
  • Доверять этому документу всегда

Включение 3D-содержимого для всех документов:

  • Выберите «Правка» > «Установки» > «3D и Мультимедиа» и установите флажок «Включить воспроизведение 3D-содержимого».

Дополнительные сведения представлены на странице Включение 3D-содержимого в документе PDF.

Обзор панели инструментов «3D»

Панель инструментов «3D» появляется при щелчке на 3D-модели инструментом «Рука». Это действие активирует 3D-модель и воспроизводит анимации, если их воспроизведение задано при активации файла. Панель инструментов «3D» всегда появляется в области, расположенной в верхнем левом углу 3D-модели, при этом ее невозможно переместить в другое место. Справа от инструмента «Поворот» появится стрелка, которую нужно нажать для того, чтобы скрыть или развернуть панель инструментов.

Панель инструментов «3D» можно использовать для увеличения и уменьшения, поворота и панорамного просмотра объекта. Чтобы скрывать отдельные части модели, изолировать их или делать прозрачными, используйте «Дерево моделей» .

Можно манипулировать 3D-моделью, выбирая и перетаскивая различные инструменты 3D-навигации. Во время 3D-навигации удобно представить себе, что вы наблюдаете стационарную 3D-модель с помощью камеры. Ее можно поворачивать, просматривать панорамно (перемещаться вверх, вниз и в стороны), а также приближать и отдалять изображение.

Инструменты 3D-навигации

Поворачивает 3D-объекты относительно экрана. Способ перемещения объектов зависит от начального вида, места начала перетаскивания и направления перетаскивания.

Для поворота объекта можно также использовать инструмент «Рука». Убедитесь, что на панели «3D» диалогового окна «Установки» выбрано «Включить 3D-выделение инструментом «Рука»».

Поворачивает 3D-модель параллельно по двум фиксированным осям модели, оси x и оси z.

Позволяет перемещать модель только вертикально или горизонтально. Выполнять панорамирование можно также используя инструмент «Рука»: удерживая клавишу Ctrl во время перетаскивания.

Перемещает камеру ближе или дальше от отображаемого объекта. Можно также приближаться или удаляться от объекта, используя инструмент «Рука», удерживая клавишу Shift во время перетаскивания.

Вращается горизонтально вокруг представления при горизонтальном перемещении. Перемещается вперед или назад в представлении при вертикальном перемещении, поддерживает постоянный уровень независимо от способа перетаскивания. Инструмент «Обход» особенно полезен для архитектурных 3D-моделей. Для изменения скорости обхода необходимо изменить единицы измерения отображения в установках (3D).

Для использования инструмента «Обход» необходимо выбрать параметр «Установки», который объединяет инструменты, или правой кнопкой мыши щелкнуть 3D-модель и выбрать «Инструменты» > «Обход».

Перемещение по модели при сохранении ориентации поверхности. Нажмите правой кнопкой и перетащите указатель в 3D-окне. Инструмент «Появление» поддерживает снижение скорости с уменьшением расстояния до объекта. Перетащите указатель мыши вправо или влево для поворота.

Для поворота вида камеры щелкните левой кнопкой мыши внутри 3D-окна и перетащите указатель для поворота вида камеры. Для возврата к исходному положению камеры переместите мышь обратно в место начального щелчка.

Используйте колесо прокрутки для быстрого перемещения назад и вперед вдоль направления обзора камеры. Эта функция полезна, если вы потеряли ориентацию внутри модели или столкнулись с поверхностью.

Установка угла камеры, выравнивания и других свойств, определяющих тип линзы, через которую рассматривается 3D-модель. Свойства камеры являются составной частью видов, но устанавливаются отдельно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *