Категория ЧаВо: SOP

Как прочитать атрибут с поверхности геометрии?

Например вам нужно прочитать значение атрибута с поверхности объекта, наиболее близкой к какой-то точке. При этом можно читать атрибут не с точек, а между ними, интерполируя значения. Для этого есть две Vex (VOP) функции. xyzdist() находит эту координату на поверхности, возвращает расстояние до нее, номер примитива и параметрические координаты внутри этого примитива. primuv() по номеру…
Read more

После ноды Merge геометрия выглядит иначе. Портятся нормали, альфа, цвет…

Дело в атрибутах и их значениях по умолчанию. Если в одной из веток, приходящих на ноду Merge есть атрибут N, а на второй его нет, то он добавится на вторую геометрию со значением по умолчанию. Это касается всех атрибутов. Решение: добавить нужный атрибут во вторую ветку.

Как выделить первые и последние точки линий?

Group expression — Points — пресет Point valence. Создаем параметр и выбираем в нем 1. Это выражение поместит в группу все точки, у которых один сосед.

Как расширить группу до целого острова геометрии?

Нода Group Expand. У нее есть галка Flood fill to connected geometry.

Как прочитать атрибут с другой ноды или в ноде, которая не умеет обращаться к атрибутам напрямую?

Если мы знаем номер точки-вертекса-примитива, то через выражения point(), prim(), vertex(). Если не знаем, то запускаем цикл foreach, например по примитивам, и читаем атрибут через выражения с ноды Foreach_begin с примитива номер ноль. Поскольку в цикл затягивается только один примитив за раз, то внутри цикла будет только один, нулевой по номеру, примитив.

Как объединить разные полилайны в один полигон?

Сначала объединить их нодой Fuse, а потом добавить ноду Poly Path.

Как превратить кривую в отдельные отрезки?

Нода Convert Lines превращает каждый отрезок кривой в полигон. Чтобы разъединить точки нужно поставить после нее ноду Facet — Unique points.