hansiMuc Ответов: 2

Хорошая книга или документация об архитектуре программного обеспечения САПР или программы 3D-моделирования ?


Мы занимаемся графическим бизнесом в реальном времени и должны разработать приложение 3D toolchain в следующем году.
Мы давно знакомы с C++, WX виджетами, OpenGL и Vulkan, а также написали VR-симуляторы и интерактивные обучающие системы в реальном времени. Тем не менее я хотел бы получить более глубокое представление об архитектуре программного обеспечения САПР или программного обеспечения для 3D-моделирования.
Работая очень долгое время с Autodesk Maya 3D, мы очень ценим очень чистый API и структуру кода, которые Maya предоставляет разработчикам.
Есть ли какие-либо рекомендации относительно книг, дискуссий или блогов на эту тему ?
Наше образование-это электротехника, игровая инженерия и медиа-информатика.
Существуют программы с открытым исходным кодом, но я бы предпочел сначала прочитать самые основы.

Спасибо за помощь.

Что я уже пробовал:

Мы уже запрограммировали небольшие тесты на основе инструментов, где мы можем интерактивно размещать объекты или перемещать их..
Все еще ищу общую картину..

Richard MacCutchan

Попробуйте Google, это лучшее место для поиска информации по любому вопросу.

2 Ответов

Рейтинг:
2

Rick York

Зачем разрабатывать собственную цепочку инструментов? Для меня это не имеет никакого смысла.

Я думаю, что вам было бы лучше принять набор стандартных продуктов для начала. Что-то вроде Blender или 3Dstudio в качестве модельера, а затем проложите свой путь вниз по цепочке и выберите продукты для каждого шага. Затем работайте над разработкой плагинов и мостовых инструментов, чтобы соединить их и сделать процесс разработки плавным. Я могу понять, что у вас может быть собственный способ делать некоторые вещи, но люди делают это уже давно, и я думаю, что вам следует избегать изобретать колеса. Особенно, когда есть уже много, много вариантов на выбор.

Я действительно увлекаюсь гоночными симуляторами, и почти каждая игровая студия, которая их делает, занимается разработкой своих активов точно так же. Они используют 3Dstudio (или другой) в качестве своего модельера и разрабатывают плагин, который экспортирует данные в проприетарный формат, который может загрузить игра. Я знаком с несколькими студиями, у меня есть друзья, работающие там, и ни одна из них не использует собственный модельер. Я знаю одного парня, который работает в гоночной команде Формулы-1 в их отделе аэродинамики, и они тоже этим занимаются.


hansiMuc

Привет Рик,

Я полностью согласен с вами относительно вашей аргументации. Мы уже очень давно работали в анимационном бизнесе, имея там опыт работы в качестве TDs.
Теперь наша задача-разработать собственную цепочку инструментов, которая включает в себя обработку объектов и структур в 3D, но не связана с моделированием или анимацией.
Меня больше интересует способ структурирования такого сложного приложения таким же удобным способом, как Maya, а также написанным на C++.
Maya имеет, например, концепцию инструмента для обработки входных данных, использует функции MFn, которые являются своего рода посетителями внутренних структур данных, и в целом имеет очень понятный API.
Мне просто интересно, есть ли какие-нибудь уроки или книги, рассказывающие, как они сделали это таким чистым способом.

Спасибо за вашу помощь

Rick York

Я рекомендую для начала изучить подключаемые архитектуры в целом. Ключ будет заключаться в определении согласованного интерфейса для ваших подключаемых объектов. Я думаю, что лучший способ-это определить архитектуру приложения(ов) таким образом, чтобы все было подключаемым модулем. Я делал это в предыдущих приложениях, и это сработало довольно хорошо.

Здесь есть несколько статей на эту тему :

https://www.codeproject.com/articles/389667/simple-plug-in-architecture-in-plain-c
https://www.codeproject.com/Articles/6990/Multi-platform-plug-in-development-made-easy
https://www.codeproject.com/Articles/152178/Interface-based-Programming-Runtime-Class-Discover
https://www.codeproject.com/Articles/2489/Plug-In-framework-using-DLLs

Это будет хорошим началом. Желаю удачи.

Stefan_Lang

Привет

Я как раз собирался предложить поработать с OpenCascade (см. https://www.opencascade.com/content/open-source-core-technology ), но после прочтения этого решения и вашего ответа я подозреваю, что это не то, что вы ищете.

Во всяком случае, поскольку я разрабатываю конструктивные алгоритмы с использованием ядра САПР OpenCascade, если у вас есть конкретные вопросы, я, вероятно, могу предоставить некоторые идеи. Единственный полезный источник информации об Opencascade, который я могу порекомендовать, - это документация на самом сайте: https://dev.opencascade.org/doc/overview/html/index.html

Рейтинг:
0

Stephane Capo

Привет,

Я не думаю, что существует какая-либо книга или документация по такой конкретной теме. Слишком мало людей разрабатывают САПР или программное обеспечение для 3D-моделирования.
Кроме того, создание хорошей архитектуры программного обеспечения на самом деле не зависит от типа самого программного обеспечения. Основная трудность здесь заключается в том, чтобы иметь возможность думать о хорошей системе плагинов / API с самого начала проекта, а затем поддерживать чистую архитектуру даже после добавления большого количества новых функций / функций.

Извини, больше ничем не могу помочь.
Мы находимся в процессе открытого поиска нашего многоцелевого фреймворка C++ ( GitHub - assoria/kigs: Kigs framework-это модульный универсальный кросс-платформенный фреймворк на языке C++.[^] ) поэтому я бы предложил использовать его в качестве основы для ваших разработок, но Вики все еще пишется.

Удачи вам в будущем.


hansiMuc

Привет Стефан,

спасибо за вашу помощь и комментарий.
Я только что написал ответ Рику, сказав, что это больше специфика верстки программного обеспечения.
Мне очень нравятся очень чистые концепции Майи.
Спасибо за Вашу ссылку на Kigs, который является действительно хорошим фреймворком.
На самом деле у нас есть работающая среда моделирования виртуальной реальности, имитирующая сложные среды.
Архитектура прикладного программного обеспечения 3D ( это не Моделист ) для предоставления данных-вот что меня интересует.

Спасибо, что указали на вашу структуру