Автор Тема: Методы QMC семплирования в Blender Render  (Прочитано 505 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Онлайн Samovar

  • Житель
  • Пятигорье
¯\_(ツ)_/¯

Онлайн Samovar

  • Житель
  • Пятигорье
Re: Методы QMC семплирования в Blender Render
« Ответ #1 : 28 Октября 2016, 06:52:31 »


Методы QMC семплирования



Многие методы визуализации генерируют конечный результат (цвет пикселя) с помощью усреднения значений, полученных из нескольких выборок (семплов). Так, например, размытые отражения (Glossy) получаются усреднением значения из набора выборок (семплов) внутри формы конуса отраженного луча. Алгоритм мягкого затенения на базе препятствий в окружающем пространстве (Ambient Occlusion), усредняет выборки (семплы), взятые по полусфере  вокруг затеняемой точки. Мягкие падающие тени от источника света получаются усреднением выборок (семплов), взятых по его форме. И тому подобное.


Популярным методом для создания точек/направлений выборок является метод Quasi-Monte-Carlo (QMC) (Квази-Монте-Карло). Метод Монте-Карло является действительным методом получениия случайных выборок (назван в честь города казино и азартных игр), а метод Квази-Монте-Карло (QMC), таким образом, является его разновидностью, делающей выборки которые «почти случайными», но лучше распределенными.


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


В Blender Render реализованы два метода QMC семплирования:


1. с использованием последовательности Холтона (Halton Sequence) - Адаптивный QMC (Adaptive QMC)
      https://en.wikipedia.org/wiki/Halton_sequence


2. c использованием последовательности Хэммерсли (Hammersley Sequence) - Равномерный QMC (Constant QMC)
      https://en.wikipedia.org/wiki/Low-discrepancy_sequence#The_Hammersley_set




Ссылки:


«Численные методы Монте-Карло» Соболь И.М. Издательство «Наука» 1973 г.
http://padaread.com/?book=27237&pg=1


Псевдо- и квазислучайные числа
http://prografix.narod.ru/rus_rand.html

далее...
¯\_(ツ)_/¯

Онлайн Samovar

  • Житель
  • Пятигорье
Re: Методы QMC семплирования в Blender Render
« Ответ #2 : 28 Октября 2016, 07:20:12 »




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


Это позволяет использовать последовательность Холтона для метода адаптивных выборок, в то время как точки выборок последовательности Хэммерсли должны быть предварительно вычислены и использованы в полной мере. Адаптивный метод выборок означает, что число выборок (семплов) может быть изменено в соответствии с различным ситуациям  при визуализации изображения, и в некоторых ситуациях  это может быть намного более эффективным решением.


Это вовсе не означает, что "Адаптивный QMC" – это всегда лучший вариант, хотя, если сцена такова, что визуализируется долго с использованием метода адаптивных выборок, то луче использовать равномерное распределение выборок - "Равномерный QMC", который может дать лучшее финальное изображение  за  то же время.


далее...

¯\_(ツ)_/¯

Онлайн Samovar

  • Житель
  • Пятигорье
Re: Методы QMC семплирования в Blender Render
« Ответ #3 : 28 Октября 2016, 09:16:55 »

Адаптивное QMC семплирование

Адаптивное QMC семплирование включается автоматически, когда пробоотборник установлен в положение "Адаптивное QMC" (Adaptive QMC), и значение порога (Threshold)  больше 0. В Blender Render в настоящее время используется простой метод «раннего выхода». В процессе  получения значений из выборок, код проверяет, требуется ли больше выборок для расчетов с пороговым значением. Если определяется, что больше выборок не требуется, то вычисления новых выборок останавливаются  раньше чем достигнуто их количество, которое было указанно в пользовательском интерфейсе, и происходит переход к следующему набору выборок для рсссчёта цвета другого пикселя изображения. Это может значительно ускорить рендеринг, так как  нет особого смысла в вычислении лишних выборок (которое может отнять довольно много времени при трассировке лучей), если эти выборки не вносят большой вклад в качество финального изображения.

Адаптивное семплирование в настоящее время используется на трех участках Blender Render:

Глянцевые отражения / преломления (Glossy reflection/refraction)

Метод пропускает расчёт новых выборок, если статистическая дисперсия значений цветов   находится ниже указанного порогового значения.
Это наиболее эффективно работает в случаях, когда источник отражения / преломления имеет большие площади равномерного цвета, так как трассируемые выборки будут с подобными значениями, то их будет рассчитано меньше, а не полное количество, которое указано пользователем для вычисления финального цвета пикселя изображения.

далее...
¯\_(ツ)_/¯

Онлайн Samovar

  • Житель
  • Пятигорье
Re: Методы QMC семплирования в Blender Render
« Ответ #4 : 28 Октября 2016, 11:01:15 »

Падающие тени методом трассировки лучей (Raytraced shadows)


Пропускает  вычисление дополнительных выборок, когда определено, что пиксель  находится полностью в тени или на свету, проверяя насколько выборка находится ниже порогового значения.
Это дает существенное улучшение скорости в большинстве случаев, но наиболее эффективно работает, когда есть большие площади полностью затененных или освещённых областей в сцене. То есть, когда освещение в сцене создаёт более резкие тени без широких мягких полутеней.


далее...
¯\_(ツ)_/¯

Онлайн Samovar

  • Житель
  • Пятигорье
Re: Методы QMC семплирования в Blender Render
« Ответ #5 : 28 Октября 2016, 12:02:39 »

Алгоритм мягкого затенения на базе препятствий в окружающем пространстве (Ambient Occlusion)


Пропускает выборки на основе простого теста контраста. Если различие между средним значением всех выборок с текущей и средним значением выборок до текущей ниже порога, то выборки прекращаются.
Это не всегда дает значительные улучшения, а также может внести шум. В зависимости от ситуации, иногда более эффективно использовать "Равномерное QMC" (Constant QMC) из-за более равномерного распределения выборок. Для того чтобы удостоверится какой метод семплирования наиболее эффективен, полезно сделать некоторые тестовые визуализация на скорость / качество с различными настройками.


далее отсебятина возможно ...


Извиняюсь за досадные АшыПки и очепятки, типа вЕремя, пунктуацию  и т.п. :)
¯\_(ツ)_/¯

