On this page

Без проверки существования

Данные функции возвращают значение атрибута, если указанный элемент (detail переменная/примитив/точка/вершина) существует и имеет указанный атрибут, иначе нуль или пустое значение.

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

attrib

Читает значение атрибута из геометрии.

<type> attrib(<geometry>geometry, string attribclass, string name, int elemnum)

<type>[] attrib(<geometry>geometry, string attribclass, string name, int elemnum)

Эта общая форма позволяет указать "класс" атрибута во время выполнения. Это может быть полезно для написания общего кода, который может работать с разными классами. Если вы заранее знаете класс атрибута, который хотите прочитать, использование detail(), prim(), point() или vertex() может быть быстрее.

<geometry>

При запуске в контексте ноды (например, Wrangle SOP) этот аргумент может быть целым числом, представляющим номер входа (начиная с 0), с которого функция будет читать атрибуты.

В качестве альтернативы аргумент может быть строкой, указывающей на файл геометрии (например, *.bgeo) для чтения. При запуске внутри Houdini может быть ссылкой op:/путь/до/sop.

attribclass

Один из "detail" (или "global"), "point", "prim", или "vertex".

Вы также можете использовать "primgroup", "pointgroup" или "vertexgroup" для чтения из групп.

name

Имя атрибута, группы или встроенной функции (intrinsic) для чтения.

elemnum

Номер элемента для чтения, например, номер точки, номер примитива или номер вершины. Игнорируется для атрибутов класса detail. Вы можете использовать функцию vertexindex() для преобразования пары примитив/точка в номер вершины.

Returns

Возвращает пустое или нулевое значение, если атрибут не существует. Используйте функцию getattrib(), если вы хотите проверить, существует ли атрибут.

detail

Читает значение атрибута класса detail из геометрии.

<type> detail(<geometry>geometry, string attribute_name, int ignored=0)

<type>[] detail(<geometry>geometry, string attribute_name, int ignored=0)

<geometry>

При запуске в контексте ноды (например, Wrangle SOP) этот аргумент может быть целым числом, представляющим номер входа (начиная с 0), с которого функция будет читать атрибуты.

В качестве альтернативы аргумент может быть строкой, указывающей на файл геометрии (например, *.bgeo) для чтения. При запуске внутри Houdini может быть ссылкой op:/путь/до/sop.

attribute_name

Имя атрибута (или встроенной функции - "intrinsics") для чтения.

ignored

Последний аргумент всегда игнорируется. Этот аргумент необходим для того, чтобы вы могли изменить имя функций point/prim/vertex на detail без изменения аргументов (у этих функций в этом месте находится номер элемента).

Returns

Возвращает значение заданного атрибута или 0, если чтение атрибута не удалось.

prim

Читает значение атрибута класса primitive из геометрии.

<type> prim(<geometry>geometry, string attribute_name, int primnumber)

<type>[] prim(<geometry>geometry, string attribute_name, int primnumber)

<geometry>

При запуске в контексте ноды (например, Wrangle SOP) этот аргумент может быть целым числом, представляющим номер входа (начиная с 0), с которого функция будет читать атрибуты.

В качестве альтернативы аргумент может быть строкой, указывающей на файл геометрии (например, *.bgeo) для чтения. При запуске внутри Houdini может быть ссылкой op:/путь/до/sop.

attribute_name

Имя атрибута (или встроенной функции - "intrinsics") для чтения.

primnumber

Номер примитива для чтения атрибута.

Returns

Возвращает значение заданного атрибута в заданном примитиве или 0, если чтение атрибута не удалось или заданный примитив не существует.

point

Читает значение атрибута класса point из геометрии.

<type> point(<geometry>geometry, string attribute_name, int pointnumber)

<type>[] point(<geometry>geometry, string attribute_name, int pointnumber)

<geometry>

При запуске в контексте ноды (например, Wrangle SOP) этот аргумент может быть целым числом, представляющим номер входа (начиная с 0), с которого функция будет читать атрибуты.

В качестве альтернативы аргумент может быть строкой, указывающей на файл геометрии (например, *.bgeo) для чтения. При запуске внутри Houdini может быть ссылкой op:/путь/до/sop.

attribute_name

Имя атрибута (или встроенной функции - "intrinsics") для чтения.

