На CBB – Telegram
На CBB
108 subscribers
98 photos
70 videos
5 files
181 links
This blog has been archived. Feel free to browse if you're looking for interesting or lesser-known Houdini content. Enjoy!
Download Telegram
#houdini #vex #quiz

Do I know VEX Language?

Субботний квиз. Что должен будет вывести этот код?

int x = 3;
int y = 1;

if(x == 0)
if(y == 0) printf("%d\n", y + 1);
else {
int z = y + 2;
printf("%d\n", x);
}


Ответы:
1) 1
2) 2
3) 3
4) Ничего

Правильный ответ: 4

При таком положении вещей у нас этот код никогда не выполняется. Дело в том, что else тут относится относится не к внешнему, согласованному оператору if, а к внутреннему оператору if и следующий кусок кода можно переписать эквивалентно

if(x == 0) {
if(y == 0) printf("%d\n", y + 1);
else {
int z = y + 2;
printf("%d\n", x);
}
}

Так становится более наглядно почему важно соблюдать синтаксическую особенность языка. Чтобы этот пример стал работать ожидаемым образом нужно всего лишь правильно переписать пример

if(x == 0) {
if(y == 0) printf("%d\n", y + 1);
} else {
int z = y + 2;
printf("%d\n", x);
}
This media is not supported in your browser
VIEW IN TELEGRAM
#houdini #content #research #undefined

Unsafe integer overflow!!!

На исследование этого вопроса меня "вдохновила" недавняя тема на форуме от создателя Modeler в Houdini где он мягко говоря прошёлся по разработчикам и высказал своё недовольство, что новый билд H20 стал не лучше, а даже хуже по сравнению с H19.5.
Вот этот пост https://www.sidefx.com/forum/topic/95458

Мне стало интересно посмотреть на это глазами не просто пользователя который ловит баги от случая к случаю, случайно, а как тестировщик такой сложной системы который будет делать то, что вообще кажется иррациональным и контр-интуитивным в обычной работе. Справедливости ради все найденные баги есть и в H19.5.

За основную тему я взял печально известную проблему арифтметического переполнения - специфичная для компьютерной арифметики ситуация, когда при арифметическом действии результат становится больше максимально возможного значения для переменной, использующейся для хранения результата это как правило приводит к неопределённому поведению...
🔥1
#houdini #axiom #content #freeware #hip

Иногда вам нужны реальные файлы проекта чтобы изучать новое. DoubleJump Academy начала бесплатно распространять такие учебные проекты. Их платформа так же позволяет вносить свой вклад в развитие обучающих материалов.

https://www.doublejumpacademy.com/community-files
#houdini #hnoscript #code #noscripts #env

Variable modifiers

Используем "древнейшие" технологии себе на пользу. 🧐 Несмотря на то что HScript пророчат скорую кончину его всё равно ещё активно используют в выражениях параметров, ну и мы используем одну из таких необычных и экзотических способностей как модификаторы.

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

Чтобы изменить значение переменной, добавьте :code в конец имени переменной.

Мы будет смотреть на поведение модификаторов используя переменную $HIPFILE которая возвращает полный путь до сцены: /tmp/houdini_temp/example_v001.hip

Нам доступны следующие коды:

