На CBB – Telegram
На CBB
109 subscribers
98 photos
70 videos
5 files
181 links
Блог о развитии компьютерной графики.
Субъективные заметки, наблюдения, исследования.
Download Telegram
#history #render #drawings

Задолго до Мантры.

Так 500 лет назад выглядели одни их первых "рендеров" без пассов (потому что сразу работали на финал) с использованием технологии которую в современном мире называют трассировкой луча.

На одной из иллюстраций 1525 года трактата (Underweysung der Messung) художник рисует портрет джентльмена, рисуя на листе стекла в рамке. Художник смотрит одним глазом, а положение его глаз фиксируется с помощью глазка в маске на регулируемой подставке. Расстояние между картинной плоскостью и художником строго ограничено расстоянием вытянутой руки: оно не может превышать 40 сантиметров.

Причина, по которой художник должен смотреть одним глазом, заключается в том, что перспективы, получаемые двумя глазами, немного различаются. Рисунок на стекле, выполненный левым глазом, будет слегка смещен относительно рисунка, выполненного правым глазом. Художник должен держать голову неподвижно, чтобы его открытый глаз оставался на месте, художник видит предмет и на котором он рисует.
6
#houdini #meme

Houdini moment.
😁14
This media is not supported in your browser
VIEW IN TELEGRAM
Когда долго спал, а потом случайно услышал старый трэк Fatboy Slim 2001 года..
😁16
#houdini #merch

SideFX снова взялся за продажу мерча. Может кому-нибудь нужны зимние подштаники с лого Houdini? Или майка с головой свиньи? Это абилка +20% к работе в SOP контексте. Я бы купил майку с вьюпортом на VK, но главное, что SideFX соблюдает все повестки и модели у них интернациональные.

http://sidefxhoudini.myshopify.com/
😁5
#siggraph #microsoft #render #neural #pipeline

Microsoft на Siggraph2025 презентовала новый конвейер нейро-рендеринга RenderFormer который напрямую рендерит изображение из триангулируемого представления сцены с полными эффектами глобального освещения и это не требует предварительной тренировки и тонкой настройки каждой сцены.

Традиционный графический конвейер рендера виртуальной сцены имитирует физические процессы "передачи света" (light transport) через всю сцену. Вместо этого рендер основаный на нейро-движках пропускает эти этапы и вместо этого учится предсказывать поведение передачи света. Однако большинство нейронных методов рендеринга часто достигают этой цели путем чрезмерной подгонки модели к фиксированной сцене.

В связи с этим возникает интригующий вопрос, можно ли обучить не модель рендеринга, а конвейер рендеринга?

RenderFormer работает в два этапа: независимый от вида этап моделирует передачу света от треугольника к треугольнику, а зависимый от вида этап преобразует маркер, представляющий пучок лучей, в соответствующие значения пикселей, руководствуясь последовательностью треугольников, полученной на независимом от вида этапе. Оба этапа основаны на архитектуре трансформатора и обучаются с минимальными предварительными ограничениями.
Никакой растеризации, никакой трассировки лучей.

И пока RenderFormer имеет органичение на количество источников света, положение камеры, поликаунт модели, его подход обобщается лучше чем предыдущие методы нейро-рендеринга.

Карма ВСЁ? Не сегодня.

https://microsoft.github.io/renderformer/
🔥42
#houdini #snippet #code #vex

Любите вексить как Йода?
if (5 == x){...}

Или любите взаимоисключающие, трудноуловимые баги?
if (x > 5 && 5 > x){...}

Будем c этим бороться, используя ментальные и эмперические способы создания программ.

Это небольшой перевод статьи про "Сравнительный анализ" операторов сравнения. Этим способом можно немного улучшить читаемоесть и упростить отладку даже там где написано всего 2 строчки кода.

Большинстов языков программирования предоставляют 6 операторов сравнения: <, <=, >, >=, =, !=

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

Основная идея канонизировать вещи. И x < y и y > x означает тоже самое, и если вы используете их примерно с одинаковой частотой, то вам нужно тратить дополнительные силы чтобы сложить эти две версии в единую концепцию.

