Skip to content

sungreen/rcam

Repository files navigation

Концепт универсальной 3D камеры с изменяемой перспективой

Введение

В традициях 3D-моделирования используются два основных типа проекции — перспективная и ортогональная. На основе этих типов проекций реализованы представления результатов моделирования во всех без исключения 3D-редакторах и рендерах. При этом такие реализации разделяют эти два типа проекций на отдельные характеристики камеры, используемой в 3D-сцене. То есть в большинстве случаев для камеры нельзя плавно изменить вид с ортогональной проекции на перспективную. Такой переход происходит только после смены типа камеры. В отличие от этого, в предлагаемом концепте применяется условный коэффициент Kf, который определяет фактор перспективы таким образом, что при Kf = 0 перспектива отсутствует, что соответствует ортографической проекции; при Kf > 0 проявляется эффект прямой перспективы, а при Kf < 0 — эффект обратной перспективы. При этом чем больше отличие Kf от нуля, тем сильнее проявляется эффект перспективы в ту или иную сторону.

Демонстрация камеры с динамической перспективой

Изначально коэффициент Kf имел одинаковое влияние по всем осям. Это позволяет сохранять линейность объектов при прямой и обратной перспективе. Однако если применить различные коэффициенты для осей, то линейность пропадает, перспектива наделяется анизотропией. Эффект анизотропной перспективы резулируется параметром Ka. При Ka = 0 анизотропии нет. Перспектива одинаково распространяется по всех осям. При Ka = 1 - перспектива по одной оси полностью отсутствует, а при Ka = 2 - начинает действовать в противоположном направлении.

Демонстрация камеры с анизотропной перспективой

Видео на рутубе

Для сборки Blender необходимо ознакомиться с инструкциями с официального сайта Building Blender

Загрузите последнюю версию исходного кода с сайта project.blender.org.

mkdir ~/blender-git

cd ~/blender-git

git clone https://projects.blender.org/blender/blender.git

cd blender

make update

Скачайте файл с патчем rcam4

wget https://raw.githubusercontent.com/sungreen/rcam/master/rcam4_410_20231120.diff

Примените патч к коду Blender

patch -p1 < rcam4_410_20231120.diff

Продолжите сборку Blender

make

Использование

Готовые сборки Blender с патчем rcam3/rcam4

Распространение сборок неочень хорошая идея с точки зрения безопасности. Тем неменее они есть и их можнос скачать

rcam3-eevee

rcam3-cycles

rcam4-cycles_eevee

rcam4 blender with anisotropy perspective (update 02/02/2025)

Предистория

rcam

Патч для Blender, реализующий эффект обратной перспективы для камеры. В интерфейсе Blender в настройках камеры в режиме "Perspective" добавлен чек "Reverse perspective", который включает выключает эффект. Эффект доступен во вьюпорте при просмотре в режиме "Камера". Визуализация реализована для рендера EEVEE. Важно! Настройки вида камеры в режиме обратной перспективы существенно зависят от значение Clip Start (as Near) и Clip End (as Far).

rcam3

Добавлен Reverse Factor - параметр с помощью которого можно контролировать эффект обратной перспективы. Параметр меняется от 0 до 1. При значении 0 эффект не проявляется, то есть камера имеет классический перспективный вид. При значении 1 эффект обратной перспективы проявляется полностью - камера имеет вид обратной перспективы. При значении 0.5 - вид камеры соответствует классическому ортогональному виду. Этот параметр анимируемый, то есть можно делать анимацию перехода вида из перспективной камеры в камеру с видом обратной перспективы.

Есть ошибки по теням и областью видимости (отсечением), пытаюсь разобраться сам, но хотелось бы получить помощь разработчиков Blender

rcam3-cycles

Реализован эффект обратной персперктивы для рендера cycles. Это дает возможность делать более корректные рендеры теней, преломления и отражения света. Настройки камеры независят от Clip Start и Clip End, а регулируются величиной эффекта перспективы и обратной перспективы при отрицательных значениях. Добавлены настройки tilt&shift, что существенно обогащает политру настроеек.

rcam4

Объединены ранее реализованные эффекты обратной перспективы для EEVEE и Cycles в одном патче. Сейчас для Blender реализована возможность динамической перспективы только в окне 3D редактора, для рендера Cycles и частично EEVEE без поддержки OSL Camera Script. Добавлен эффект анизотропной перспективы.

rcam4 и Orthodox Camera

После публикации запроса на форуме разработчиков Blender (https://projects.blender.org/blender/blender/pulls/134142) и подробного рассмотрения кода в него были внесены существенные изменения, в том числе в части интерфейса доступа к функционалу получения обратной перспективы. Поскольку эффект предполагает не только получение обратной перспективы, но и плавный переход от обратной перспективы к прямой, включая ортографический вид как частный случай состояния камеры с условным коэффициентом Kf = 0, камера не называется камерой обратной перспективы, а получила название Orthodox Camera. Она реализована в интерфейсе Blender как опция к Orthographic Camera. Включение параметров осуществляется через активацию Use Orthodox, а нужные эффекты достигаются изменением параметра Factor (условный коэффициент Kf) и Distance (базовое расстояние или расстояние до базового объекта, которое в целом соответствует фокусному расстоянию для DoF).

Также доступна экспериментальная сборка Blender 4.5 with Orthodox Camera на официальном сайте Blender Foundation (https://builder.blender.org/download/patch/PR134142/) для Windows, Linux и macOS.

Orthodox Camera Mini Guide

OSL Camera

В качестве примера указанный концепт реализован для 3D редактора Blender в виде бинарных сборок с модифицированными настройками камеры и рендеров Cycles и EEVEE, а также в виде отдельных OSL скриптов для связок 3D редактора и внешнего рендера, таких как 3ds max + VRAY или Cinema 4d + OctaneRender, поддерживающих OSL сценарии для настройки камеры https://github.com/sungreen/rcam/tree/master/OSL%20Scripts .

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published