На 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 #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
#houdini #github #scenes #hda #otls #projects

Гитхаб по каким-то законченным пет-проект, в основном посвящённых Genshin Impact. Но тем не менее это может быть стать полезным источником информации чтобы изучить другие подходы в работе и DCC приложения. У автора весь процесс построен на TOP контексте, вплоть до того, что из TOP - Нюк перерендеривает скрипт в конце финальный композ.

https://github.com/0x384c0/HoudiniProjects
Я очень долго изучал эту картинку, смотрел на рост зарплаты, количество последних, открытых и закрытых вакансий в каждой студии, отзывам на реддите и я пришёл к поистине удивительным выводам: твоей студии тут нет🤡
😁6🥴1
#houdini #developers #forum #content #users

В преддверии H20.5 Keynote решил сделать пост о людях.

Эти люди в большинстве своём не выступают на официальных презентациях новых релизов, (не) записывают мастер-классы, некоторые ведут свои блоги, но с радостью или несчастьем постараются ответить на ваши вопросы. Наш бэкэнд в H - это разработчики.
Их часто можно встретить на официальном форуме среди других юзеров и зная это я использовал их профиля как стартовую точку для поиска ответов.
Было бы конечно классно иметь дискорд с dev team напрямую как это есть у некоторых языков программирования, но это мечты конечно.

Зачем нужны профиля когда есть уже сгруппированные темы по категориям? 😐

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

APEX/Rigging:

- Esther Trilsch впервые презентовала новый фрэймворк для оценки графов APEX в H20.0. Очень охотно помогает и идёт на контакт.
- edward девелопер с богатым опытом в очень разных аспектах H, отвечать может почти везде и на любой вопрос.

Crowd:

- Cameron White достаточно плотно работает с краудами

Technical Discussion (HDK/HEngine):

- Seelan Vamatheva часто отвечает по вопросам коннекта с Unity так и по TOP контексту
- edward алсо помогает и в вопросах HDK, Unity, Unreal
- Jeff Lait не побоюсь этого слова, "отец" микросолверов в DOP контексте, автор For Loop, Compiled Blocks, Grains, Heighfield, OpenCL в SOP и конечно Vellum🔥
- John Mather в основном отвечает на вопросы связанные с коннекторами между H и другими приложениями, но часто помогает и с HDK

LOP/Karma/Solaris/MaterialX:

- Mark Tucker
пишет очень развёрнутые и полезные ответы о том как работает USD в Solaris. Наверное один из лучших источников информации дальше хелпа, что я читал. 🔥
- rafal в основном много консультировал по вопросам интеграции и развития MaterialX в Karma.
- brians я подозреваю, что участвует в разработке самого ядра Karma, помойму он выступал с докладом как раз на прошлом ивенте
- Rob Pieké один из ведущих девелоперов Solaris, бывало незамедлительно создавал тикеты на баги прямо на форуме без формальностей в виде подробного общения с суппортом
- malexander в основном вопросы взаимодействия Vulkan, OpenGL в Solaris
- edward
- Cameron White вопросы интеграции краудов в Solaris
- Chris Rydalch переключился на Solaris. Ответы максимально подробные и полезные🔥.

Technical Discussion (VEX/OpenCL/Math):

- Jeff Lait написал довольно много интересных пояснений по поводу того как и что работает в H на самом глубоком уровне

Technical Discussion (General/OpenGL/Vulkan):

- malexander здесь на канале делал выдержки из его постов о новом вьюпорте на Vulkan появившемся в H20
- edward

Technical Discussion (General/Feather/Shading):

- Kai Stavginski достаточно известная личность. В H16 показал как создание шейдеров было перенесено в новый единый Material контекст. Сейчас активно развивает тему перьев.
- Chris Rydalch тоже своего рода "легенда" уже, помню его за серию уроков в H16: как заинстансить лайты в Mantra, как использовать IFD Workflow, как настроить HQueue под линуксом и т.д.

General:

- Robert Magee старший менеджер по маркетингу продуктов, просто приятный человек готовый помочь разобраться в "почти" любых вопросах
- Jeff Lait
- edward
- malexander

PDG/TOPs:

- Brooke Amaranth
- Seelan Vamatheva
- Taylor Petrick пишет очень ёмкие ответы решающие проблему, часто даже с кодом решения или подсказками
- Chris Grebeldinger как и предыдущий девелопер пишет ёмкие ответы с ссылками на доку

Muscle/Tissue:

- Liesbeth Levick
новый девелопер в команде по вопросам мышц, тканей, мускулов.

Надеюсь, вы найдёте их ответы полезными и для себя.
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
#houdini #python #noscripts #tools #hotkey #savetime