Числовая линия это отличный, интуитивный способ визуализировать сравнения, если вы упорядочеваете их от меньшего к большему: A B C D, вы получите интуитивное представление об упорядочивании без использования операторов сравнения. Вы также подключаете свою существующую интуицию как функция sort упорядочивает массивы в порядке возрастания.

Итак, в качестве правила первого порядка:
Отдавайте предпочтение < и <=, а не > и >=, а при использовании сравнений используйте интуицию числовой линии.

Некоторые примеры:

Проверяет, находится ли точка внутри интервала
lo <= x and x <= hi

Проверяет, находится ли точки за пределами интервала
x < lo or hi < x

Сегмент a находится внутри сегмента b:
b.start <= a.start и a.end <= b.end

Сегменты a и b непересекающиеся (либо a находится слева от b, либо a находится справа от b):
a.end < b.start or b.end < a.start

Особым случаем упорядоченных сравнений является проверка того, что индекс находится в границах массива. Здесь правило о числовой линии работает вместе с другим важным правилом:
Инварианты состояния положительны

Инвариант индексирования записывается следующим образом index < xs.len(), и вы должны предпочесть такую запись.

Конкретно,
if (index >= xs.len){...}
трудно сперва понять это правильно, потому что он пишет обратное инварианту и включает в себя дополнительное мысленное отрицание (это тонко - хотя и нет буквального оператора отрицания, вы абсолютно точно думаете об этом как об отрицании инварианта).

Если возможно, код следует переделать так:
if (index < xs.len){
} else {
}


Источник:
https://matklad.github.io/2023/09/13/comparative-analysis.html
3
#houdini #meme

Свежие туторы.

Я понимаю конечно, что в Гудини всё ещё существует высокий порог входа, но не настолько же..
😁10
This media is not supported in your browser
VIEW IN TELEGRAM
#houdini #features #trackpad

В Houdini будет добавлена поддержка Trackpad'a. Vim-like controls are inactive.

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

И да, "если у тебя нет Notion-странички с гайдом "Как ты настраиваешь своё рабочее окружение", ты вообще гудиньщик?"

А так же ждём плэйбэк мод Forever который не останавливается и не повторяется на $RFEND, а продолжает проигрывание.
😁5
#news #png #formats #render

Шутки в сторону, это захватывающие новости для всех любителей рендерить на финал без пассов😏, а так же использовать HDR-карты и текстуры в PNG с левого сайта с малварями и майнерами вместо родного, нативного оптимизирующего формата.

После 20 лет застоя, PNG вернулся с новой силой!

Что нового в спецификации?

- Планируется надлежащая поддержка HDR (coming soon!)
Эта новая поддержка HDR использует только 4 байта (плюс обычный перенос фрагментов PNG).

- Наконец распознает APNGs (анимации!)
Animated PNG были предложены Mozilla довольно давно. Поддержка была добавлена к Firefox, но другие программы колебались, чтобы принять их. Сегодня анимационные PNG широко поддерживаются.

- Официально поддерживает данные Exif
Exif хранит дополнительную информацию, такую как информация об авторском праве и даже объектив камеры и местоположение GPS фотографии

А так же для тех кто никогда не дочитывает посты, но любит про Гудини: в H будет Unsubdivide SOP, OpenPBR (XPU), Apprentice to full HD.

https://www.programmax.net/articles/png-is-back/
🔥9🤔1
#houdini #meme

Coming soon.
😁4🤔2🤣1
#meme #rust #zig #cpp #python #vex

How programming language "hairstyles" have changed over time.
😁2🤔1🤣1
#houdini #openvdb #hdk

VQVDB, свободный и открытый плагин для Houdini, который использует нейросеть VQ-VAE для сжатия OpenVDB.
VQVDB предназначен для ускоренного декодирования с помощью GPU через CUDA, но также поддерживает кодирование/декодирование CPU, позволяющее декомпрессию больших объемов в режиме реального времени.

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

Автор использут данные vdb извлеченные из .npy файлов так как не мог скомпилировать pyopenvdb.