Head :h (Часть пути в имени пути (то есть путь до имени файла)
$HIPFILE:h == /tmp/houdini_temp

Tail :t (Только часть имени файла в имени пути)
$HIPFILE:t == example_v001.hip


Extension :e (Расширение в конце имени файла)
$HIPFILE:e == hip


Root :r (Все части имени пути, кроме расширения)
$HIPFILE:r == /tmp/houdini_temp/example_v001


Search :s/ptrn/repl (Заменить вхождения шаблона ptrn на repl)
$HIPFILE:s/v001/v002 == /tmp/houdini_temp/example_v002.hip


Upper :u (Преобразование первого символа в верхний регистр)
$HIPFILE:u == /Tmp/houdini_temp/example_v001.hip


Lower :l (Преобразование первого символа в нижний регистр)
$HIPFILE:l == /tmp/houdini_temp/example_v001.hip


Так же мы можем изменять поведение самих модификаторов кодов:

Global :g (Рассматривайте строку как список строк, разграниченных пробелами, и применяйте следующий код к каждому компоненту независимо)

All :a (Рекурсивно примените следующий код столько раз, сколько возможно)

Больше примеров:

A = "foo1 foo2 foo3 foofoo4"

$A:u == "Foo1 foo2 foo3 foofoo4"
$A:u:u == "FOo1 foo2 foo3 foofoo4"
$A:gu == "Foo1 Foo2 Foo3 Foofoo4"
$A:gu:u == "FOo1 Foo2 Foo3 Foofoo4"
$A:au == "FOO1 FOO2 FOO3 FOOFOO4"
$A:al == "foo1 foo2 foo3 foofoo4"

$A:s/foo/bar/ == "bar1 foo2 foo3 foofoo4"
$A:s/foo/bar/:s/foo/bar/ == "bar1 bar2 foo3 foofoo4"
$A:gs/foo/bar/ == "bar1 bar2 bar3 barfoo4"
$A:as/foo/bar/ == "bar1 bar2 bar3 barbar4"


К чему это я всё, некоторые вещи удобнее сделать HScript чем Питоном 🙂
🔥2
#pipeline #vfx #tools #rnd #development

В индустрии анимации и VFX как никогда высок спрос на эффективные, масштабируемые и гибкие конвейерные платформы. AYON представляет собой следующий этап эволюции популярной платформы с открытым исходным кодом OpenPype, разработанной специалистами по конвейерным системам из компании Ynput. Эта платформа с открытым исходным кодом призвана оптимизировать рабочие процессы творческих студий, обеспечивая бесперебойную реализацию проектов от концепции до завершения.

Выпуск AYON 1.0 представляет облачный сервис, который обеспечивает масштабируемость и гибкость. Ранее ограниченная самостоятельными установками, возможность облачного хостинга полезна для студий, работающих с распределенными командами, упрощает управление инфраструктурой и позволяет художникам сосредоточиться на том, что у них получается лучше всего: создавать захватывающие визуальные эффекты без участия администратора.

https://beforesandafters.com/2024/04/17/introducing-ayon-advancing-creative-workflows-for-animation-and-vfx-pipelines/
#houdini #github #rnd #hda #otls #assets

DASH - это пакет для Houdini, который предлагает небольшие улучшения качества жизни, стандартов и рабочих процессов через поставку нод, скриптов или настроек.

Первый релиз небольшой и представляет собой переделку ассетов, которые впервые опубликованы были на Orbolt. Он также представляет тип нод и принципы, к которым автор будет стремиться в дальнейших релизах:

- Небольшие гранулированные ноды, которые можно повторно использовать во многих настройках. Не монолитные ноды с полной настройкой.

- Больше VOPs, чем SOPs, потому что последние являются очень целевым контекстом (многие SOP ноды, которые создавались в течение многих лет, пересекаются с поставляемыми нодами).

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

- Меню с информацией и скриптами колбэков, которые ускоряют настройку.

https://github.com/probiner/DASH
#houdini #vex #quiz

Do I know VEX Language?

Субботний квиз. Мы создаём 2 переменные подобным образом:

int float_chf@attr1 = 42.0;
float int_chi@attr2 = 42;


Какое значение будет у атрибутов attr1 и attr2?

Ответы:
1) 42.0, 42
2) 42, 42.0
3) 0, 0.0
4) 0.0, 0
5) Compile Error

Правильный ответ: 4

Да, этот код не вызывает синтаксической ошибки и кроме того работает. Но почему значения атрибутов тогда равны нулю?

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

Сама форма парсится синтаксическим анализатором на предмет валидности идентификаторов и не запрещает в имени использовать символ лигатуры как разделитесь, поэтому имя идентификатора float_chf@attr1 или int_chi@attr2 абсолютно валидны и могут быть присвоены другой переменной, но так конечно делать не рекомендуется.

Бонус: какое имя мы создадим из такой привязки?

#define ATTR #$%^&*()!
int
@ATTR = 42;
#houdini #github #lpe #lighting #render

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

Это была неплохая тренировка чтобы разобраться с тем как работают шаблонные, подстановочные выражения. С помощью LPE невозможно покрыть все кейсы для AOV, но для очень многих тем не менее можно получить ту самую "хитрую" маску для композа, например получить глубину индиректных "отскоков" от поверхности материала, или убрать из пасса какой-то источник освещения который не хотелось бы, чтобы он был в этом пассе.

Сами выражения LPE Мантры совместимы с Кармой поэтому это будет вполне работать и для неё, но с той небольшой разницей, что теперь LPE поддерживает и вывод B - Background (only supported in Karma and not in Mantra). Этот кейс тут не покрыт, но вы сможете разобраться самостоятельно.

https://github.com/alexwheezy/Mantra-LPE-Cookbook
#houdini #github #gaea #hda #assets

Открыто бета-тестирование Gaea 2.0 с интеграцией в H20. Что такое Gaea 2.0?
Gaea 2.0 - это следующая крупная версия индустриального инструмента для проектирования и создания поверхности земли от QuadSpinner.

Судя по демонстрациям которые я видел это ещё одна прослойка для создания такой сущности как HeightField. Инструмент расширяет стандартные SOP операторы для работы с поверхностями элегантно встраиваясь в текущий нетворк. Обещается значительный прирост производительности по сравнению с Gaea 1.0 за счёт использования GPU и переработанных алгоритмов для CPU. Значит изрядная доля кода использует OpenCL, что очень хорошо конечно.

https://github.com/QuadSpinner/Gaea2Houdini_beta
#houdini #release #hive

Да, пора бы уже и следующий релиз встречать. Все же успели попробовать и насладиться всеми фичами H20.0?

Copernicus это я так понимаю новый, переработанный COP контекст... 👀
🔥3
#houdini #github #vex #opencl #parser #rnd

ADL Parameter Parser