Переиспользуем стандартную библиотеку и пишем фокус на дисплэй ноде на изи. Это удобно бывает когда открываешь большой проект и селект ноды оказывается не на диплэй ноде, а так же если нужно часто держать фокус нетворка в этой области, это работает хорошо в связке со стандартным букмаркингом. Работает это там где это имеет смысл, а именно там где можно однозначно определить этот флаг: SOP, LOP, TOP.

import hou
import nodegraphview

def focusDispayNode():
editors = [pane for pane in hou.ui.paneTabs() \
if isinstance(pane, hou.NetworkEditor) and pane.isCurrentTab()]
if not editors:
return None
for editor in editors:
pwd = editor.pwd()
if hasattr(pwd, "displayNode"):
nodegraphview.frameItems(editor, (pwd.displayNode(),))

focusDispayNode()
#houdini #vex #learning #contents

Хей! VEX-патруль на связи. Исправляем ошибки в коде, переизобретаем существующее и учимся.

Пришёл такой вопрос: как соединить точки с рандомными номерами в пространстве по возрастанию координаты Y используя VEX? И вот такой код который делает это некорректно.

// Run Over: Detail
int roots[] = expandpointgroup(0, "roots");
int newTrunkPts[] = {};

for (int i = 0; i < len(roots); i++) {

vector vb = set(3e+38,3e+38,3e+38);
vector minV = 0;
int minID = 0;

for (int j = 0; j < len(roots); j++) {
vector va = point(0,"P", roots[j]);
if (va.y < vb.y) {
minID = roots[i];
}
vb = va;
}
append(newTrunkPts, minID);
removevalue(roots, minID);
}
addprim(geoself(),"polyline", newTrunkPts);

printf("roots: %d\n",newTrunkPts);
#houdini #vex #learning #contents

Наивное решение в 4 ноды: AttribWrangle: id = ptnum, Sort by Y, нодой Add by Group соединяем точки, и другой нодой восстанавливаем нумерацию по id: Sort by Id. Но нам это не интересно, мы хотим одним вранглом. 😢

Очевидно нужна какая-то сортировка. Но какая? В коде выше есть попытка написать что-то очень похожее на Bubble Sort она же пузырьковая сортировка в простонародье, но мы её писать не будем с нуля, хотя можете попробовать она самая простая, а возьмём просто стандартную VEX-функцию sort которая как то это эффективно делает за нас.

function int[] c_argsort(float arr[]){
if(len(arr) < 1) return {};

int ordering[];
int size = len(arr);
resize(ordering, size);
float coords[] = sort(arr);

for(int i = 0; i < size; ++i){
int f = find(arr, coords[i]);
if(f) ordering[i] = f;
}
return ordering;
}

int roots[] = expandpointgroup(0, "roots");
float y_coords[];
int size = len(roots);
resize(y_coords, size);

for(int i = 0; i < size; ++i){
y_coords[i] = vector(point(0, "P", i)).y;
}

int ordering[] = c_argsort(y_coords);
addprim(geoself(),"polyline", ordering);


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

Итак,
До:
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]

После:
[ 0, 1, 3, 2, 6, 8, 7, 5, 4, 10, 9 ]

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

int roots[] = expandpointgroup(0, "roots");
float y_coords[];
int size = len(roots);
resize(y_coords, size);

for(int i = 0; i < size; ++i){
y_coords[i] = vector(point(0, "P", i)).y;
}
int ordering[] = argsort(y_coords);
addprim(geoself(),"polyline", ordering);


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

Всем шашлыков!
🔥4
#houdini #release #mpm #contents

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

"MPM - это своего рода гибридный солвер. Он был создан как расширение FLIP solver'а. В то время как FLIP очень хорошо справляется с поведением жидкостей, не допуская divergence free. MPM - это скорее универсальное решение, которое намного лучше справляется с растяжением, деформацией и гранулированными моделями, однако оно также может работать с жидкостями.
Теперь с помощью MPM вы можете эффективно взаимодействовать с различными материалами, чего раньше не было, например, с тканью и жидкостью, зерном и текучей средой и т.д.
Кроме того, в некоторых случаях, таких как накопление снега и т.д., MPM может дать гораздо лучшие результаты, чем решения на основе PBD, такие как vellum. Однако одним из недостатков является то, что с MPM вам придется создавать ограничивающие баунды, такие как FLIP или Pyro solver, которые не всегда могут быть очень эффективными с точки зрения памяти."

Короче говоря, он сможет сочетать в себе решения основанные на Лагранжевых и Эйлеровых солверах.

https://www.reddit.com/r/Houdini/comments/1dqfcbk/houdini_205_mpm_what_is_that/
🔥1