Render.ru

Задавайте вопросы по Houdini!

maiden666

Мастер
Рейтинг
112
ничего не нормально, функция point(0, 'P', @ptnum) возвратит не номера, а позиции, потому-что именно этот атрибут у тебя выбран
для конкретного примера, с номерами точек на определённом расстоянии, тебе нужно использовать вот что

i[]@closept = pcfind(0, 'P', @P, 0.3, 6);

и при чём тут @emission ? Создаёшь на выделенных точках геометрии любой атрибут, i@qwerty = 1, например, выбираешь его во вкладке Emission Attribute ПОП-сорса, и всё
Анлогично, можно поставить перед Поп-нетворком Blast, в него вбить i@qwerty == 0, и все точки, с которых эмиссия не нужна, будут удаляться
 

Александр Маслов

Пользователь сайта
Рейтинг
2
Всем привет! Подскажите пожалуйста: Беру ноду "Edge Divide", выбираю два "отрезка" параллельные друг другу, делю на два отрезка каждый и соединяю точки "Connect Points" , образуется грань. Как объяснить ноде "Transform" параметру "Groop", что-бы она брала эту грань автоматически.
 

Вложения

  • 11,7 КБ Просмотров: 222
Рейтинг
24
ничего не нормально, функция point(0, 'P', @ptnum) возвратит не номера, а позиции, потому-что именно этот атрибут у тебя выбран
для конкретного примера, с номерами точек на определённом расстоянии, тебе нужно использовать вот что

i[]@closept = pcfind(0, 'P', @P, 0.3, 6);
Понятно. Я почему-то думал, что в массив записывается только номер точки. Поэкспериментировал и окачазось, что в случае с point(0, 'P', @ptnum) в массив запишуться 3 значения Р.

и при чём тут @emission ? Создаёшь на выделенных точках геометрии любой атрибут, i@qwerty = 1, например, выбираешь его во вкладке Emission Attribute ПОП-сорса, и всё
Анлогично, можно поставить перед Поп-нетворком Blast, в него вбить i@qwerty == 0, и все точки, с которых эмиссия не нужна, будут удаляться
Ты наверно меня недополял здесь. Если в ПОП вписать в Emission Attribute i@qwerty==1 (там же можно и просто нруппу указать), то партиклы, да, будут ПОСТОЯННО эмититься только с поинтов которые преобритают это значение. Но мне нужно чтоб они эмителись только в одном кадре (в момент смены значения 0 на 1) а в следующем кадре ничего не должно эмимиться.
 
Рейтинг
24
Немного Оффтоп. 17 версия какая-то глюченая. Если в ноде assemble упаковать геометию, то перестают отображаться нормали, сетка, точки, цвета вершин (даже если их трансферить) и падает очень часто. Это как-то очень не удобно.
 

maiden666

Мастер
Рейтинг
112
Понятно. Я почему-то думал, что в массив записывается только номер точки. Поэкспериментировал и окачазось, что в случае с point(0, 'P', @ptnum) в массив запишуться 3 значения Р.


Ты наверно меня недополял здесь. Если в ПОП вписать в Emission Attribute i@qwerty==1 (там же можно и просто нруппу указать), то партиклы, да, будут ПОСТОЯННО эмититься только с поинтов которые преобритают это значение. Но мне нужно чтоб они эмителись только в одном кадре (в момент смены значения 0 на 1) а в следующем кадре ничего не должно эмимиться.
ну так надо для самой геометрии использовать Сольвер. В моём случае для наглядности использован цвет, сравнивается его значение в текущем и предыдущем кадре, если раньше был чёрный, и стал белый, то атрибут =1

1.gif
2.jpg
3.jpg
 
Рейтинг
24
ну так надо для самой геометрии использовать Сольвер. В моём случае для наглядности использован цвет, сравнивается его значение в текущем и предыдущем кадре, если раньше был чёрный, и стал белый, то атрибут =1
То что нужно! Спасибо!
Были предположения, что, наверно, надо использовать solver, вот только я не мог понять как он работает.
Я немого переделал под свои нужды и вместо сравнение значения по цвету, я сделал сравнение значения по друппе.
У меня не получилось напрямую указать название группы в функции point. Типа poin(1, "group_A", @ptnum), на подобие указания атрибута @group_A. Пришлось закинуть группу в атрибут i@grpA = @group_A; и только после этого прописать poin(1, "grpA", @ptnum);
А каков синтаксис групп в point? Если такое вообще позволяется.