pointnumber

Номер точки для чтения атрибута.

Returns

Возвращает значение заданного атрибута в заданной точке или 0, если чтение атрибута не удалось или заданная точка не существует.

vertex

Читает значение атрибута класса vertex из геометрии.

<type> vertex(<geometry>geometry, string attribute_name, int linear_vertex_index)

<type>[] vertex(<geometry>geometry, string attribute_name, int linear_vertex_index)

Указание вершины, используя линейный индекс вершины (номер вершины из списка всех вершин).

<type> vertex(<geometry>geometry, string attribute_name, int prim_num, int vertex_num)

<type>[] vertex(<geometry>geometry, string attribute_name, int prim_num, int vertex_num)

Указание вершины, используя номер примитива и номер вершины в списке вершин данного примитива.

<geometry>

При запуске в контексте ноды (например, Wrangle SOP) этот аргумент может быть целым числом, представляющим номер входа (начиная с 0), с которого функция будет читать атрибуты.

В качестве альтернативы аргумент может быть строкой, указывающей на файл геометрии (например, *.bgeo) для чтения. При запуске внутри Houdini может быть ссылкой op:/путь/до/sop.

attribute_name

Имя атрибута (или встроенной функции - "intrinsics") для чтения.

Returns

Возвращает значение заданного атрибута в заданной вершине или 0, если чтение атрибута не удалось или заданная вершина не существует.

С проверкой существования

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

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

getattrib

Читает значение атрибута из геометрии и выводит флаг успеха/неудачи операции чтения.

<type> getattrib(<geometry>geometry, string attribclass, string attribute_name, int elemnum, int &success)

<type>[] getattrib(<geometry>geometry, string attribclass, string attribute_name, int elemnum, int &success)

Эта общая форма позволяет указать "класс" атрибута во время выполнения. Это может быть полезно для написания общего кода, который может работать с разными классами. Если вы заранее знаете класс атрибута, который хотите прочитать, использование detailattrib(), primattrib(), pointattrib() или vertexattrib() может быть быстрее.

<geometry>

При запуске в контексте ноды (например, Wrangle SOP) этот аргумент может быть целым числом, представляющим номер входа (начиная с 0), с которого функция будет читать атрибуты.

В качестве альтернативы аргумент может быть строкой, указывающей на файл геометрии (например, *.bgeo) для чтения. При запуске внутри Houdini может быть ссылкой op:/путь/до/sop.

attribclass

Один из "detail" (или "global"), "point", "prim", или "vertex".

Вы также можете использовать "primgroup", "pointgroup" или "vertexgroup" для чтения из групп.

attribute_name

Имя атрибута (или встроенной функции - "intrinsics") для чтения.

elemnum

Номер точки/примитива/вершины для чтения значения атрибута. Для атрибутов класса detail используйте 0 (аргумент игнорируется для атрибутов класса detail).

Для получения линейного номера вершины по заданному номеру примитива и номеру его вершины, используйте функцию primvertex().

&success

Функция запишет 1 в данную переменную, если атрибут был успешно прочитан, иначе запишет 0.

Returns

В случае успешного чтения возвращает значение атрибута или 0, если чтение не было удачным.

detailattrib

Читает значение атрибута класса detail из геометрии и выводит флаг успеха/неудачи операции чтения.

<type> detailattrib(<geometry>geometry, string attribute_name, int ignored, int &success)

<type>[] detailattrib(<geometry>geometry, string attribute_name, int ignored, int &success)

<geometry>

При запуске в контексте ноды (например, Wrangle SOP) этот аргумент может быть целым числом, представляющим номер входа (начиная с 0), с которого функция будет читать атрибуты.

В качестве альтернативы аргумент может быть строкой, указывающей на файл геометрии (например, *.bgeo) для чтения. При запуске внутри Houdini может быть ссылкой op:/путь/до/sop.

attribute_name

Имя атрибута (или встроенной функции - "intrinsics") для чтения.

ignored

Данный элемент игнорируется для данного класса, напишите 0.

&success

Функция запишет 1 в данную переменную, если атрибут был успешно прочитан, иначе запишет 0.

Returns

В случае успешного чтения возвращает значение атрибута или 0, если чтение не было удачным.