Это замена vexpressionmenu.py из Houdini, которая добавляет поддержку простой (и сложной!) спецификации параметров в строке (подобно OSL). Скрипт совместим с VEX и OpenCL благодаря переопределению внутренней функции, используемой для заполнения параметров фрагмента кода. Поскольку эта функция заменяет основную функцию в Houdini, одним из главных приоритетов этого проекта было обеспечение того, чтобы поведение по умолчанию оставалось нетронутым.

Что это такое в самом простом понимании?

Для примера возьмём такой код:
v@P += chv('offset1'); // adlParm[[ default=2 ]]
v@P += chv('offset2'); // adlParm[[ default=(1,2,3) ]]
v@P.y += chf('offset2'); // adlParm[[ default=1.5, min=-2, max=2, minlock=1 ]]

Здесь после комментариев можно задать спецификацию создания параметров не изменяя их вручную в Edit Properties после создания параметров. Мы можем сразу создать нужные дефолты, баунды или вообще заблочить параметры. Полный список спецификации есть на гитхабе плагина. Помойму вещь довольно любопытная.

https://github.com/toby5001/ADL-Parameter-Parser
🔥3
DEMO_EXEMPLE_GIF.gif
19.3 MB
#houdini #hda #assets #rnd #slate

Обычно у каждой студии свой уникальный слэйт под проекты и шоты, но вдруг
кому-то может пригодиться: Slate Overlay 0.2 (у разраба видимо нет гитхаба поэтому да - гугл драйв)

Цель этого инструмента иметь компактный и понятный пользовательский интерфейс для отображения необходимой информации из камеры вьюпорта

Особенности:
- Data: Основная информация о проекте: название, этап работы, версия
- Custom Tags: Тэги соответствующие этапу работы
- Layout: Размещение и настройка элементов отображения
- Framing: Компоновка кадра с помощью правила третей, сэйфа полей и спирали Фибоначчи
- Notes: Дополнительные комментарии о сиквенсе
- Simulation Support: Данные о симуляции из солвера
- Custom Parameters: Произвольные параметры из сетапа
- References: Миниатюры изображений или ссылки на сиквенцию
- Responsive UI: Автоматическая адаптация к разрешению камеры
- Font & Colors: Кастомизация цвета и шрифт наложения
- Save & Share: Сохранение, загрузка и шаринг с настройками в одном файле
🔥2
#houdini #vop #hda #assets #rnd #content

Автор и разработчик инструментов Dash сделал небольшой вводный курс о том как ими пользоваться и где применять.

Ссылка на предыдущий пост о Dash: https://news.1rj.ru/str/copystamp/174

https://www.youtube.com/watch?v=I1n2JEWlyNc
🔥3
#pipeline #prims #rnd #python

"Горячий доклад" с FMX2024 о Prims Pipeline.

В этой презентации покажут различные рабочие процессы с использованием Prism Pipeline и последние достижения и новые возможности.
Если кто ещё не слышал о них, если коротко, то они предлагают решение пайплайна для студии "из коробки" где уже написаны соответствующие коннекторы для разных DCC приложений, сабмитеры, ассет-менеджер для полноценной работы в том числе и с набирающим популярность форматом USD.

https://www.youtube.com/watch?v=sFb8A6f8McI&ab_channel=PrismPipeline
🔥3👍1
#houdini #github #opencl #rnd #substance

Substance Designer операторы для Houdini. Переписаны в основном на OpenCL и работают над хайтфилдами в контексте SOP.
Не проверял их работоспособность, но по превьюхе выглядит как интересный, опенсорсный проект.

https://github.com/kabushPasha/HoudiniSD
🔥6
#houdini #github #rnd #webgl #python

Цель этого проекта - позволить любому устройству, подключенному к локальному веб-серверу, рендерить превью-геометрию, выполнять ROP таски и взаимодействовать с нод-графом в Houdini.
Этот проект сочетает в себе докеризованную реализацию Houdini с веб-интерфейсом.

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

Адрес проекта:
https://github.com/mushyfruit/houdini-web-rendering-interface

https://www.youtube.com/watch?v=2bLyKjdpkfg
#houdini #github #rust #rnd #utility

Несколько забавных и серьёзных проектов написанных на Rust для Houdini.

Работаете ли вы в студии с ограниченным количеством лицензий на Houdini?
Вам надоело ждать, пока кто-то закроет свою сессию Houdini, чтобы украсть его лицензию?

Больше не ждите! Обмани! Это маленькое приложение будет пинговать сервер лицензий Houdini каждые 2 секунды и запустит Houdini в тот момент, когда свободная лицензия станет доступна.

https://github.com/alexxbb/houdini-license-chaser
#houdini #github #rust #rnd #utility #cli

API и утилита командной строки для загрузки сборок Houdini из SideFX. Базируется на SideFX Web API.
Можно написать свой шел-скрипт который будет обновлять дэйли-билды каждый день в определённый час и день.

https://github.com/alexxbb/houdini-downloader
О чём доклад?

Чёт угарнул) Никакой информации: начиная от фотки заканчивая самой темой доклада. Просто человек (или Чеширский кот?) ниоткуда читает доклад на рандомную тему.

https://eue-reconnect.com/speakers2024/
😁4👍1