
- •Рендер простой сцены
- •Часть 2. Options и ключи рендеринга командной строки
- •Группа операторов сэмплирования
- •Группа операторов рендеринга с использованием аппаратных возможностей видеокарты
- •Группа операторов тесселяции
- •Группа операторов Motion Blur
- •Группа параметров Shadows
- •Группа параметров Rendering Algorithms
- •Группа операторов Feature Disabling
- •Группа параметров Caustics
- •Группа параметров Global Illumination
- •Группа операторов Frame Buffer Control
- •Группа параметров Scene Geometry
- •Группа операторов Contours
- •Группа операторов Diagnostic Modes
- •Группа дополнительных операторов
- •Ключи рендеринга командной строки ray.Exe
- •Часть 3. Источники освещения
- •Параметры шейдера ctrl_objectlights
- •Только прямое освещение от протяженного источника-полусферы, имитирующего Sky light
- •Часть 4. Геометрические объекты
- •Тестовая сцена
- •У стеклянного бокала visible off и в камеру он не виден. Но его тени и отражения в шейкере присутствуют
- •В свойствах подложки установлено reflection 6 и refraction 6, поэтому ни шейкер, ни бокал ее не "видят"
- •Для подложки refraction 12 и поэтому бокал ее не "видит", а reflection 3 и шейкер отражает подложку Обратная ситуация: для подложки refraction 3, reflection 12
- •Fg Accuracy 280 сэмплов, радиусы 100 - 10 см
- •У одного из объектов сцены finalgather 9, у остальных 3
- •Противоположная ситуация: тумба не отражает вторичный свет, но сама его "видит"
- •Расчет вторичного освещения методом fg, выполненный только для одного объекта сцены - шара. Fg accuracy: 1200 сэмплов на точку, минимальный радиус 1 см, максимальный - 10 см
- •Часть 5. Камеры
- •Часть 6. Материалы
- •Конструкция стандартного материала
- •Конструкция материала типа mental ray mental ray Connection стандартных материалов
- •Шейдеры и параметры
- •Назначение шейдеров в качестве параметров других шейдеров в 3ds max
- •Назначение mib_cie_d в качестве параметра цвета светового шейдера точечного источника в 3ds max
- •Phenomena в 3ds max виден как обычный шейдер заданного apply типа
- •Is_mat_irradiance - шейдер расчета вторичного освещения индивидуально для материалов
- •Интерфейс шейдера is_mat_irradiance
- •Расчет освещения методом fg с глобальными настройками
- •Расчет вторичного освещения с индивидуальными настройками fg для материала чайника и цилиндрической подставки (увеличено число сэмплов)
- •Расчет вторичного освещения с индивидуальными настройками fg для материала чайника и цилиндрической подставки (увеличено число сэмплов) и материала конуса и земли (увеличены только радиусы)
- •Рендеринг с Fast Sky
Шейдеры и параметры
Говоря о простоте и удобстве, нужно также упомянуть еще об одной замечательной возможности mental ray. Речь идет об определении значений параметров одних шейдеров при помощи значений, возвращаемых другими шейдерами (shader assignment). Это свойство позволяет строить цепочки шейдеров через их параметры, соединяя их в последовательности и сети для построения более сложных материалов или phenomena.
Основное правило при построении цепочек - соответствие типов параметров и результатов шейдеров: тип результата шейдера и тип параметра, для определения значения которого он назначается, должны быть совместимы. Например, если параметр шейдера имеет тип Color (цвет), то назначить ему можно любой шейдер, который возвращает результат того же типа - Color.
В 3ds max это правило работает "визуально", каждому параметру шейдера можно вместо постоянного значения назначить другой шейдер из списка доступных, который появляется при нажатии кнопки справа от константного значения параметра:
Назначение шейдеров в качестве параметров других шейдеров в 3ds max
В 3ds max принята классификация шейдеров по назначению, вследствие которой работают дополнительные ограничения на подключение шейдеров. Реализовано это при помощи оператора apply в декларации шейдеров. Например, если шейдер при декларации имеет строчку "apply material", то он будет виден только в редакторе материалов и недоступен для назначения в качестве shadow шейдера (хотя mental ray это допускает). В mental ray такие ограничения не используются и директива apply просто игнорируется (действует только правило соответствия типов). Поэтому, если шейдер не виден в какой-либо категории, исправить положение просто - нужно отредактировать декларацию этого шейдера, добавив нужную категорию в apply.
Например, в декларации всех материальных шейдеров присутствует "apply material". Если дописать "apply material, shadow, photon", то материальные шейдеры станут доступны не только для слота surface, но и для shadow, и для photon - то есть с их помощью можно будет определять тени и фотонные свойства материалов.
Оператор apply является функцией mental ray и предназначен для описания возможной области применения шейдера, носит исключительно рекомендательный и информационный характер. В mental ray также регламентированы и ключи этого оператора (типы шейдеров по назначению):
lens: линзовый шейдер для камеры
material: материальный шейдер
light: шейдер источника света
shadow: теневой шейдер для материалов
environment: шейдер окружения для материалов или камер
volume: объемный шейдер для материалов или камер
texture: текстурный шейдер
photon: фотонный шейдер для материала
geometry: геометрический шейдер
displace: displacement шейдер для материала
lightmap: шейдер запекания освещения в текстуру для материала
emitter: шейдер фотонного эмиттера, управляющий испусканием фотонов от источников света
output: шейдер вывода для камер
state: шейдер состояния
В 3ds max использование оператора apply в декларации шейдера с указанием его ключей является обязательным требованием и вызывает сообщение об ошибке, если оператор или его ключи не указаны.
Хотя mental ray и разрешает подключение произвольных шейдеров, если они совместимы по типу, следует четко понимать смысл и последствия создаваемой цепочки.
Подключение шейдеров в mi файле рассмотрим на примере назначения шейдера mib_cie_d в качестве цвета для светового шейдера точечного источника mib_light_point.
1. Прежде чем шейдера могут быть использованы в сцене, они должны быть декларированы:
declare shader |
|
|
|
color |
"mib_light_point" ( |
|
color |
"color", |
|
boolean |
"shadow", |
|
scalar |
"factor", |
|
boolean |
"atten", |
|
scalar |
"start", |
|
scalar |
"stop" |
|
) |
|
|
version 1 |
|
|
apply light |
|
end declare |
|
|
declare shader |
|
|
|
color |
"mib_cie_d" ( |
|
scalar |
"temperature", |
|
scalar |
"intensity" |
|
) |
|
|
version 1 |
apply light |
end declare |
|
|
Мы хотим использовать mib_cie_d для определения параметра "color" у mib_light_point. Обратите внимание, что тип результата, возвращаемого mib_cie_d и тип параметра "color" у mib_light_point одинаковы - это цвет (color).
2. Шейдер, назначаемый в качестве параметра другого шейдера должен быть предварительно определен - значениям его параметров должны быть указаны определенные величины:
shader |
"color_light" |
"mib_cie_d" ( |
|
"temperature" |
2700, |
|
"intensity" |
1) |
Здесь мы определили шейдер типа mib_cie_d с именем "color_light" и присвоили его параметрам "temperature" и "intensity" значения.
3. Теперь шейдер может быть использован как параметр другого шейдера, для этого достаточно в поле значения соответствующего параметра указать имя определенного ранее шейдера без параметров:
shader |
"my_light" |
"mib_light_point" ( |
|
"color" |
; = "color_light", |
|
"shadow" |
off, |
|
"factor" |
0, |
|
"atten" |
off, |
|
"start" |
0, |
|
"stop" |
40) |
Аналогичную цепочку можно построить и средствами 3ds max, но потребуется отредактировать оператор apply в декларации mib_cie_d - дописать для apply light новый ключ material, вот так: apply light, material. После этого шейдер станет доступен для определения цвета точечного источника.