2013-11-27 4 views
2

Пожалуйста, помогите мне прояснить этот вопрос, у меня есть об алгоритме объема луча литья:Вычисление градиента объем литья лучей

В статье википедии (link), он говорит, что "Для каждой точки отбора проб, градиент ( «

Мой вопрос: Почему градиент значений освещенности? Почему не значения непрозрачности? Разумеется, переход от «материала» к «никакому материалу» более точно описывается изменениями непрозрачности.

Рассмотрим, например, два вокселя: [1][2]. 1 является ярким и прозрачным, а 2 темным и непрозрачным. По моему мнению, это соответствует поверхности, обращенной влево. Я что-то упускаю?

ответ

2

Градиентные векторные точки вдоль направления наибольшего увеличения. В этом случае это означает, что он указывает в том направлении, в котором освещение увеличивается быстрее всего, и поэтому в вашем примере [1][2] градиент на 2 действительно указывает налево.

И наоборот, если вы приняли градиент непрозрачности, вы получите вектор, указывающий на направление увеличения непрозрачности, то есть «внутрь». Вы можете отказаться от этого, чтобы получить вектор, направленный наружу, но по-прежнему существует проблема, что непрозрачность локальная. Он рассказывает вам только о структуре объекта в непосредственной близости. Когда вы затеняете что-то, то, что вы хотите знать, - это то, насколько хорошо освещена поверхность, когда вы путешествуете от точки к точке. Зная поверхности постоянного освещения, вы можете это вывести, но с поверхности постоянной непрозрачности вы можете только вывести, насколько хорошо освещено это было бы , если между поверхностью и источником света не было ничего.

+0

Это имеет смысл. Благодаря! –

+0

Рад, что я мог помочь! Если есть какая-то часть моего объяснения, это неясно, просто скажите, и я уточню. –

0

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

Этот же принцип применяется к лучей. Как только вы определите, что луч ударил по какой-то вокселю, вам нужно проанализировать окружающие вокселы, чтобы эффективно вычислить «нормальный уровень», который вы можете использовать для расчетов освещения.

+0

Получаю, что вам нужна нормальная поверхность для расчета затенения. Я не понимаю, почему вы используете градиент * подсветки * для вычисления этого нормального, в отличие от градиента * непрозрачности *. –

+0

Термин «градиент значений освещенности» вводит в заблуждение в описании Википедии, но следующее предложение указывает, что это значение представляет ориентацию поверхности, а не самого освещения. Из ориентации поверхности вы затем подсчитаете освещение. Это моя лучшая интерпретация. –

1

Градиент - это нормальный вектор для изо-поверхности, вы можете рассматривать объемный объект как стек изо-поверхностей (много из них; o), каждая изо-поверхность имеет на поверхности одинаковое значение скалярного поля; Функция переноса задает соответствие непрозрачности/красного/зеленого/синего и скалярных значений, поэтому каждая изо-поверхность имеет назначенный прозрачность и цвет. Такое представление упрощает понимание роли объемного градиента для объемного рендеринга ...

Смежные вопросы