On this page |
Без проверки существования
Данные функции возвращают значение атрибута, если указанный элемент (detail переменная/примитив/точка/вершина) существует и имеет указанный атрибут, иначе нуль или пустое значение.
Если вам требуется различать значение атрибута фактически равное нулю или пустое по отношению к функции, возвращающей нуль или пустое значение, потому что атрибут не существует, используйте указанные ниже версии с проверкой.
Читает значение атрибута из геометрии.
<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 из геометрии.
<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
, если чтение атрибута не удалось.
Читает значение атрибута класса 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 из геометрии.
<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 из геометрии.
<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, потому что значение атрибута фактически равно нулю или потому, что чтение не удалось.
Если в вашем коде не имеет значения, существует ли атрибут, использование указанных выше версий без проверки будет проще, т.к. не требуется создание переменной для перезаписи.
Читает значение атрибута из геометрии и выводит флаг успеха/неудачи операции чтения.
<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
, если чтение не было удачным.
Читает значение атрибута класса 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
, если чтение не было удачным.
Читает значение атрибута класса 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
, если чтение не было удачным или примитив не существует.
Читает значение атрибута класса 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
, если чтение не было удачным или точка не существует.
Читает значение атрибута класса 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);