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

Как сделать интерполяцию?

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

Как создать Struct?

Struct — это структура данных, которая позволяет использовать инкапсуляцию, пусть и в ограниченном виде. Struct необходимо создавать во внешнем файле, а не в самом Врангле. Создайте внешний файл так, как это описано в этом вопросе: http://hipnc.club/ufaqs/custom-functions/ Struct может содержать как поля, так и методы (если пользоваться терминологией ООП). После этого во Врангле делаем #include с…
Read more

Как сохранить свои функции?

Создайте файл с расширением .h, например myvex.h. Этот файл необходимо поместить в папку, которая указана в переменной окружения HOUDINI_VEX_PATH или же в папку ДОКУМЕНТЫ/HoudiniXX.XX/vex/include. После этого вы сможете обращаться к указанным в этом файле функциям, добавив в начало кода во Врангле строку #include «myvex.h» Если же вам нужно передать проект кому-то другому и у вас…
Read more

Можно ли в Вексе прочитать список доступных атрибутов?

Допустим, вы не знаете точно названия атрибутов на геометрии. Как получить список их имен, чтобы выбрать нужный? Для этого существуют следующие интринсики на уровне детали: pointattributes, primitiveattributes, vertexattributes и detailattributes. Их можно прочитать в строковые массивы и уже дальше работать с ними, как с обычными строками. Например, можно сделать поиск по какому-то условию через re_find,…
Read more

Как получить одну из компонент вектора при чтении его через функции типа point()?

Поскольку функции point(), prim(), detail() и им подобные могут возвращать разные типы данных, то просто написать f@attr = point(1, «P», @ptnum).x; не получится, Врангл выдаст ошибку Ambiguous call to function… Чтобы подобная записать сработала, необходимо сказать Вексу, что мы читаем именно вектор. Это можно сделать двумя путями: создать векторную переменную и читать значение позиции в…
Read more

Как в SOP двигать точку по кривой?

В ноде Carve есть режим Extract — Extract Point(s). В нем от кривой останется одна или две точки (при включенном параметре Second U). Если нужно решение в вексе, то здесь понадобится функция Primuv.

Как преобразовать число в строку?

Если речь про целое число, то существует функция itoa(number), которая из числа типа 125 возвращает строку «125». Эта функция часто используется для работы с атрибутом name, мультипармами или инстансами. Если же нам нужно перевести в строку флоат или как-то отформатировать результат, то необходимо использовать функцию sprintf(). В ней задается произвольная строка, в которой встречаются служебные…
Read more

Может ли пользовательская функция возвращать массив?

Чтобы функция возвращала массив, нужно при ее объявлении использовать слово function, в противном случае выпадет ошибка.

Как проверить вхождение элемента в группу?

Для проверки вхождения точки-примитива-вертекса в группу есть функции inpointgroup(), inprimgroup(), invertexgroup(). Но удобнее использовать виртуальный атрибут @group_название В этом атрибуте будет 0, если элемент не принадлежит группе, и 1, если принадлежит. Таким образом проверку на вхождение в группу start можно осуществлять так:

Как прочитать атрибут с другого входа Wrangle?

Очевидный способ — использовать функции point(), prim(), vertex(), detail(), где первым аргументом указать номер входа. Есть более простой синтаксис, который выглядит так: Указание типа происходит по стандартным правилам. После знака @ ставим opinput номер входа и через нижнее подчеркивание название атрибута. Нумерация начинается от нуля. При этом берется атрибут с элемента с таким же номером,…
Read more