Онлайн Samovar

  • Житель
  • Пятигорье
Re: Методы QMC семплирования в Blender Render
« Ответ #6 : 29 Октября 2016, 10:14:26 »
Введение  в Anti-Аliasing (сглаживание, анти-зубчатость) Blender Render. Статья от Remeslennik с blender3d.org.ua
http://blender3d.org.ua/forum/tutorial/iwe/upload/Oversampling.pdf


...но пока эту тему сильно не буду затрагивать (она достаточно обширна, особенно во взаимосвязи с QMC семплированием), а в следующих сообщениях пошагово опишу  метод сглаживания в Blender Render основанный только на QMC семплировании...
¯\_(ツ)_/¯

Онлайн Samovar

  • Житель
  • Пятигорье
Re: Методы QMC семплирования в Blender Render
« Ответ #7 : 24 Ноября 2016, 11:57:25 »
QMC семплирование так же применяется в Cycles (Pattern: Sobol)
Ссылка на книгу советского математика Ильи Мееровича Соболя выше... https://en.wikipedia.org/wiki/Sobol_sequence

¯\_(ツ)_/¯

Онлайн Samovar

  • Житель
  • Пятигорье
Re: Методы QMC семплирования в Blender Render
« Ответ #8 : 24 Ноября 2016, 12:12:11 »
Монте-Карло так же  есть в текустурах Blender.
Процедурная текстура Noise (Шум) - это по сути чистый  рандом или Монте-Карло.

Официальная справка: https://www.blender.org/manual/render/blender_render/textures/types/procedural/noise.html
Although this looks great, it is not Perlin Noise! This is a true, randomly generated Noise. This gives a different result every time, for every frame, for every pixel.
Это выглядит здорово,и это не шум по Перлину (Перлин - это ближе к QMC - текстура Clouds -> Original Perlin)! Это настоящая, генерация случайного шума. Результат выдаётся, для каждого кадра, для каждого пикселя (добавлю, что и для каждого семпла).
¯\_(ツ)_/¯

Онлайн Samovar

  • Житель
  • Пятигорье
Re: Методы QMC семплирования в Blender Render
« Ответ #9 : 08 Ноября 2017, 01:11:53 »
Хорошая статья про Anti-Aliasing http://www.ixbt.com/video2/reactor-articles/glossary.shtml
¯\_(ツ)_/¯

 

* По форуму

* Последние вложения

Screw.jpg
Скачано: 5
Автор: Dmi3ryd
Cylinder_animation.gif
Скачано: 6
Автор: Dmi3ryd
seit1.jpg
Скачано: 9
Автор: sandman
nif_op_not_defined.png
Скачано: 4
Автор: corbieeye
Слежение.jpg
Скачано: 16
Автор: Barabashka