А, и еще. ПОП как-то странно эмитит партиклы по атрибуту (да и по группе тоже). Он эмитит их постоянно даже если атрибут имеет значение 0. Вот только в этом случае они окрашиваются в черный цвет (мол, делает их невидемыми), но на рендере они все равно присудствуют. Это вообще правильно? А то пришлось дополнительно вставлять ноду delete и удалять все черные партиклы.
Неудобство такого эмита в том, что партиклы постоянно накапливаются на этапе ПОПнет-а и, чем длиннее симуляция, тем тормознутей она становится.
 
Последнее редактирование:
Рейтинг
24
С проблемой "черных" партиклов на уровне ПОП разобрался. В нем же, в popwrangle прописал:
if (@c == 0)
removepoint(0, @ptnum);
 

maiden666

Мастер
Рейтинг
112
С проблемой "черных" партиклов на уровне ПОП разобрался. В нем же, в popwrangle прописал:
if (@c == 0)
removepoint(0, @ptnum);
но в моём-то примере не эмитит постоянно? Только там, где атрибут =1 ( я кстати там поставил очень короткое время жизни, 0.3 секунды)
Другое дело, мне не совсем понятно, Emission Attribute можно использовать только если включена эмиссия с Surface, а атрибут при этом на Пойнтах...
Функция point() сама по себе с группами не работает, но ты можешь написать что-то вроде -
if(@group_mygroup==1) point();
теперь Пойнт будет работать только с точками данной группы
 
Рейтинг
24
но в моём-то примере не эмитит постоянно? Только там, где атрибут =1 ( я кстати там поставил очень короткое время жизни, 0.3 секунды)
Не знаю, я когда это увидел, вспомнил, что один раз уже было у меня такое когда просто игрался с ПОП.
Попробуй увеличить время жизни хотяб на 1сек или включи отображение точек. Думаю, заметишь кучу лишних точек черного цвета.

Другое дело, мне не совсем понятно, Emission Attribute можно использовать только если включена эмиссия с Surface, а атрибут при этом на Пойнтах...
Пересмотрел код... Да, что-то я не то сделал но все равно сработало. Разве что черные точки испускались как недостаток )). Исправил ошибку и все теперь работает без лишних течек. Вот только я пока что не понял, почему же все зе метод работал? Потом буду разбираться когда просплюсь.

Функция point() сама по себе с группами не работает, но ты можешь написать что-то вроде -
if(@group_mygroup==1) point();
теперь Пойнт будет работать только с точками данной группы
Бывают случаи когда нужно сравнить основную группу с группой от ноды подающейся на вход 1, как в моем случае. И тут, логично было бы ссылаться на точку которая имеет данную группу. Как в случае с point(1, "Cd", @ptnum). Но, раз point не работает с группами, пришлось сделать так как я сделал - атрибуду назначить значения группы.
 

Roman Sk

Пользователь сайта
Рейтинг
2
Мужики, подскажите, при рендере дыма получается такая вот зернистая фигня, как поправить? Snimok.png
 

Roman Sk

Пользователь сайта
Рейтинг
2
Не похоже на сэмплинг, почти во всех уроках что вижу, уже по умолчанию все сглажено даже на низких настройках, а у меня будто из точек дым состоит. Хочу получить вот такой результат 2.PNG
 
Рейтинг
24
Не похоже на сэмплинг, почти во всех уроках что вижу, уже по умолчанию все сглажено даже на низких настройках, а у меня будто из точек дым состоит. Хочу получить вот такой результат Посмотреть вложение 264509
Если ты используешь Мантру, увеличь Stochastic Samples до 16, 32 или 64. Зернистасть начнет уходить. Но желательно и сэмплинг тоже повысить хотяб до 6 или 9, чтоб детализация сохранилась.
Ну а если уж прорабоатывать саму детиализацию дыма то, в начале, нужно будет крутить параметры шейдера, а потом подгонять вышеуказанное.
 
Сверху