Обзор последних обновлений КонтрБагCAD. Наконец фаска и скосы!
Про начало разработки я писал в предыдущей статье.
Напомню, я разрабатываю простенький 3D-редактор для моделирования под 3D-печать. С простым интерфейсом и, самое главное, работой прямо в браузере. Целился я в нечто среднее между Tinkercad и Fusion360.
На самом деле изменений масса, особенно в техническом плане:
Для бинарных операций была внедрена очень продвинутая библиотека Manifold3D, это существенно подняло скорость выполнения, а также результат теперь гарантированно манифолдный (без дыр и других проблем). Ядро редактора было переписано на параметрическую работу с отдельными исполнителями для каждой операции, а также весь редактор переписан на модульную ES6 архитектуру.
Об этом всем я подробно написал с технической статье на хабре, а тут уделю ещё пару слов про текущую архитектуру моего редактора:
КонтрБагCAD работает целиком на клиенте, со всеми преимуществами и недостатками. В качестве геометрии, в отличие от большинства САПР, используются сетки, а не BREP. Это сделано в угоду легкости и скорости работы в браузере (у Tinkercad, кстати, тоже сетки). Благодаря этому, STL и прочие сеточные форматы поддерживаются напрямую, и нет никаких проблем их редактировать (в отличие от того же Fusion 360, где сначала нужно как-то получить твердое тело). Ядро работает напрямую на Three.js. Начиная с версии 0.8, для бинарных операций внедрена библиотека manifold, а начиная с 0.9 ядро переписано на параметрическую работу.
Также я внёс кучу других изменений.
Для начала про изменения интерфейса:
Я убрал этот позорный крест навигации (можно посмотреть в первой статье) и сделал великолепный куб :D
Он поддерживает смену темы, смену языка и просто красиво выглядит. Появилась полноценная ортогональная камера и удобное перемещение. А, да, появилась смена языка. Причём локализации являются просто json-файлом, и нет никакой проблемы добавить в редактор любой язык.
Изменения выдавливания и вращения
В старом инструменте вращения неправильно формировались крышки и отверстия у фигуры, это тоже было доработано.
В выдавливании появилось визуальное отображение операции: красный - вырезать, желтый - добавить, зелёный - новый объект. Как светофор :)
Но главное! В выдавливание и вращение добавлена поддержка выделения граней. Теперь через эти операции можно вытянуть не только фигуры чертежа, но и любую грань (как в моем любимом fusion360). Грани подсвечиваются при наведении, просто кликаете и вытягиваете.
Изменения чертежа
Чертеж теперь можно строить сразу на гранях объектов. При клике сразу открывается режим чертежа, и обводится грань, на которой вы его строите.
Для поддержки выделения граней в выдавливании я оптимизировал алгоритм очерчивания (он общий с очерчиванием граней при построении чертежа на объекте). Сложность из квадратичной стала линейной. Благодаря чему теперь обводка работает заметно быстрее.
Все замкнутые фигуры которые можно вытянуть теперь закрашиваются. Для тестирования я сделал цвет заливки рандомный, но аудитории в ТГ зашло, поэтому решил оставить, но сделать зависимым от площади, чтобы не менялся).
Определение регионов вытягивания переехало в скетч, и теперь происходит сразу после добавления элементов чертежей. А заодно появилась подсветка этих регионов, и был доработан алгоритм определения (но над этой задачей я все ещё работаю).
Новые бинарные операции
Еще я заморочился над инструментом бинарных операций. У старого варианта не было предпросмотра, для объединения и пересечения это приемлемо, но с вычитанием не особо понятно, что из чего вычитается. Теперь получилось прям круто, включить инструмент можно без выделенных объектов: на ЛКМ фигура добавляется в операцию, повторным кликом исключается.
В вычитании ещё задействована ПКМ для добавления вычитаемых фигур.
Новая библиотека и примитивы
Прокачал библиотеку, реализовал ленивую загрузку. Теперь каждая категория грузится только при переходе на нее. Поддерживается работа с удаленными каталогами, и объединение нескольких категорий в одну (собственно категория "все" так и сделана. Но она временная, пока моделей мало). Также подтянул немного дизайн, он теперь немного больше напоминает Tinkercad. Вообще библиотека задумывалась больше для электронных модулей (чтобы вокруг них удобно модели строить), но по просьбам пользователей Tinkercad добавил немного примитивов.
А также все примитивы теперь настраиваемые. После предыдущей статьи в проект пришло много пользователей Tinkercad, поэтому несколько последних обновлений были по их просьбам. Изначально я вообще не хотел приближать работой с примитивами свой редактор к Tinkercad. Но немного подумав, решил что это же не уменьшает функционал редактора. Да и примитивы без изменяемых параметров выглядят бесполезно.
Новые инструменты трансформации
Были серьёзно переработаны инструменты трансформации. Изначально они работали только с одним объектом. Теперь во всех инструментах трансформации (перемещение, вращение, масштабирование) поддерживается работа с несколькими объектами.
Работа происходит группой, т.е. как будто выделенные объекты это один объект (аналогично Tinkercad).
Инструмент масштабирования получил работу по глобальным осям. Тут надо рассказать поподробнее: Изначально в Three.js геометрия объекта хранится как исходная геометрия, плюс три матрицы преобразования. Т.е. изначально Three.js не поддерживает глобальное масштабирование. Поэтому ранее в моем редакторе глобальное масштабирование и не работало (точнее работало как проекция глобального на локальное, что давало неправильный результат). В целом реализовать правильное глобальное масштабирование было не сложно, но при этом создаётся новая геометрия, а старая удаляется (грубо говоря, результат масштабирования запекается). Из-за этого после глобального масштабирования изменить параметры примитивов нельзя, т.к. это уже новая модель. Но так как у меня параметрическая история, можно откатиться к любой операции до изменения размера, изменить параметры примитива, и вернуться обратно.
Также появилось масштабирование в одну сторону (которого так не хватало пользователям Tinkercad).
Инструмент выравнивания. Вообще я ещё в самых первых версиях внедрил что-то подобное, ибо в Tinkercad это самый полезный инструмент. Но так как я лет 6 не работал в тинкере я банально забыл как он выглядит :D И почему-то по памяти думал, что это просто 4 кнопки (выровнять по X, Y, Z или всем осям). Благо пришедшие пользователи мне указали на это, и я, освежив память, за пару дней повторил инструмент из Tinkercad.
Повышение стабильности
В прошлом редактор иногда не открывался, или не полностью подгружался из-за проблем с загрузкой библиотек (даже библиотек иконок). Для решения этой проблемы пришлось положить все библиотеки локально. Теперь все грузится из одного места, и такой проблемы быть не должно.
Также я прикрепил к редактору свой домен. Теперь он по адресу: https://cad.контрбагтех.рф/
И заодно добавил зеркало на gitverse, чтобы с доступом точно проблем не было.
Инструмент фаска/скос
Ну и главное нововведение, инструмент фаска. Хотя это уже многофункциональный инструмент.
По умолчанию инструмент просто снимает фаску под 45° для выбранной цепочки ребер. Можно выбрать по отдельности, все связанные и все связанные до заданного угла.
Но главной фишкой является возможность указать расстояние в обе стороны фаски по отдельности. Благодаря этому уже появляется возможность делать различные скосы, что существенно расширяет возможности редактора.
Если вы делаете скос, то часто нужно его не срезать, а добавить. Ещё одна фишка этого инструмента - это поддержка отрицательных значений. Благодаря этому, вы на острых углах просто можете наклонить скос в другую сторону.
И, естественно, скос работает не только на прямой поверхности.
Поддерживаются и сложные многогранные углы (с этим пришлось повозиться, расскажу в следующей технической статье).
Ещё некоторые доработки
Существенно доработан инструмент "отражение". Он поддерживает отражение по локальным осям объекта, а также отражение относительно рабочей плоскости. В том числе для нескольких объектов.
Внедрен менеджер единиц измерения. Теперь операции трансформации, вытягивания, свободного перемещения, рулетка (в общем все, кроме чертежа) поддерживают смену единиц измерения (мм/дюймы) и смену шага привязки. В чертеже пока только изменение шага сетки. Все это можно поменять в настройках.
Была существенно доработана мобильная версия. Теперь на телефоне (и планшете) работать намного удобнее. Хотя надо ещё поработать над поддержкой мультитач.
Доработан импорт SVG. Раньше с некоторыми файлами были проблемы.
Напомню, это все работает online, без регистрации и совершенно бесплатно: https://www.контрбагтех.рф/контрбагcad
Обратите внимание! Редактор находится на стадии активной разработки, постоянно становится лучше и пополняется новыми функциями. Новости об обновлениях в основном выходят в Telegram и ВК.
Если появилось желание поддержать разработку, ссылки можно найти в форме "О программе" редактора.
Буду благодарен за рекламу, обратную связь, сообщения об ошибках и предложения по развитию :)
Еще больше интересных статей
Как легко перейти с Tinkercad на КонтрБагCAD
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Фундамент сервопривода горизонтального положения
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Поднимаем модель с изображения.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Часто натыкаясь в объявлениях о просьбе замоделить что-то простое...




























Комментарии и вопросы
Там не в этом и суть, основная...
Вы не про то говорите, то что....
Читаю в комментах:"Безумству х...
Купил хотенд в сборе v6 там ст...
важно подача СВЕРХУ. катушка н...
Всех приветствую. Не так давно...
Здравствуйте, нужна помощь, не...