О - оптимизация
Тут такая задача всплыла, сделать анимацию переворота фейсов на треугольной сфере. Поскольку эта сфера состоит из правильных треугольников, нужно взять каждый фейс, отделить его и развернуть по биссектрисе любого угла. Ну что, берем Vector Rotate и нужно только задать центр вращения и ось для каждого фейса:
С центром все просто. Просто вычислить центр для каждого острова сетки:
Для оси это довольно сложно, потому что здесь понадобятся узлы топологии. Для каждого треугольника нужно вычесть одну вершину из центра двух других, чтобы получить ось, которая проходит из одной точки в центр противоположной стороны:
Итого, готово, все работает:
Я публикую ответ и тут смотрю со своим ответом пришел Маркус:
Это что за магия? Почему тут все в 10 раз проще? Давайте разбираться.
Во-первых, центр полигона. Технически это конечно среднее арифметическое всех его точек. Но, зачем это нужно, если блендер и так определит центр полигона если попросить его через смену домена на полигоны? Вместо 5 нод, две:
Дальше больше. Зачем нам определять середину еджа, если у нас уже есть центр полигона, и мы его уже получили в 2 нода? Упрощаем:
Так выглядит финальный сетап:
Гораздо проще не правда ли? Надо чаще юзать Interpolate on Domain.
Исходничек отдельным постом.
geometry nodes
blender