Media is too big
VIEW IN TELEGRAM
6. INHERITANCE_EFFECTOR
Перемещает матрицу одного mograph объекта к матрице другого в нужной нам последовательности
Сделал 2 версии:
1) Работает автономно
2) Работает через передачу веса сторонним эффектором
Хз как удобнее, по сути принцип один и тот же
Сейчас пока готов буквенный режим, в скором времени доработаю численный(сейчас он как бы тоже есть, но надо залазить в код, что не так удобно), и рандом. Заготовки уже есть, осталось скомпилировать
#MoPy
Перемещает матрицу одного mograph объекта к матрице другого в нужной нам последовательности
Сделал 2 версии:
1) Работает автономно
2) Работает через передачу веса сторонним эффектором
Хз как удобнее, по сути принцип один и тот же
Сейчас пока готов буквенный режим, в скором времени доработаю численный(сейчас он как бы тоже есть, но надо залазить в код, что не так удобно), и рандом. Заготовки уже есть, осталось скомпилировать
#MoPy
За отсутствием предложений решил поиграться с вычислением и группировкой сегментов "ветвистой" геометрии по уровням и подуровням. Очень удивился как нейронки на основе достаточно примитивных примеров могут строить очень сложные, а главное работающие структуры.
Попробовал 3 варианта:
1ый на основе интерсекции сегментов друг с другом (в основе синьковский bool)
2ой на основе расстояния между ближайшими точками сегментов
3ый на основе построения внутренних сплайнов
У всех 3ех есть как минусы, так и плюсы
1) На основе буля: достаточно долгий в обработке и при пересечении сегментов с "разных" веток, все условно попадает в одну сортировку,т.е уровни и подуровни могут вычисляться не всегда корректно. Из плюсов, пофиг на сетку
2) На основе точек: минусы +/- такие же, а из плюсов чуть быстрее, геометрия не обязательно должна проходить сквозь друг друга
3) На основе построения внутренних сплайнов: из минусов работает не с каждой сеткой, и хорошо работает с сегментами выходящими из одной точки (или почти), достаточно длинный код
Из плюсов: значительно быстрее остальных вариантов, т.к работает со сплайнами(т.е кол-во точек и различных проверок значительно меньше, более гибок, и как мне кажется наиболее точен
Пробовал еще метод, через создание bounding box, но этот способ работал наименее корректно
Попробовал 3 варианта:
1ый на основе интерсекции сегментов друг с другом (в основе синьковский bool)
2ой на основе расстояния между ближайшими точками сегментов
3ый на основе построения внутренних сплайнов
У всех 3ех есть как минусы, так и плюсы
1) На основе буля: достаточно долгий в обработке и при пересечении сегментов с "разных" веток, все условно попадает в одну сортировку,т.е уровни и подуровни могут вычисляться не всегда корректно. Из плюсов, пофиг на сетку
2) На основе точек: минусы +/- такие же, а из плюсов чуть быстрее, геометрия не обязательно должна проходить сквозь друг друга
3) На основе построения внутренних сплайнов: из минусов работает не с каждой сеткой, и хорошо работает с сегментами выходящими из одной точки (или почти), достаточно длинный код
Из плюсов: значительно быстрее остальных вариантов, т.к работает со сплайнами(т.е кол-во точек и различных проверок значительно меньше, более гибок, и как мне кажется наиболее точен
Пробовал еще метод, через создание bounding box, но этот способ работал наименее корректно
🔥1👀1
Скрипт 1: Волновое расширение по геометрической дистанции
Использует топологические соседства полигонов.
Для роста сегментов сравнивается расстояние между вершинами.
Прост в исполнении и быстро работает.
Эффективен для логических групп близких участков, но не учитывает реальную форму объектов.
Хорошо подходит для геометрических "кластеров".
✅ Скрипт 2: Расширение по Boolean-пересечениям
Строит PolygonObject'ы для каждого сегмента и проверяет пересечение через Oboole.
Очень точный, так как учитывает реальную форму.
Использует AABB оптимизацию и кэш пересечений для ускорения.
Главный минус — медленная работа при большом числе сегментов из-за Boolean-операций.
Подходит, если важна точность пересечений (например, для физически пересекающихся мешей).
✅ Скрипт 3:
Управление по углу, глубине, ветвям, и направлению.
Подходит для автоматической генерации путей/веток
Выдаёт сплайн как результат, а не просто выделение.
Самый сложный в логике, но и самый гибкий.
Это что говорят нейронки
Использует топологические соседства полигонов.
Для роста сегментов сравнивается расстояние между вершинами.
Прост в исполнении и быстро работает.
Эффективен для логических групп близких участков, но не учитывает реальную форму объектов.
Хорошо подходит для геометрических "кластеров".
✅ Скрипт 2: Расширение по Boolean-пересечениям
Строит PolygonObject'ы для каждого сегмента и проверяет пересечение через Oboole.
Очень точный, так как учитывает реальную форму.
Использует AABB оптимизацию и кэш пересечений для ускорения.
Главный минус — медленная работа при большом числе сегментов из-за Boolean-операций.
Подходит, если важна точность пересечений (например, для физически пересекающихся мешей).
✅ Скрипт 3:
Управление по углу, глубине, ветвям, и направлению.
Подходит для автоматической генерации путей/веток
Выдаёт сплайн как результат, а не просто выделение.
Самый сложный в логике, но и самый гибкий.
Это что говорят нейронки
👍2
Могу прикреплять/скидывать файлы для тестов или как-то иначе записывать, просто пока особо фидбека нет, поэтому выглядит больше как отчет)
🔥3
Если у кого-то возникают интересные идеи или хотелось бы добавить в синему какой-то инструмент, дайте знать. Организуем!)
🆒1
Media is too big
VIEW IN TELEGRAM
Дорабатываю свой вариант:
1)Добавил поддержку поиска подуровней с любой части уровня. (Раньше поиск был только с последней точки уровня😅)
2) Улучшил логику поиска подуровней, чтобы почти гарантировано избегать неточностей при пересечениях.
В коде, конечно, полная жопа) может когда-то подкорректирую, но пока остановлюсь, т.к в целом меня все устраивает, а смысл в дальнейших доработках вижу уже только под какие-то конкретные задачи
Вот основные шаги, которые использовались в ходе работы
1) Поиск связанных полигонов (сегментов)
2) Получение центр. точек сегментов и создание сплайнов на основе uv
3) Поиск связей и построение иерархии у сегментов
4) Сортировка сегментов сплайна по иерархии
5) Создание фин. сплайна и selection(а) из выборки
Код получился на 450 строк)
1)Добавил поддержку поиска подуровней с любой части уровня. (Раньше поиск был только с последней точки уровня😅)
2) Улучшил логику поиска подуровней, чтобы почти гарантировано избегать неточностей при пересечениях.
В коде, конечно, полная жопа) может когда-то подкорректирую, но пока остановлюсь, т.к в целом меня все устраивает, а смысл в дальнейших доработках вижу уже только под какие-то конкретные задачи
Вот основные шаги, которые использовались в ходе работы
1) Поиск связанных полигонов (сегментов)
2) Получение центр. точек сегментов и создание сплайнов на основе uv
3) Поиск связей и построение иерархии у сегментов
4) Сортировка сегментов сплайна по иерархии
5) Создание фин. сплайна и selection(а) из выборки
Код получился на 450 строк)
🔥5❤2👌1
Управляем камерой с помощью эффекторов и xpresso. За счет этого можно получить какие-то хаотичные движения,вращения без кейфреймов. Как по мне закреплять так камеру на сплайн удобнее, чем через тег. Лучше привязывать группу и в нее ложить камеру, чтобы в случае чего её подрегулировать)
Всех, с пятницей!
Группа не заброшена)
Сейчас дорабатываю кастомный sweep.
1ое отличие от оригинала - параллельная обработка сегментов (почему-то в том, что из коробки нельзя выбрать между последовательной и параллельной обработкой)
2) Добавил возможность симметричного роста
3) Возможность сдвигать начало без ручного создания доп точек.
Пока есть еще что хотел бы скорректировать и добавить. Как докручу,по запросам выложу :)
Группа не заброшена)
Сейчас дорабатываю кастомный sweep.
1ое отличие от оригинала - параллельная обработка сегментов (почему-то в том, что из коробки нельзя выбрать между последовательной и параллельной обработкой)
2) Добавил возможность симметричного роста
3) Возможность сдвигать начало без ручного создания доп точек.
Пока есть еще что хотел бы скорректировать и добавить. Как докручу,по запросам выложу :)
🔥8
Стоит ли выкладывать какие-то рабочие тесты с режимами или только самый финальный вариант уже со всеми опциями?
Просто хочется прям по максимуму его нафаршировать)
Просто хочется прям по максимуму его нафаршировать)
❤1👍1🔥1
Доработал все режимы, которые хотел:
1: Закрытый - базовый
2.1: Открытый
2.2: Открытый с одинаковой скоростью для правой/левой части
2.3: Открытый с возможностью как бы выйти за границу (чисто для uv). Сейчас клампанул, но думаю сделать переключатель
3.1: Сохраняем поведение закрытого на открытом сплайне (тут промежуток не игнорируется и учитывается при расчете трима и anchor)
3.2: То же самое, но уже не учитывается, и дойдя до одного конца сразу перекидываемся на другой
3.3: Больше доп функция для режимов 3.1 и 3.2. Корректируем направление концов, чтобы полностью воссоздать поведение открытого сплайна
1: Закрытый - базовый
2.1: Открытый
2.2: Открытый с одинаковой скоростью для правой/левой части
2.3: Открытый с возможностью как бы выйти за границу (чисто для uv). Сейчас клампанул, но думаю сделать переключатель
3.1: Сохраняем поведение закрытого на открытом сплайне (тут промежуток не игнорируется и учитывается при расчете трима и anchor)
3.2: То же самое, но уже не учитывается, и дойдя до одного конца сразу перекидываемся на другой
3.3: Больше доп функция для режимов 3.1 и 3.2. Корректируем направление концов, чтобы полностью воссоздать поведение открытого сплайна
🔥3❤1👍1
Считаю что база готова. Из дальнейших доработок вижу:
1) Все-таки вернуть режим последовательного трима для многосегментных сплайнов и к этому добавить функции, чтобы рост шёл с обоих сторон одновременно от крайних сегментов к центральному.
2) Добавить возможность выбора anchor по xy. Т.е например для всех сегментов anchor будет по умолчанию в самой верхней,нижней/правой/левой части
Пока идеи такие)
1) Все-таки вернуть режим последовательного трима для многосегментных сплайнов и к этому добавить функции, чтобы рост шёл с обоих сторон одновременно от крайних сегментов к центральному.
2) Добавить возможность выбора anchor по xy. Т.е например для всех сегментов anchor будет по умолчанию в самой верхней,нижней/правой/левой части
Пока идеи такие)
❤1👍1🔥1
Media is too big
VIEW IN TELEGRAM
Обновления)
Первый блок - обработка сегментов
Этот блок будет отвечать за обработку порядка сегментов
1) Базовый (текущий порядок)
2) Реверсивный
3) По осям XYZ
4) По удаленности от реф объекта
5) По кругу
6) Ну и самый интересный - режим mirror (т.е с двух сторон)
Помимо этого в этом блоке можно будет сшивать сегменты, которые должны обрабатываться вместе.
Режима будет 2 (автоматический и ручной)
Автоматический ищет ближайшие сегменты, но в разных случаях это может не соответствовать ожиданиям, поэтому будет возможность указывать пары в ручную)
Так же можно будет обрабатывать по несколько сегментов (работает по принципу gap)
Сейчас все выглядит сумбурно, но пока это тестовые дэмки. Как все будет готово, сделаю все как надо)
Первый блок - обработка сегментов
Этот блок будет отвечать за обработку порядка сегментов
1) Базовый (текущий порядок)
2) Реверсивный
3) По осям XYZ
4) По удаленности от реф объекта
5) По кругу
6) Ну и самый интересный - режим mirror (т.е с двух сторон)
Помимо этого в этом блоке можно будет сшивать сегменты, которые должны обрабатываться вместе.
Режима будет 2 (автоматический и ручной)
Автоматический ищет ближайшие сегменты, но в разных случаях это может не соответствовать ожиданиям, поэтому будет возможность указывать пары в ручную)
Так же можно будет обрабатывать по несколько сегментов (работает по принципу gap)
Сейчас все выглядит сумбурно, но пока это тестовые дэмки. Как все будет готово, сделаю все как надо)
❤2👍1🔥1
Media is too big
VIEW IN TELEGRAM
Блок настройки Anchor. Вот тут вообще жопа
Так же по режимам.
1ый - база
2ой - реверс
3ий - обработка по осям XYZ т.е мы ищем самые максимальные или минимальные значения по осям и используем их как точку для старта роста.
4ый - Очень похож на 3ий, но вместо мин и максимумов, по оси ищется ближайшая точка для центра сегмента.
5ый по кругу - тут все ясно)
6ой дистанция до объекта.
У каждого режима есть свои дополнительные/корректирующие настройки.
Сейчас еще кое-что дорабатываю касательно этого блока.
Так же по режимам.
1ый - база
2ой - реверс
3ий - обработка по осям XYZ т.е мы ищем самые максимальные или минимальные значения по осям и используем их как точку для старта роста.
4ый - Очень похож на 3ий, но вместо мин и максимумов, по оси ищется ближайшая точка для центра сегмента.
5ый по кругу - тут все ясно)
6ой дистанция до объекта.
У каждого режима есть свои дополнительные/корректирующие настройки.
Сейчас еще кое-что дорабатываю касательно этого блока.
❤2👍1🔥1
Обновления:
1) Добавил ко многим anchor режимам возможность пропорционального роста. Для полной симметрии
2) Добавил опцию подрезать trim (аналог start/end)
Следующим шагом будет компиляция всего в одно целое
1) Добавил ко многим anchor режимам возможность пропорционального роста. Для полной симметрии
2) Добавил опцию подрезать trim (аналог start/end)
Следующим шагом будет компиляция всего в одно целое
🔥2