#gaffer #render #lightning #opensource
Shading & Lighting with Gaffer and Arnold | Level Up Your VFX Game
Introduction to Gaffer and Arnold | Open Source VFX / CGI Basics
Удивлён в хорошем смысле, что
Shading & Lighting with Gaffer and Arnold | Level Up Your VFX Game
Introduction to Gaffer and Arnold | Open Source VFX / CGI Basics
Удивлён в хорошем смысле, что
Gaffer начали пушить среди CG-блогеров хотя стабильный, последний релиз 1.5.0.1 и не был ознаменован как финал финалов тем не менее люди всё равно начали к нему присматриваться. Arvid записал уже пару уроков с рендером Arnold о том как начать с ним работать в сцене и разобрать его на паре примеров сам процесс лукдева.YouTube
Shading & Lighting with Gaffer and Arnold | Level Up Your VFX Game
Dive into vfx shading and lighting with this comprehensive introduction to Gaffer and Arnold! Learn essential shading and lighting techniques used by industry pros, all with free, open-source software. Perfect for beginners and intermediate users looking…
🔥3
#cgnews #modo #foundry
Компания
https://www.foundry.com/news-and-awards/foundry-winds-down-modo-development
Кто ещё помнит о
https://www.cgchannel.com/2019/11/foundry-closes-athera/
Modo, всё. Компания
Foundry объявила о своем решении прекратить разработку инструмента для 3D-моделирования Modo после выхода версии Modo 17.1 в конце этого года. Это стратегическое решение позволит Foundry сосредоточиться на своих основных предложениях и инвестировать в новые решения, отвечающие развивающимся потребностям медиа и развлекательного сообщества.https://www.foundry.com/news-and-awards/foundry-winds-down-modo-development
Кто ещё помнит о
Athera от Foundry? Платформа, ранее известная как Elara, предоставляла облачный производственный сервис "все в одном", включая виртуальные рабочие места, аренду программного обеспечения, рендеринг, инструменты для совместной работы и аналитику, но в итоге массово так и не пошло. Проект свернули через 18 месяцев после открытия и полностью закрыли к 2020 году.https://www.cgchannel.com/2019/11/foundry-closes-athera/
👌3
#learning #python #cg #exercism
Чёт умильнулся с того как некоторые CG-блогеры изучают
Никогда конспекты по языкам программирования не вёл, даже по системным ЯП, у меня не прижился такой подход, тем более по синтаксису и всегда это были лишь какие-то короткие заметки..
Но может зря?? И рисование котиков на свободных местах реально бустит и помогает в изучении языков? А может это способ чтобы построить ассоциативный ряд в памяти?
Вспоминаю про грустного кота и сразу помню как применять бранч 😅
Каким бы чудесным и весёлым стало изучение ассемблера с таким оформлением, я бы честно говоря посмотрел на арт-бук от этого автора.
Отступы - часть кода!Чёт умильнулся с того как некоторые CG-блогеры изучают
Python. Я конечно слышал, что конспектирование материала который читаешь помогает лучше запоминать информацию, однако в программировании крайне важна практика и хорошая IDE, 140 упражнений на ветвление и всё подряд и синтаксис станет вашим вторым языком, что и забыть захочется.Никогда конспекты по языкам программирования не вёл, даже по системным ЯП, у меня не прижился такой подход, тем более по синтаксису и всегда это были лишь какие-то короткие заметки..
Но может зря?? И рисование котиков на свободных местах реально бустит и помогает в изучении языков? А может это способ чтобы построить ассоциативный ряд в памяти?
Вспоминаю про грустного кота и сразу помню как применять бранч 😅
Каким бы чудесным и весёлым стало изучение ассемблера с таким оформлением, я бы честно говоря посмотрел на арт-бук от этого автора.
💯4😁1🎉1🤡1
#houdini #hdk #github #opensource #fluid #ml
* компилировать надо из исходников под свою платформу и для своей версии
Ключевые особенности:
- При работе в чистом
- При работе в контексте
Оба контекста полностью совместимы друг с другом. Вы можете переключаться между ними в любое время.
Например, вы можете легко создать дифференцируемый солвер жидкости, используя
В
https://github.com/HinaPE/HinaFlow
HinaFlow - это дифференцируемый солвер жидкостей и солвер жидкостей на основе глубокого машинного обучения с открытым исходным кодом на Houdini HDK*. * компилировать надо из исходников под свою платформу и для своей версии
Houdini, но это и не сложно. HinaFlow - это рекурсивный акроним, означающий "HinaFlow is not a Fluid Learning Optimization Workflow".Ключевые особенности:
HinaFlow работает в двух контекстах: Houdini и Python. В обоих контекстах используются ноды Houdini HDK. (Ноды Python в Houdini отсутствуют).- При работе в чистом
Houdini вы можете использовать HDK HinaFlow в чистом виде как расширенный ассет Houdini. Это ничем не отличается от стандартного рабочего процесса в Houdini.- При работе в контексте
Python вы можете использовать все преимущества всей экосистемы Python, включая PyTorch, TensorFlow, NumPy и т. д., чтобы создать свой собственный конвейер для солвинга.Оба контекста полностью совместимы друг с другом. Вы можете переключаться между ними в любое время.
Например, вы можете легко создать дифференцируемый солвер жидкости, используя
PyTorch или даже создать FluidGAN используя PyTorch.В
Hinaflow в основном используется phiflow в качестве бэкенда для солвинга жидкостей который является полностью дифференцируемым фреймворком с поддержкой PyTorch, JAX и TensorFlow.https://github.com/HinaPE/HinaFlow
GitHub
GitHub - HinaPE/HinaFlow: HinaFlow is a Houdini HDK based, open-source framework targeted at fluid simulation research in Computer…
HinaFlow is a Houdini HDK based, open-source framework targeted at fluid simulation research in Computer Graphics and Machine Learning. - HinaPE/HinaFlow
🔥6👍1😍1
#vex #python #programming
Пост вдохновлённый небольшой статьёй A list of ternary operators о разнообразии тернарных операторов.
В
Посмотрим на простую запись ветвления с помощью
Ассемблер (LLVM IR ) у этого куска кода такой:
Глазам с непривычки может быть тяжело здесь увидеть осмысленный код, но он не сложный.
Здесь мы видим в основном метки, базовые инструкции и вызов
Но есть ли разница в том, что делает тернарный оператор или это будет тот же самый код? Оказывается, что нет.
Быстрее ли этот работает? Возможно, но как обычно всегда нужно делать тесты профилирования на производительность. Удобнее ли это? Однозначно да, особенно когда нужно результат присвоить тут же переменной.
Однако, если покопаться в документации по функциям
Которая будет генерить точно такой же код как и выше при использовании тернарника.
Разница между
Мне кажется подход с
Пост вдохновлённый небольшой статьёй A list of ternary operators о разнообразии тернарных операторов.
В
VEX или Python наш тернарный оператор ? : называется тернарным потому что принимает 3 аргумента и право называться так стало монопольным поскольку других операторов такого плана не было, но VEX так же имеет ещё один непопулярный способ записать тернарное выражение и мне кажется он проще. Посмотрим на простую запись ветвления с помощью
if:int res;
if(10 > 5){
res = 42;
}else{
res = 123;
}
Ассемблер (LLVM IR ) у этого куска кода такой:
; Function Attrs: alwaysinline nounwind
define private void @__vex_snippet() #0 {
__llvm_entry:
%return = call i64 @"gt@III"(i64 10, i64 5)
%0 = icmp ne i64 %return, 0
br i1 %0, label %true, label %false
true:
store i64 42, i64* %_bound_res
br label %end
false:
store i64 123, i64* %_bound_res
br label %end
end:
ret void
}
Глазам с непривычки может быть тяжело здесь увидеть осмысленный код, но он не сложный.
Здесь мы видим в основном метки, базовые инструкции и вызов
call, функция сравнения чисел на больше call i64 @"gt@III"(i64 10, i64 5), а ниже идёт просто выбор бранча в зависимости от результата.Но есть ли разница в том, что делает тернарный оператор или это будет тот же самый код? Оказывается, что нет.
int res = 10 > 5 ? 42 : 123;
; Function Attrs: alwaysinline nounwindЗдесь мы уже не прыгаем по бранчам, а используем инструкцию
define private void @__vex_snippet() #0 {
__llvm_entry:
%return = call i64 @"gt@III"(i64 10, i64 5)
%0 = icmp ne i64 %return, 0
%. = select i1 %0, i64 42, i64 123
store i64 %., i64* %_bound_res
ret void
}
select, она используется для выбора одного значения на основе условия, без ветвления на уровне IR.Быстрее ли этот работает? Возможно, но как обычно всегда нужно делать тесты профилирования на производительность. Удобнее ли это? Однозначно да, особенно когда нужно результат присвоить тут же переменной.
Однако, если покопаться в документации по функциям
VEX, а так же коде стандартной библиотеки окажется, что мы так же можем вызывать эту функцию select прямо из сниппета самого Wrangle:int res = select(10 > 5, 42, 123);
Которая будет генерить точно такой же код как и выше при использовании тернарника.
Разница между
select и утвержением if заключается в том, что select оценивает свои аргументы независимо от значения условия. Разумное использование select позволяет избежать сравнений, что позволяет преобразовывать большие участки кода в нативный код.Мне кажется подход с
select может быть легче для восприятия и допускает меньше ошибок при написании кода поскольку это выглядит как ещё одна функция, а не какой-то особый синтаксический сахар который нужно запоминать, ну а выбор всегда остаётся за пользователем.Buttondown
A list of ternary operators
Why let conditionals keep hogging the spotlight?
🔥4👍2
Forwarded from Nord3DНИОКР
boosty.to
НЕ МАТЕМАТИКА от НЕ МАТЕМАТИКА для НЕ МАТЕМАТИКОВ - Alexey Gorelov
Приветствую, дорогие потенциальные слушатели!
Небольшой анонс учебного курса по основам математики и программирования в контексте компьютерной графики.
Моя дикция, увы, неидеальна, как и условия аудиозаписи. В дальнейшем, видео-лекции будут снабжены…
Небольшой анонс учебного курса по основам математики и программирования в контексте компьютерной графики.
Моя дикция, увы, неидеальна, как и условия аудиозаписи. В дальнейшем, видео-лекции будут снабжены…
🔥11
#gameengine #opensource #github
Кто хотел потестить какой-то другой движок кроме
Теперь
https://habr.com/en/companies/nau_engine/news/861316/
Кто хотел потестить какой-то другой движок кроме
Unity или UE с плотной поддержкой USD в том числе? Теперь
Nau Engine вышел в бету с открытыми исходниками. И это отличный повод покопаться в структуре кода.https://habr.com/en/companies/nau_engine/news/861316/
Habr
Nau Engine Beta
Друзья, свершилось! Мы рады объявить о том, что beta-версия Nau Engine доступна для всех разработчиков без исключения. Nau Engine — open source-проект под лицензией 3-clause BSD, что значит, что без...
🔥2
#houdini #apex #rigging
Ресурс пока конечно суховат, но можно прочитать про общие концепции, идеи, более простыми словами для артиста чем документация и не сильно углубляясь в детали чтобы сложилось представление об этом контексте.
https://tokeru.com/cgwiki/HoudiniApex.html
( )
( )\ ) ( /(
)\ (()/(( )\())
((((_)( /(_))\ ((_)\
)\ _ )\(_))((_)__((_)
(_)_\(_) _ \ __\ \/ /
/ _ \ | _/ _| > <
/_/ \_\|_| |___/_/\_\Matt Estela выложил WIP по APEX на своём ресурсе это взгляд дженералиста на APEX, а не как профессионального сетапщика, но и тем более интересно прочитать про этот взгляд со стороны. Ресурс пока конечно суховат, но можно прочитать про общие концепции, идеи, более простыми словами для артиста чем документация и не сильно углубляясь в детали чтобы сложилось представление об этом контексте.
https://tokeru.com/cgwiki/HoudiniApex.html
Tokeru
Apex - Houdini and CG tips
Houdini and CG tips and stuff by Matt Estela
👍3
#pipeline #ffmpeg #opensource
Иногда из какого-то шота или видео требуется сделать нарезку для превью через определённое количество кадров чтобы по нему можно было понять всё содержимое от начала до конца.
В очень короткой и наглядной статье показано как это сделать без шума и пыли всего лишь с помощью
https://steelcm.com/blog/generating-video-sprites-using-ffmpeg/
Иногда из какого-то шота или видео требуется сделать нарезку для превью через определённое количество кадров чтобы по нему можно было понять всё содержимое от начала до конца.
В очень короткой и наглядной статье показано как это сделать без шума и пыли всего лишь с помощью
ffmpeg и кстати это хороший кандидат на то чтобы этот скрипт можно было обернуть в TOP ассет, например с помощью Generic Generator или украсть параметры и вставить в аналогичную ноду ffmpeg и пользоваться прямо из Houdini.https://steelcm.com/blog/generating-video-sprites-using-ffmpeg/
👍2
#openusd #maya #animation
Мм, что-то вкусное и альтернативное наконец-то для майки выкатили.
Разработанный на базе нашей новой платформы приложений
Мы полностью привержены поддержке индустрии визуальных эффектов и анимации с помощью
https://shapefx.app/
Мм, что-то вкусное и альтернативное наконец-то для майки выкатили.
ShapeFX Loki - это наше приложение для создания контента нового поколения DCC, созданное специально для OpenUSD. Думайте об этом как о USDView на стероидах - расширенном наборе инструментов, разработанном для того, чтобы выходить за рамки простого просмотра и предлагать мощные функции для оптимизации рабочих процессов с OpenUSD.Разработанный на базе нашей новой платформы приложений
OpenDCC (более подробная информация будет представлена в ближайшее время), ShapeFX Loki обладает функциями и адаптивностью необходимыми для решения сложных задач современных производственных конвейеров.ShapeFX Loki доступен для публичного скачивания с сегодняшнего дня! Запуск с поддержкой Windows, скоро появятся версии для macOS и Linux!Мы полностью привержены поддержке индустрии визуальных эффектов и анимации с помощью
ShapeFX Loki. https://shapefx.app/
🔥1💩1
#aoc #day01 #challenge #contest #vex
Декабрь начался, а значит время попрактиковаться в решении паззлов на AoC ⚡️. Никогда не участвовал в них на
Первый день довольно простой должен быть и не сложный на самом деле, но на всякий решение кинул на гист если будет кому интересно и захочет сравнить со своим.
GitHub Gist:
https://gist.github.com/alexwheezy/690f31912e752ca1da89f38b7d8bb861
▄▄▄ ▒█████ ▄████▄
▒████▄ ▒██▒ ██▒▒██▀ ▀█
▒██ ▀█▄ ▒██░ ██▒▒▓█ ▄
░██▄▄▄▄██ ▒██ ██░▒▓▓▄ ▄██▒
▓█ ▓██▒░ ████▓▒░▒ ▓███▀ ░
▒▒ ▓▒█░░ ▒░▒░▒░ ░ ░▒ ▒ ░
▒ ▒▒ ░ ░ ▒ ▒░ ░ ▒
░ ▒ ░ ░ ░ ▒ ░
░ ░ ░ ░ ░ ░
░ Декабрь начался, а значит время попрактиковаться в решении паззлов на AoC ⚡️. Никогда не участвовал в них на
VEX, но это может быть довольно забавный и интересный опыт учитывая, что в VEX у нас ограниченный набор структур данных и готовых алгоритмов. Первый день довольно простой должен быть и не сложный на самом деле, но на всякий решение кинул на гист если будет кому интересно и захочет сравнить со своим.
GitHub Gist:
https://gist.github.com/alexwheezy/690f31912e752ca1da89f38b7d8bb861
👍1😁1
#aoc #day02 #challenge #contest #vex
Второй день зашёл уже с говнолина 🙂 Однако самая полезная часть этого дня в этом контесте функция, итератор
GitHub Gist:
https://gist.github.com/alexwheezy/c8cd4af3bbd86fcd20a5fa520739d770
▄▄▄ ▒█████ ▄████▄
▒████▄ ▒██▒ ██▒▒██▀ ▀█
▒██ ▀█▄ ▒██░ ██▒▒▓█ ▄
░██▄▄▄▄██ ▒██ ██░▒▓▓▄ ▄██▒
▓█ ▓██▒░ ████▓▒░▒ ▓███▀ ░
▒▒ ▓▒█░░ ▒░▒░▒░ ░ ░▒ ▒ ░
▒ ▒▒ ░ ░ ▒ ▒░ ░ ▒
░ ▒ ░ ░ ░ ▒ ░
░ ░ ░ ░ ░ ░
░ Второй день зашёл уже с говнолина 🙂 Однако самая полезная часть этого дня в этом контесте функция, итератор
window которая пишется легко и бывает частенько нужна когда требует плотно поработать с парами соседних элементов в буфере. Она возвращает слайс со "скользящим окном" из буфера. "Скользящее окно" имеет длину size и на каждой итерации перемещается вперед на величину advance. Возможно будет кому-то она будет полезна, адаптировать её не только под строки не сложно, перегрузить по параметру функции можно на int[].void window(string input; int size, advance){
if(size < 1 || advance < 1){
error("Assert, size or advance must be greater zero");
return;
}
if(len(input) < size){
// Maybe return the whole string?
// Or something else
return;
}
int l = 0;
int r = len(input);
while(l < r){
string slice = slice(input, l, l + size);
// something code
if(r - l <= size) break;
l += advance;
}
}
// Tests
// Size
// window("abcdefg", 1, 1); // a, b, c, d, e, f, g
// window("abcdefg", 2, 1); // ab, bc, cd, de, ef, fg
// window("abcdefg", 3, 1); // abc, bcd, cde, def, efg
// window("abcdefg", 4, 1); // abcd bcde cdef defg
// window("abcdefg", 5, 1); // abcde bcdef cdefg
// window("abcdefg", 6, 1); // abcdef bcdefg
// Advance
// window("abcdefg", 2, 3); // ab de g
// window("abcdefg", 3, 3); // abc, def, g
// window("abcdefg", 1, 2); // a, c, e, g
// window("abcdefg", 1, 3); // a, d, gGitHub Gist:
https://gist.github.com/alexwheezy/c8cd4af3bbd86fcd20a5fa520739d770
Gist
AoC 2024 VEX Language
AoC 2024 VEX Language . GitHub Gist: instantly share code, notes, and snippets.
#3december #meme #houdini
С праздником!
Да, в
Вот и думайте! 🙂
С праздником!
Да, в
Houdini на данный момент 10 отдельных маленьких и не очень ЯП на которых можно что-то программировать, некоторые мёртвые или почти мёртвые, Hnoscript Lang и Hnoscript Expression имеют разный синтаксис, многие не считают Hnoscript Expression как таковым языком, а больше языком выражений в духе $FF > 10, однако у него тоже есть control flow: {float out = 0; for (i = 0; i < 10; i++) {out += i;} return out;}, место есть и для джаваскрипта, APEX Script похож на Python, но со статической, строгой типизацией, но вообще учитывая любовь сайдам к С-подобным языкам он не последний..или последний(?)Вот и думайте! 🙂
🎉3❤2
#houdini #python #qt #beta
Да, так получилось, что
Поэтому в
Одна из проблем решалась с помощью отключения песочницы
Однако, я всё равно не понял почему они решили всех предупредить об этом вместо того чтобы тихо допилить всё к
Тестирование продукта становится всё более открытым 🙂
Да, так получилось, что
SideFX из-за более короткого цикла разработки в 20.5 (в чём они сами признались, а иначе бы 20.5 пришлось бы двигать намного дальше от релиза) не успели перейти на следующей стандарт библиотеки PyQt6 вместе с VFX Reference Platform. Поэтому в
Houdini 20.5 мы видим достаточно много ошибок в Python Panels и других инструментах. Одна из проблем решалась с помощью отключения песочницы
QTWEBENGINE_CHROMIUM_FLAGS='--no-sandbox' для хрома, но на свой страх и риск и вот теперь они анонсировали новую бету с PyQt6 в которой будут решать все потенциальные проблемы. Однако, я всё равно не понял почему они решили всех предупредить об этом вместо того чтобы тихо допилить всё к
H21 когда всех и так злит, что H20.5 оказалась намного менее стабильная чем 20.0 и 19.5, а тут ещё и заявления, что может всё равно что-то не работать 🤡Тестирование продукта становится всё более открытым 🙂
👍2👌2😁1😢1🤡1
This media is not supported in your browser
VIEW IN TELEGRAM
#houdini #meme #python #noscripting
- Хорошо, я подниму тебе зарплату вдвое, но только если в Network Editor когда-нибудь пойдёт управляемый снег..
- Ни слова больше!
- Хорошо, я подниму тебе зарплату вдвое, но только если в Network Editor когда-нибудь пойдёт управляемый снег..
- Ни слова больше!
😁10🔥2💯1
Media is too big
VIEW IN TELEGRAM
#houdini #help #patching #estereggs
Начиная с
Но раньше ведь это работало...
Исследуем проблему. При нажатии на кнопку
Дело в том, что согласно стандарту
Не будем ждать пока они доберутся до этого тикета и сами "пропатчим" методы запроса в роутере и загрузчике и надо изменить лишь метод запроса на
p.s: в конце видео есть пасхалка, пока разбирался с роутингом, увидел, что там есть эндпоинт (
Начиная с
H20.5 сломалась загрузка примеров через внешний браузер устанавливаемый переменной HOUDINI_EXTERNAL_HELP_BROWSER, наверняка с этим кто-то так же сталкивался. Но раньше ведь это работало...
Исследуем проблему. При нажатии на кнопку
Load из документации мы посылаем на веб-сервер запрос PUT https:/127.0.0.1:xxxx/_load_example к нашему эндпоинту _load_example, однако он стабильно возвращает 404 Not Found. Дело в том, что согласно стандарту
HTML единственные допустимые значения для атрибута method - get и post, соответствующие HTTP-методам GET и POST, поэтому PUT не будет работать с атрибутом метода HTML.Не будем ждать пока они доберутся до этого тикета и сами "пропатчим" методы запроса в роутере и загрузчике и надо изменить лишь метод запроса на
POST и всё! p.s: в конце видео есть пасхалка, пока разбирался с роутингом, увидел, что там есть эндпоинт (
allicons) ведущий на все иконки в H. Кому не хватало иконок для своих инструментов в noscript? 🙂🎉4🙏1
#gaffer #katana #usd #opensource #foundry
Хотя проект
Новое из отчёта:
-
-
Какой у этого может быть use case? В отчёте они показывают как с помощью операторов можно в исходном изображении на примере шота из фильма Interstellar плашки по глубине расставить для композа в автоматическом режиме.
А так же большое количество манипуляций для фильтрации изображений, стилизации и т.д.
Так же вчера релизнулась Katana 8.0, теперь она поставляется с полной поддержкой - к
Теперь артисты могут легко конвертировать данные
Это означает, что артисты могут использовать инструменты которые они любят в
Вообще любопытно конечно насколько быстро происходит конвертация данных туда и обратно и конечно каким функционалом теперь обладает
Хотя проект
Gaffer и опенсорсный тем не менее к своим пользователям разработчики активно прислушиваются и в последнем отчёте Gaffer User Group - December 2024 показали много обновлений по части UI/UX, стало местами намного удобней и практичней. Новое из отчёта:
-
Gaffer RenderMan, да, потихоньку начали интеграцию ещё одного рендера для своего приложения помимо: 3Delight, Arnold, Cycles, работы предстоит ещё много, однако какие-то базовые вещи уже сделаны.-
Gaffer ML. Ещё одна современная гонка в технологиях это поддержка ML (Machine Learning) операторов для работы. Сделали небольшие примеры на ONNX модели. Какой у этого может быть use case? В отчёте они показывают как с помощью операторов можно в исходном изображении на примере шота из фильма Interstellar плашки по глубине расставить для композа в автоматическом режиме.
А так же большое количество манипуляций для фильтрации изображений, стилизации и т.д.
Так же вчера релизнулась Katana 8.0, теперь она поставляется с полной поддержкой - к
USD и обратно - внутри приложения.Теперь артисты могут легко конвертировать данные
Katana в родные данные USD с помощью новой ноды KatanaToUsd. Это означает, что артисты могут использовать инструменты которые они любят в
Katana и применять их к данным в USD. Без необходимости переписывать инструменты конкретно для USD. Вообще любопытно конечно насколько быстро происходит конвертация данных туда и обратно и конечно каким функционалом теперь обладает
Katana для работы с USD.🔥1
#aoc #houdini #contest #vex #hdk #python #top #expression #solaris #dop
Увидел очень прикольный, японский ресурс, где пользователи уже который год соревнуются в решении задач
https://qiita.com/advent-calendar/2024/houdini
Увидел очень прикольный, японский ресурс, где пользователи уже который год соревнуются в решении задач
Advent of Code используя Houdini. Можно почерпнуть много новых, приёмов работы и подходов для самых разных контекстов. Автопереводчики в целом справляются, поэтому проблем с пониманием быть не должно.https://qiita.com/advent-calendar/2024/houdini
Qiita
Houdini - Qiita Advent Calendar 2024 - Qiita
Calendar page for Qiita Advent Calendar 2024 regarding Houdini.
🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
#houdini #vex #formatter #noscripting #python #devlog
Концепт этого маленького проекта возник давно, когда я увидел, что артисты пишут в "сниппетах" в очень разном стиле, как удобно им, однако визуально выглядит хорошо когда код "ровный" и выдержанный в едином стиле везде. Я недолюбливаю внешние редакторы кода для этого поскольку это выглядит громоздко и окна сниппета мне всегда хватало.
В
Короче говоря, мы хотим из такого:
Сделать такое:
В первой итерации проекта просто "прикрепим" фоном clang-format с гугловским стилем форматирования (по умолчанию) кода на языке C к сниппету и с колбэком на обновление сниппета, когда он меняется - код форматируется, по демонстрации видно, что уже неплохой результат получается.
Концепт этого маленького проекта возник давно, когда я увидел, что артисты пишут в "сниппетах" в очень разном стиле, как удобно им, однако визуально выглядит хорошо когда код "ровный" и выдержанный в едином стиле везде. Я недолюбливаю внешние редакторы кода для этого поскольку это выглядит громоздко и окна сниппета мне всегда хватало.
В
VEX к сожалению нет встроенного авто-форматирования кода, а SideFX не оставила спецификаций или стандартов которых можно придерживаться, поэтому все пишут по-разному. Короче говоря, мы хотим из такого:
if(1)
{
doSomething(1);
}
else if(2)
{
doSomething(1, 2);
}
Сделать такое:
if (1) {
doSomething(1);
} else if (2) {
doSomething(1, 2);
}В первой итерации проекта просто "прикрепим" фоном clang-format с гугловским стилем форматирования (по умолчанию) кода на языке C к сниппету и с колбэком на обновление сниппета, когда он меняется - код форматируется, по демонстрации видно, что уже неплохой результат получается.
🔥1🤔1