Справка Houdini на русском VEX

Полуребра (half-edges)

VEX имеет функции для работы с ребрами каждого полигона как с отдельными "полуребрами".

On this page

Обзор

В Houdini ребра обычно обрабатываются как ненаправленные и общие для граней. Однако для некоторых задач (например, упрощения или чистки геометрии) полезно рассматривать грани, будто каждая имеет свои собственные ребра.

Вы можете думать об этом как о разбиении каждого общего ненаправленного ребра вдоль его длины на два полуребра. (Ребра на границах, конечно, имеют только одно "полуребро".)

Каждое полуребро является направленным (имеет начальную и конечную вершину).

Функции для работы с полуребрами позволяют вам быстро находить начальную и конечную вершину полуребра, следующее полуребро, получать другие полуребра того же ребра, а также находить все полуребра, связанные с данной точкой, и выполнять другие манипуляции.

Эквивалентность

Два полуребра считаются эквивалентными, если относятся к одному и тому же общему ребру. На следующем рисунке три примитива имеют общее ребро. Полуребра e, f и g являются эквивалентными, так как относятся к одному и тому же общему ребру. Направленность не имеет значения – e считается эквивалентным f и g, даже если они имеют противоположные направления.

Начальная (и конечная) вершина полуребра однозначно идентифицируют его, что означает, что в качестве источника может быть не более одного полуребра с заданной вершиной. Это связано с тем, что вершина может принадлежать только одному примитиву. Однако, поскольку некоторые вершины могут быть подключены к одной и той же точке, полуребро может иметь общую начальную и конечные точки. Другой способ понимания эквивалентности состоит в том, что два полуребра эквивалентны, если их вершины подключены к одним и тем же двум точкам.

В каждом наборе эквивалентных полуребер есть одно первичное (primary) полуребро. Функции VEX позволяют вам проверить, является ли заданное полуребро первичным, а также найти эквивалентное первичное полуребро, если заданное не является первичным. В случае unshared edge имеется только единственное первичное полуребро.

Функции

hedge_isvalid

Проверяет, является ли полуребро действительным

hedge_isprimary

Проверяет, является ли полуребро первичным

hedge_primary

Находит первичный эквивалент полуребра. Если полуребро относится к unshared edge, возвращается то же самое полуребро.

hedge_isequiv

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

hedge_nextequiv

Перебирает эквивалентные полуребра

hedge_equivcount

Получает количество эквивалентных полуребер

hedge_srcvertex

Получает начальную вершину полуребра

hedge_dstvertex

Получает конечную вершину полуребра

hedge_presrcvertex

Получает вершину, предшествующую начальной вершине в примитиве полуребра

hedge_postdstvertex

Получает вершину, следующую за конечной вершиной в примитиве полуребра

hedge_prim

Получает примитив полуребра

hedge_srcpoint

Получает начальную точку полуребра

hedge_dstpoint

Получает конечную точку полуребра

hedge_presrcpoint

Получает точку, в которую подключена вершина, предшествущая начальной вершине полуребра

hedge_postdstpoint

Получает точку, в которую подключена вершина, следующая за конечной вершиной полуребра

hedge_next

Получает следующее полуребро в примитиве

hedge_prev

Получает предыдущее полуребро в примитиве

pointedge

Находит полуребро между двумя точками

pointhedge

Находит полуребро с заданной начальной и конечной точками

pointhedge

Находит полуребро с заданной начальной точкой

pointhedgenext

Перебирает полуребра с заданной начальной точкой

vertexhedge

Получает полуребро с заданной начальной вершиной

primhedge

Получает полуребро на заданном примитиве

VEX

Язык

Следующие шаги

Справочная информация