Manifold Geometry // Многообразная Геометрия

OpenCascade

Подписаться на эту рубрику по RSS

Open CASCADE Technology (OpenCascade, OCCT).

Перемножение надежности

"The idea behind history based modeling, is that the modeler will store a series of modeling steps instead of the geometry, and you can edit that history. Unfortunately this is not as robust as it should be, often leading to all kind of problems (broken feature history, etc.)

Direct modeling is addressing this issue by allowing the user to directly edit the geometry. E.g., in a history based system to modify the height of an extrusion, you have to go to the extrusion step, then set the height of an extrusion. In direct modeling, you can simply push or pull the face to move it, and the underlying magical algorithms will just rebuild the body."

Istvan Csanady. The founder and CEO of Shapr3D.

Если геометрический алгоритм надежен на 95 процентов (то есть лажает в пяти случаях из ста), то не надо иллюзий. Это — плохой алгоритм. Дело здесь вот в чем. Допустим, что есть некая вычислительная схема, содержащая десяток алгоритмов. Положим, что каждый из них имеет вероятность успеха 0.95. Условная вероятность того, что схема сработает успешно есть 0.9510, то есть примерно 0.6. Следовательно, на выходе образуется лажа в сорока случаях из ста! Если алгоритмов 20, то вылетают уже 65% случаев, и пациент становится скорее мертв, чем жив. Заметим также, что взятая с потолка 95-процентная надежность еще не факт, что имеет место (то есть это еще оптимистичная оценка).

За эту нехитрую науку мне следует поблагодарить товарища Иствана Ксанади (Istvan Csanady), под руководством которого разрабатывается впечатляющая САПР для iOS. Речь о Shapr3D — планшетной программе для концептуального твердотельного проектирования. Библиотека OpenCascade долгое время использовалась в качестве геометрического ядра системы, но эффект перемножения надежности вносит свои коррективы в ее дорожную карту. В связи с этим я задался эдаким философским что ли вопросом. Допустим, некоторый пионер решил-таки взять и написать собственный САПР на ядре OpenCascade. Как ему следует действовать? Если тезисно, то я бы ответил так:

  • Наш выбор — САПР прямого моделирования, то есть без истории построения. Очевидно, что история построения, будь она реализована в новой системе, потеряется при трансляции данных в другие системы. То есть геометрия, созданная в пионерской CAD-системе обречена быть немой. Будем реалистами: никто не станет пользоваться ТОЛЬКО этой новой, незрелой, экспериментальной САПР, и ее дерево фичеров никому даром не нужно. Следовательно, не следует им вообще заниматься, тем более, что эта технология имеет неизлечимые недостатки и любая ее инкарнация обречена стать жалким подобием SolidWorks.

  • Прямое моделирование — верный путь к тому, чтобы испытать эффект перемножения надежности на собственной шкуре. Действительно, типовые операторы моделирования, такие как вытягивание, булевы операторы, скосы, эквидистанты, скругления и проч. — все они в течение сессии работы пользователя неявно формируют цепочку алгоритмов, то есть вычислительную схему. Каждый алгоритм в отдельности может работать вполне прилично, но все вместе они не дают приемлемой отказоустойчивости. Нарушается хорошо известный принцип Джона фон Неймана о надежной схеме из ненадежных элементов. В данном случае ненадежные элементы дают еще менее надежную схему. Что же делать?

  • Будучи методологически подкованным, наш пионер примет единственно верное решение. Делать не прямое моделирование, а ПРЯМОЕ РЕДАКТИРОВАНИЕ. В этом случае функциональность системы оказывается резко сниженной, вплоть до потери возможности называться САПР (в такой системе не построить даже примитивной модели типа ANC101). Казалось бы, приехали. Это же полный провал: задумали САПР, а сделали «какой-то там» редактор. Однако тут есть серьезный методологический плюс. Прямое редактирование — достаточно узкая область, чтобы избежать взрывного падения надежности, ведь мы стартуем от УЖЕ СОЗДАННОЙ геометрии, то есть минуя почти все подводные камни, среди которых вынужден лавировать полноценный моделер. С другой стороны, редактор занимает определенную нишу, так как он может использоваться для упрощения моделей с целью подготовки их к расчетам (это лишь один пример, можно вообразить и другие). В наших руках оказывается минимально жизнеспособный продукт, т.е. вещь одновременно достаточно надежная и полезная. Кроме того, редактор — это плацдарм для моделера. Реализуя все новые и новые операторы редактирования, мы неминуемо придем к расширению набора операторов до полноценного САПР. Каждый шаг будет даваться мучительно, да. Но каждый шаг будет довеском к УЖЕ СУЩЕСТВУЮЩЕМУ и РАБОТАЮЩЕМУ продукту. Очевидно, задайся наш пионер целью сделать полноценный САПР сразу, то есть минуя стадию редактора, он быстро ощутил бы «грубость и красоту реального мира» вплоть до признания всей этой затеи романтическим идиотизмом.

Остается пожелать команде Shapr3D вертикального взлета и вывода новой системы на межгалактический уровень. С каскейдом или без него, эта САПР остается очаровательным приложением, о котором писать столь же легко и приятно, сколько пользоваться им самим.