primattrib

Читает значение атрибута класса primitive из геометрии и выводит флаг успеха/неудачи операции чтения.

<type> primattrib(<geometry>geometry, string attribute_name, int primnumber, int &success)

<type>[] primattrib(<geometry>geometry, string attribute_name, int primnumber, int &success)

<geometry>

При запуске в контексте ноды (например, Wrangle SOP) этот аргумент может быть целым числом, представляющим номер входа (начиная с 0), с которого функция будет читать атрибуты.

В качестве альтернативы аргумент может быть строкой, указывающей на файл геометрии (например, *.bgeo) для чтения. При запуске внутри Houdini может быть ссылкой op:/путь/до/sop.

attribute_name

Имя атрибута (или встроенной функции - "intrinsics") для чтения.

primnumber

Номер примитива для чтения атрибута.

&success

Функция запишет 1 в данную переменную, если атрибут был успешно прочитан, иначе запишет 0.

Returns

В случае успешного чтения возвращает значение атрибута в заданном примитиве или 0, если чтение не было удачным или примитив не существует.

pointattrib

Читает значение атрибута класса point из геометрии и выводит флаг успеха/неудачи операции чтения.

<type> pointattrib(<geometry>geometry, string attribute_name, int pointnumber, int &success)

<type>[] pointattrib(<geometry>geometry, string attribute_name, int pointnumber, int &success)

<geometry>

При запуске в контексте ноды (например, Wrangle SOP) этот аргумент может быть целым числом, представляющим номер входа (начиная с 0), с которого функция будет читать атрибуты.

В качестве альтернативы аргумент может быть строкой, указывающей на файл геометрии (например, *.bgeo) для чтения. При запуске внутри Houdini может быть ссылкой op:/путь/до/sop.

attribute_name

Имя атрибута (или встроенной функции - "intrinsics") для чтения.

pointnumber

Номер точки для чтения атрибута.

&success

Функция запишет 1 в данную переменную, если атрибут был успешно прочитан, иначе запишет 0.

Returns

В случае успешного чтения возвращает значение атрибута в заданной точке или 0, если чтение не было удачным или точка не существует.

vertexattrib

Читает значение атрибута класса vertex из геометрии и выводит флаг успеха/неудачи операции чтения.

<type> vertexattrib(<geometry>geometry, string attribute_name, int linear_vertex_index, int &success)

<type>[] vertexattrib(<geometry>geometry, string attribute_name, int linear_vertex_index, int &success)

В отличие от vertex(), данная функция не имеет версии, которая работает через номер примитива и номер его вершины. Если вам необходимо получить линейный индекс вершины, используйте функцию vertexindex().

<geometry>

При запуске в контексте ноды (например, Wrangle SOP) этот аргумент может быть целым числом, представляющим номер входа (начиная с 0), с которого функция будет читать атрибуты.

В качестве альтернативы аргумент может быть строкой, указывающей на файл геометрии (например, *.bgeo) для чтения. При запуске внутри Houdini может быть ссылкой op:/путь/до/sop.

attribute_name

Имя атрибута (или встроенной функции - "intrinsics") для чтения.

linear_vertex_index

Линейный номер вершины.

Чтобы преобразовать номер примитива и номер вершины в рамках этого примитива в линейный индекс для параметра linear_vertex_index, используйте функцию vertexindex().

&success

Функция запишет 1 в данную переменную, если атрибут был успешно прочитан, иначе запишет 0.

Returns

В случае успешного чтения возвращает значение атрибута в заданной вершине или 0, если чтение не было удачным или вершина не существует.

Examples

// Получаем значение атрибута "uv" класса detail.
vector uv = detail("defgeo.bgeo", "uv");
// Получаем значение атрибута "Cd" примитива с номером 7
// in the SOP specified by the path "/obj/geo1/color1" (Houdini
// only)
vector clr = prim("op:/obj/geo1/color1", "Cd", 7);
// Получаем позицию 3 точки в "defgeo.bgeo"
vector pos = point("defgeo.bgeo", "P", 3);
// Получаем значение атрибута "uv" из второй вершины третьего примитива в файле "defgeo.bgeo"
vector uv = vertex("defgeo.bgeo", "uv", 3, 2);

VEX

Язык

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

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