Это ранний релиз с некоторыми ограничениями:
- ОС: Только Windows (на данный момент).
- Hardware: NVIDIA GPU с поддержкой CUDA настоятельно рекомендуется, CPU не протестирована.
- GridType: в настоящее время поддерживает только работу с FloatGrid.

Тем не менеe постетировать и изучить его уже можно.

https://github.com/ZephirFXEC/VQVDB
🤔3🎉1
This media is not supported in your browser
VIEW IN TELEGRAM
#houdini #tips #tricks

Как сделать навигационные ссылки на "неактивные" элементы в Houdini документации?

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

Документация Houdini сверстана так, что HTML атрибут href имеют только в основном заголовки, а иногда все таки хочется пруфануть иметь "якорь" на какой-то кусок текста в доке.

В обычной практике тег <a> с атрибутом href применяется для создания навигационных ссылок на веб-страницах. Если значение href равно "#", то при нажатии на ссылку браузер переместится в начало текущей страницы.
Вот эту особенность я активно эксплуатирую на видео, мы будем дописывать в конце адреса страницы #sometext с названием элемента которое будем получать из того, что может отдавать Inspect Menu в вашем браузере. Только название правильно нужно написать.

Это будет работать для очень многих вещей будь то атрибут в названии ноды, переменные окружения, аргументы утилит, методы классов и т.д.
🤔31
#houdini #usd #pixar #github

В ветке dev_houdini21.0_USD25.05 репозитория PixarUSD заметил несколько исправлений старых проблем:

UsdSkelImaging Hydra 2.0: block normals to match Hydra 1.0.
Забавный фикс на 5 строчек который рекомпьютит нормали UsdSkel после скиннинга, и теперь в H21 это должно будет работать правильно и соответствовать поведению Hydra 1.0

Preserve primType for materials under instancers
Решена проблема сохранения material primType на примах под инстансами когда они являются: а) прототипами нативного экземпляра или б) потомком поинт инстансера. Это позволяет примам продолжать функционировать как материалы.

Implement a specialization of UsdImagingDataSourceAttribute<SdfAssetPath> that properly resolves UDIM relative paths.
Резолв юдимов в относительных путях

Ну и поскольку H21 свичнулся на MaterialX 1.39 станет возможно использовать этот PR:
Adds uniform string/filename signatures to UsdPrimvarReader
🤔42🎉1
#houdini #opencl #vex #github #vellum

Это ранний WIP плагина для моделирования soft body - Vertex Block Descent на OpenCL для Houdini. Автор пишет, что этот солвер можно называть в некотором роде - Vellum 2.0.

VBD - это метод моделирования soft body похожий на тот который используется в Vellum (XPBD), но предположительно быстрее и лучше в различных отношениях.
Автор хотел протестировать это, сделав свою реализацию для сравнения с оригинальным Vellum. Более подробное описание есть в README странички на гите. OpenCL код переделана на современный манер и использует новый синтакис @KERNEL{}

В настоящее время он поддерживает только mass-spring constraint с основными идеями взятыми из другого проекта TinyVBD, с neo-hookean (tetrahedral) в процессе и пока не поддерживает коллижены.

Работа была спроектирована так же, как Vellum'е. Вы можете использовать констрейны Vellum, но они будут переименованы в констрейны mass-spring.

Версия OpenCL для экспериментов и VEX для отладки. Обе версии включены в файлы HIP. Компилировать ничего не надо, просто установить HDA и попробовать его в деле и можно поизучать исходники.

https://github.com/MysteryPancake/Houdini-VBD?tab=readme-ov-file
🤔9👏2👍1
#nvidia #github #render #pbr

"Зеленые" выкатили бетy для значительной компрессии PBR текстур на основе нейронок.

Neural Texture Compression (NTC) - это алгоритм, предназначенный для сжатия всех текстур PBR, используемых для одного материала. Это работает лучше всего, когда каналы текстуры коррелируют друг с другом, например, детали в альбедо мапе соответствуют деталям в нормал мапе. До 16 каналов текстуры могут быть сжатыми в один набор текстур NTC. Типичные материалы PBR имеют 9-10 каналов: 3x альбедо, 3x нормали, металличность, шероховатость, амбиент оклюжен, опасити.

