Doc/ChevelureRenderPass/ru
From ChevelureWiki
(Undo revision 448 by Ugelihelugu (Talk)) |
|||
Line 1: | Line 1: | ||
- | + | [[Documentation/ru|Документация]] | |
+ | |||
+ | == ChevelureRenderPass == | ||
+ | |||
+ | [[File:Doc_renderpass_menu.jpg||thumb|Create Render Pass]] | ||
Дополнительная нода для задания параметров проходов. ChevelureRenderPass подключается к шейпу волос. К одному шейпу может быть привязано несколько проходов (ChevelureRenderPass). В проходе задаются фильтры - для указания в каких проходах рендера будет участвовать. | Дополнительная нода для задания параметров проходов. ChevelureRenderPass подключается к шейпу волос. К одному шейпу может быть привязано несколько проходов (ChevelureRenderPass). В проходе задаются фильтры - для указания в каких проходах рендера будет участвовать. | ||
- | Таким образом можно например для прохода final и shadow использовать разную ширину волос, включать прореживание и т.д. | + | Таким образом можно, например, для прохода final и shadow использовать разную ширину волос, включать прореживание и т.д. |
- | Если у шейпа волос нет ни одного пасса настройки рендера берутся из панели [[Doc/ChevelureShape/Render/ru|Render]] | + | Если у шейпа волос нет ни одного пасса, настройки рендера берутся из панели [[Doc/ChevelureShape/Render/ru|Render]] |
- | + | == Как работает == | |
- | + | ||
- | В рендермане в момент рендеринга доступны 2 атрибута: pass_class и pass_id. | + | В рендермане в момент рендеринга доступны 2 атрибута: '''pass_class''' и '''pass_id'''. |
- | pass_class может быть стандартный (final, shadow, ...). | + | '''pass_class''' может быть стандартный (final, shadow, ...). |
- | pass_id похоже на имя камеры, хотя и не всегда. | + | '''pass_id''' похоже на имя камеры, хотя и не всегда. |
Все вопросы к документации на рендерман. | Все вопросы к документации на рендерман. | ||
- | + | == Создание == | |
- | ''' | + | Выделить шейп волос. Далее в меню '''Chevelure/Add Render Pass'''. |
- | + | ||
- | Примечание: при создании | + | Примечание: при создании устанавливаются коннекты атрибутов рендера от шейпа волос к проходу. Это сделано для наследования параметров по умолчанию. Если требуется изменить их, необходимо отрубить коннект. |
- | + | == Настройка фильтров == | |
- | + | ||
- | Есть 8 | + | [[File:Doc_pruning_tab.jpg||thumb|ChevelureRenderPass]] |
+ | |||
+ | Есть 8 стандартных классов проходов: "final", "shadow", "reflection", "environment", "depth", "reference", "archive", "photon". | ||
Также в атрибуте '''pass Classes''' можно перечислить пользовательские проходы. Разделитель пробел. | Также в атрибуте '''pass Classes''' можно перечислить пользовательские проходы. Разделитель пробел. | ||
- | Атрибут '''PassIds''' необходим если нужно указать конкретную камеру для которой будет работать ChevelureRenderPass. | + | Атрибут '''PassIds''' необходим если нужно указать конкретную камеру для которой будет работать '''ChevelureRenderPass'''. |
+ | Настройки фильтров собраны в секции '''Pass''' | ||
+ | |||
+ | Для проверки необходимо включить '''dump information''' в шейпе волос см. [[Doc/ChevelureShape/Render/ru|Render]]. После этого | ||
+ | при рендере будет выдаваться информация о '''pass_class''', '''pass_id''' и прошедших фильтрацию проходах. | ||
+ | |||
+ | Например: | ||
+ | pass_class=final pass_id=untitled | ||
+ | bInstanced=0 | ||
+ | defaultPass is valid | ||
+ | Или: | ||
+ | pass_class=final pass_id=untitled | ||
+ | bInstanced=0 | ||
+ | chevelureRenderPassNode1 is valid | ||
+ | chevelureRenderPassNode2 is valid | ||
+ | |||
+ | |||
+ | Примечание: | ||
''Можно ли не указывать pass_id?'' | ''Можно ли не указывать pass_id?'' | ||
Да, если не указано pass_id фильтрация по нему не производится. | Да, если не указано pass_id фильтрация по нему не производится. | ||
- | ''Прости еще вопрос а tolower ты делаешь?'' | + | ''Прости, еще вопрос, а tolower ты делаешь?'' |
Сравнение производится без учета регистра | Сравнение производится без учета регистра | ||
+ | |||
+ | |||
+ | == Настройка рендера == | ||
+ | Для прохода можно включить свой '''тип рендера''' и '''прореживание'''. Прореживание тесно связано с прунингом. Так что стоит изучить. | ||
+ | Также к настройкам рендера относится '''рендер ширина''', '''число сегментов''', '''интерполяция''', '''настройка нормалей''', '''прозрачность''' и т.д. | ||
+ | |||
+ | === Тип рендера === | ||
+ | # Кривыми (HAIR) | ||
+ | # Полигональными трубками (TUBES) | ||
+ | # Сабдивными трубками (SUBDIVTUBES) | ||
+ | # Инстансами (INSTANCES) | ||
+ | Примечание: инстансами - только в случае если они заданы в основном шейпе волос. | ||
+ | |||
+ | Включение '''Render Clumps''' заставляет рендерить только центры клампов. | ||
+ | Это иногда дает хорошие результаты в проходе теней. Необходимо еще включить '''Use Clump Radius As Width''' и настроить '''Width Bias'''. | ||
+ | |||
+ | === Прореживание === | ||
+ | Используется для оптимизации рендеринга. | ||
+ | |||
+ | Прореживание ('''Degradation''') задается в процентах. 100% значит будут рендерится все волосы, 50% - половина и так далее. | ||
+ | |||
+ | {| | ||
+ | |[[File:Doc_degradation_100.jpg|300px|thumb|degradation=100% ]] | ||
+ | |[[File:Doc_degradation_66.jpg|300px|thumb|degradation=66% ]] | ||
+ | |[[File:Doc_degradation_33.jpg|300px|thumb|degradation=33% ]] | ||
+ | |[[File:Doc_degradation_1.jpg|300px|thumb|degradation=1% ]] | ||
+ | |} | ||
+ | |||
+ | Ширина прореживания ('''Degradation Widht'''): процент волос которые изменяют свою ширину до нуля. Эта величина используется для прунинга. Чтобы волосы скачком не исчезали из кадра, а плавно изменяли ширину до 0. | ||
+ | |||
+ | {| | ||
+ | |[[File:Doc_degradation_56_width_50.jpg|200px|thumb|degradation=56% width=50%]] | ||
+ | |[[File:Doc_degradation_45_width_50.jpg|200px|thumb|degradation=45% width=50%]] | ||
+ | |[[File:Doc_degradation_34_width_50.jpg|200px|thumb|degradation=34% width=50%]] | ||
+ | |[[File:Doc_degradation_23_width_50.jpg|200px|thumb|degradation=23% width=50%]] | ||
+ | |[[File:Doc_degradation_12_width_50.jpg|200px|thumb|degradation=12% width=50%]] | ||
+ | |[[File:Doc_degradation_1_width_50.jpg|200px|thumb|degradation=1% width=50%]] | ||
+ | |} | ||
+ | |||
+ | === Рендер ширина === | ||
+ | '''Render Width''' ''тут понятно''. | ||
+ | |||
+ | '''Mul Width by Lenght''' умножать ширину волоса на коэффициент длины. Используется когда волосами рисуются мелкие предметы, например камни. В этом случае они не будут изменять геометрических пропорций. Примечание: для правильного текстурировании таких предметов нужно отключать опцию '''dice hair'''. | ||
+ | |||
+ | '''Width bias''' добавка к ширине каждого волоса. Используется для тонких настроек. | ||
+ | |||
+ | === Число сегментов и интреполяция === | ||
+ | Для разных проходов может быть задана меньшая или большая тесселяция волоса. В зависимотри от требуемой картинки. Чем выше тесселяция тем медленней рендер и тем больше ресурсов он кушает. | ||
+ | |||
+ | Интерполяция ''тут понятно'' | ||
+ | |||
+ | == Другие настройки == | ||
+ | Прозрачность ''надо вспоминать'' | ||
+ | |||
+ | '''dice hair''' | ||
+ | |||
+ | '''sigma hiding''' | ||
+ | |||
+ | Направление нормалей | ||
+ | |||
+ | '''double side''' | ||
+ | |||
+ | '''reverse orientation''' | ||
+ | |||
+ | '''Motion blur''' | ||
+ | |||
+ | == Уровни детализации == | ||
+ | Использование механизма RiDetails. | ||
+ | ''надо вспоминать'' | ||
+ | |||
+ | == Прунинг == | ||
+ | Механизм адаптивного расчета прореживания в зависимости от удаления волос от камеры. Самый мощный аппарат для оптимизации рендеринга больших сцен. | ||
+ | |||
+ | Статья "Stochastic Pruning" | ||
+ | Robert L. Cook John Halstead | ||
+ | Pixar Animation Studios | ||
+ | [[File:Doc_Pruning.pdf]] | ||
+ | |||
+ | Считает степень прореживания и фактор увеличения ширины исходя из расстояния до камеры. | ||
+ | Т.е. при удалении камеры от объекта будет рендерится меньше волос, но они будут шире. Дабы не терять ощущение плотности. | ||
+ | |||
+ | Прунинг настраивается через параметры '''Rate''', '''Scale''' и '''Prume min'''. | ||
+ | |||
+ | Прунинг не будет работать если расстояние до камеры меньше '''Scale'''. | ||
+ | |||
+ | Формула такая: | ||
+ | prune = pow( '''distance'''/'''Scale''', -log '''Rate'''(2)) | ||
+ | '''distance''' - дистанция до камеры | ||
+ | |||
+ | * если получилось prune = 0.5 то будет рендерится 50% волос шириной в 2 раза больше. | ||
+ | * если получилось prune = 0.25 то будет рендерится 25% волос шириной в 4 раза больше. | ||
+ | * и т.д. | ||
+ | |||
+ | Расчитаное значение прунинга для конкретной камеры можно посмотреть в логе рендеринга при включенной '''dump information''' | ||
+ | [[File:Doc_pruning_dump.jpg]] | ||
+ | |||
+ | Пример: '''Rate'''=2, '''Scale'''=10 | ||
+ | * дистанция <= 10 - рендерится полное число волос | ||
+ | * дистанция = 20 - рендерится 50% | ||
+ | * дистанция = 40 - рендерится 25% | ||
+ | * дистанция = 80 - рендерится 12.5% | ||
+ | |||
+ | Для визуального представления зафиксируем дистанцию до камеры (в данном случае 10) и будем изменять параметр '''Scale'''. | ||
+ | [[File:Doc_pruning_test_scene.jpg|800px]] | ||
+ | |||
+ | Скачать тестовую сцену: [[File:Doc_Pruning.mb]] | ||
+ | |||
+ | ---- | ||
+ | Для '''Rate''' = 2 | ||
+ | {| | ||
+ | |[[File:pruning_rate2_scale10.jpg|200px|thumb|scale=10 rate=2]] | ||
+ | |[[File:pruning_rate2_scale6.jpg|200px|thumb|scale=6 rate=2]] | ||
+ | |[[File:pruning_rate2_scale4.jpg|200px|thumb|scale=4 rate=2]] | ||
+ | |[[File:pruning_rate2_scale3.jpg|200px|thumb|scale=3 rate=2]] | ||
+ | |[[File:pruning_rate2_scale2.jpg|200px|thumb|scale=2 rate=2]] | ||
+ | |[[File:pruning_rate2_scale1.4.jpg|200px|thumb|scale=1.4 rate=2]] | ||
+ | |[[File:pruning_rate2_scale1.jpg|200px|thumb|scale=1 rate=2]] | ||
+ | |} | ||
+ | ---- | ||
+ | Для '''Rate''' = 3 | ||
+ | {| | ||
+ | |[[File:Doc_pruning_rate3_scale10.jpg|200px|thumb|scale=10 rate=2]] | ||
+ | |[[File:Doc_pruning_rate3_scale6.jpg|200px|thumb|scale=6 rate=2]] | ||
+ | |[[File:Doc_pruning_rate3_scale4.jpg|200px|thumb|scale=4 rate=2]] | ||
+ | |[[File:Doc_pruning_rate3_scale3.jpg|200px|thumb|scale=3 rate=2]] | ||
+ | |[[File:Doc_pruning_rate3_scale2.jpg|200px|thumb|scale=2 rate=2]] | ||
+ | |[[File:Doc_pruning_rate3_scale1.4.jpg|200px|thumb|scale=1.4 rate=2]] | ||
+ | |[[File:Doc_pruning_rate3_scale1.jpg|200px|thumb|scale=1 rate=2]] | ||
+ | |} | ||
+ | |||
+ | ---- | ||
+ | Для '''Rate''' = 4 | ||
+ | {| | ||
+ | |[[File:Doc_pruning_rate4_scale10.jpg|200px|thumb|scale=10 rate=2]] | ||
+ | |[[File:Doc_pruning_rate4_scale6.jpg|200px|thumb|scale=6 rate=2]] | ||
+ | |[[File:Doc_pruning_rate4_scale4.jpg|200px|thumb|scale=4 rate=2]] | ||
+ | |[[File:Doc_pruning_rate4_scale3.jpg|200px|thumb|scale=3 rate=2]] | ||
+ | |[[File:Doc_pruning_rate4_scale2.jpg|200px|thumb|scale=2 rate=2]] | ||
+ | |[[File:Doc_pruning_rate4_scale1.4.jpg|200px|thumb|scale=1.4 rate=2]] | ||
+ | |[[File:Doc_pruning_rate4_scale1.jpg|200px|thumb|scale=1 rate=2]] | ||
+ | |} | ||
+ | |||
+ | ---- | ||
+ | Чтобы при движении камеры не происходило резкого изчезания волос (на низких значениях прунинга волосы очень широкие - и при переходе волосом порога прореживания будет грязь). Для исключения этого эффекта нужно использовать параметр ширина прореживания ('''Degradation Widht'''). | ||
+ | |||
+ | Для '''Rate''' = 4, '''Degradation Widht''' = 20 | ||
+ | {| | ||
+ | |[[File:Doc_pruning_rate4_width20_scale10.jpg|200px|thumb|scale=10 rate=2]] | ||
+ | |[[File:Doc_pruning_rate4_width20_scale6.jpg|200px|thumb|scale=6 rate=2]] | ||
+ | |[[File:Doc_pruning_rate4_width20_scale4.jpg|200px|thumb|scale=4 rate=2]] | ||
+ | |[[File:Doc_pruning_rate4_width20_scale3.jpg|200px|thumb|scale=3 rate=2]] | ||
+ | |[[File:Doc_pruning_rate4_width20_scale2.jpg|200px|thumb|scale=2 rate=2]] | ||
+ | |[[File:Doc_pruning_rate4_width20_scale1.4.jpg|200px|thumb|scale=1.4 rate=2]] | ||
+ | |[[File:Doc_pruning_rate4_width20_scale1.jpg|200px|thumb|scale=1 rate=2]] | ||
+ | |} | ||
+ | |||
+ | |||
+ | '''Prume min''' введен для ограничения величины прунинга снизу. Рекомендуемое значение 0.1. Это значит что будет прорежено не меньше 10% волос и | ||
+ | ширина увеличится не более чем в 10 раз. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Внимание: дистанция до камеры считается в пространстве шейпа волос. | ||
+ | Т.е. если в иерархии есть scale надо его учитывать. | ||
+ | Например: на трансформе волос скейл = 10. То '''pruning scale''' надо уменьшить в десять раз. | ||
+ | |||
+ | Внимание: пока значение прунинга расчитывается '''для всего''' шейпа волос. По правильному было бы расчитывать для каждого волоска индивидуально. | ||
+ | Если это потребуется - могу сделать | ||
+ | |||
+ | == FAQ == | ||
+ | |||
+ | Такой вопрос: можно ли прикрутить возможность указывать пассы, в которых прюнинг не должен считаться? | ||
+ | Это для теней актуально очень. Чтобы тени можно было считать без прюнинга, если надо, а бьюти с ним? | ||
+ | Ну и наоборот тоже. | ||
+ | |||
+ | * Прунинг настраивается отдельно для каждого пасса. Кстати в шейпе волос есть общий коэффициент для параметра '''Scale'''. | ||
{{Languages|Doc/ChevelureRenderPass}} | {{Languages|Doc/ChevelureRenderPass}} |