Во время сжатия исходные данные текстуры преобразуются в комбинацию весов для небольшой нейронной сети (декодер) и тензора латентных элементов или признаков, которые отбираются и проходят через декодер для реконструкции цветов текстуры. Процессы выборки и декодирования достаточно быстрые, чтобы использовать их непосредственно в шейдерах, которые обычно отбирают текстуры материала, таких как базовые pixel shader или ray tracing hit shaders.

Если мы представим вариант компрессии для разрешение текстуры 2K (и проигнорируем цепочки MIP), мы можем вычислить отпечаток текстуры бандла в различных точках потока данных:

Bundle Compression Disk Size PCI-E Traffic VRAM Size
Raw Image 32.00 MB 32.00 MB 32.00 MB
BCn Compressed 10.00 MB 10.00 MB 10.00 MB
NTC-on-Load* 1.52 MB 1.52 MB 10.00 MB
NTC-on-Sample 1.52 MB 1.52 MB 1.52 MB


Это выглядит как подходящий кандидат на роль CLI инструмента для TOP контекста или разработки подходящей библиотеки Houdini которую будет использовать рендер.
Из простых способов применения сейчас это возможно архивация проектов.

https://github.com/NVIDIA-RTX/RTXNTC/blob/main/docs/CommandLineTool.md
ntc-cli --loadImages <input-dir> \
--generateMips \
--compress \
--bitsPerPixel <value> \ # can be between 0.5 and 20
--decompress
--saveCompressed <file.ntc>

# Short version
ntc-cli <input-dir> -g -c -b <value> -D -o <file.ntc>


https://github.com/NVIDIA-RTX/RTXNTC
👍5🔥1👏1🤔1
#3dsmax #whatsnew

Шел 2025...время когда AI вовсю на пятки наступает по всем фронтам, все думают только о том как быть первыми в этом направлении или занять прочную нишу в будущем. В Автостоле тоже не сидят сложа руки, и поэтому завезли AttribTransfer, спустя 20 лет!
😁6
#usd #github #proposals

Докатились до USD неплохие пропозалы, но пока в драфте. И хотя PR это зачастую предложение, однако некоторые из них вполне доходят до реализованных идей, а так же это простой способ посмотреть, а куда движется комньюнити и чего оно хочет.

Вот несколько интересных из них:

[Add Gaussian Splats API schema]
PR который добавляет поддержку Gaussians (Splats) к UsdGeompoints.

[Physical Lightning]
Предложение добавляет схему, позволяющую использовать и заменять абсолютные, физические единицы в освещении.
PR в значительной степени вдохновлен Physlight работы Weta которую они демонстрировали на "Планета Обезьян", но также добавляет поддержку для указания освещения в радиометрических единицах.

Предложение содержит больше деталей, но суть в том, что он может предложить интерфейс для пользователей, чтобы работать в фото/радиометрических единицах в любом приложении, поддерживающем OpenUSD, и сделать необходимую математику в USD. Еще один шаг навстречу реализму.
Есть видео сцены сделанная в среде Omniverse демонстрирующая эту идею.

[Initial LOD proposal]
PR определяет схему API для управления уровнем детализации (LOD) на этапах USD. API LOD позволяет рендерерам эффективно переключаться между различными уровнями детализации активов на основе настраиваемых критериев, таких как расстояние, размер экрана или явный выбор.

Этот подход позволяет оптимизировать производительность рендеринга при сохранении визуального качества там, где это необходимо. Предложение является модернизацией первоначального предложения Ubisoft по LOD, которое включено в качестве вспомогательной документации.

[Multiple Animation Support for USD]
PR предполагает добавление к USDSkel, которое позволит привязывать несколько анимаций к скелету.

Статусы PR удобно отслеживать в виде Kanban доски:
https://github.com/orgs/PixarAnimationStudios/projects/1/views/2

Пожалуй интереснее самих предложений это их обсуждение, когда даже сама формулировка некоторых терминов вызывает много вопросов, а за ним и горение задниц.
🤔1
🤣8💯1