FUSION · СПРАВОЧНИК НОД
CubeMap
CubeMap — кубическая 3D-текстура окружения
CubeMap превращает один cross-layout image или шесть отдельных face images в 3D cubemap material/texture для environment, reflection/refraction и directional texture mapping. Layout меняет сам набор входов ноды.
CubeMap
Обзор
Что делает CubeMap
CubeMap живёт в 3D texture/material domain. Его задача — не собрать красивую картинку-крест для MediaOut, а создать кубическую текстуру, которую 3D shader может выбирать по направлению.
У ноды динамическая topology. Layout = Vertical Cross или Horizontal Cross показывает один CrossImage input; Layout = Separate Images вместо него открывает шесть directional image inputs для Left, Right, Top, Bottom, Front и Back.
CrossImage — обычный 2D image source. CubeMap извлекает из него шесть квадратных faces согласно выбранному layout и хранит результат как cubemap texture.
Separate Images полезен, когда шесть направлений уже отрендерены отдельно. Blackmagic указывает, что неравные или несquare face images приводятся к общей квадратной face size; поэтому лучше нормализовать их заранее и не полагаться на скрытый rescale.
Vertical Cross ожидает развёртку с отношением сторон 3:4. Если вход не соответствует этому shape, CubeMap может crop-нуть его под ожидаемый aspect; Warn About Bad Dimensions помогает обнаружить такую ситуацию.
Horizontal Cross ожидает развёртку 4:3. Здесь также важно не путать ориентацию layout с обычным panorama/equirectangular image: lat-long panorama сама по себе не является cube cross.
CubeMap не является SphereMap converter из equirectangular 360° изображения. Если source — lat-long panorama, сначала используйте подходящий spherical/environment workflow вместо того, чтобы просто выбрать Vertical Cross.
Convention в текущем Resolve Inspector предлагает Positive Z и Negative Z. Это boundary orientation/convention для интерпретации кубической карты; точную совместимость с конкретным DCC/export convention лучше подтверждать на тестовой карте с подписанными faces.
Coordinate System = Model привязывает lookup к локальной системе объекта. Это удобно, когда cubemap texture должна вращаться вместе с object-space orientation.
Coordinate System = World ориентирует lookup по глобальной 3D-сцене. Для общего environment/reflection reference это обычно более естественная отправная точка, потому что карта не обязана следовать локальному вращению отдельного объекта.
Coordinate System = Eye связывает mapping с camera/view coordinate system. Такой режим может быть полезен для screen/view-dependent texture behavior, но его нельзя путать с настоящим world-locked environment.
Rotation Order определяет порядок Euler-поворотов texture space. Если используется только один axis, порядок почти не проявляется; при compound X/Y/Z rotation разные orders дают разные ориентации.
Rotation X/Y/Z поворачивают сам cubemap lookup, а не геометрию, камеру или lighting rig. Это правильное место для ориентации texture environment, когда scene placement уже верен.
Для быстрого разворота окружения по горизонту обычно достаточно одной оси, но нельзя универсально обещать, что это всегда Y: результат зависит от выбранных Coordinate System и Convention.
Texture Depth = Source сохраняет исходную precision цепочки. int8/int16 принудительно снижают/фиксируют integer precision, float16/float32 сохраняют больше диапазона для HDR и технических карт.
Для HDR/environment maps float16 часто разумнее int8, потому что highlights выше 1.0 и плавные градиенты могут быть важны для reflection/refraction response. float32 оправдан там, где действительно нужен дополнительный precision.
Texture Depth не превращает SDR source в HDR и не восстанавливает clipped highlights. Он определяет representation результата, а не создаёт отсутствующий динамический диапазон.
Texture Filtering Mode содержит отдельные настройки для OpenGL и Software renderer, а также LowQ/HiQ. Это означает, что один и тот же cubemap может фильтроваться по-разному в разных renderer/quality paths.
Nearest сохраняет texel boundaries и полезен для technical face-ID/debug maps, но на beauty texture может давать резкие ступени. Bilinear сглаживает локальную выборку и является безопасной базой для большинства обычных карт.
Trilinear использует более сложную фильтрацию при уменьшении/LOD, а Anisotropic лучше сохраняет detail под углом. Доступность/реальный эффект конкретного режима зависит от renderer и GPU path, поэтому финальный QC нужно делать на delivery renderer.
OpenGL LowQ/HiQ и Software LowQ/HiQ — не четыре уровня одной общей шкалы качества. Это две пары настроек для двух разных render implementations и двух quality modes.
Warn About Bad Dimensions не исправляет source. Он лишь предупреждает о несовместимых размерах; после warning нужно проверить aspect/layout и подготовить правильный input.
Material ID относится к material-domain output CubeMap и может быть записан в MatID auxiliary channel, если соответствующий pass включён в Renderer3D. Это technical ID, а не face number и не ObjectID geometry.
CubeMap output не является 2D image для прямого MediaOut. В типичном graph он идёт в Blinn/Phong/Reflect/Falloff/другой material node либо напрямую в geometry material input, а pixels появляются только после 3D geometry + Renderer3D.
Blackmagic показывает базовый graph CrossImage → CubeMap → Blinn → Shape3D. Этот пример полезен именно для понимания domain boundary: image входит в CubeMap, после него поток уже ведёт себя как material/texture data.
Для environment reflection более характерная схема — CubeMap как environment texture внутри reflective material. Такая environment mapping модель предполагает условно бесконечно далёкое окружение и не создаёт настоящих взаимных отражений между соседними 3D objects.
Если один и тот же static cubemap используется на нескольких объектах, он описывает одно и то же далёкое окружение. Он не знает, что объекты находятся рядом и должны отражать друг друга.
Чтобы диагностировать orientation, полезнее всего создать face test card: шесть ярко различимых изображений с текстом LEFT/RIGHT/TOP/BOTTOM/FRONT/BACK и стрелками Up. Это быстрее выявляет swap, mirror и Z-convention, чем реальный HDRI.
При Separate Images нужно проверять не только соответствие face, но и их внутреннюю ориентацию. Правильная картинка на неправильном повороте может дать seam, который ошибочно воспринимается как filtering problem.
Seam нельзя лечить только повышением Anisotropic. Сначала проверяются layout, face order, face rotation, одинаковый size/precision и convention; filtering настраивается уже после корректной геометрии карты.
Settings tab содержит common controls 3D texture nodes. CubeMap-specific authoring остаётся на Controls; scripting/serialized IDs перед автоматизацией следует подтверждать на target Resolve build.
Когда применять
Собрать cubemap из Vertical Cross или Horizontal Cross изображения.
Собрать cubemap из шести отдельных face renders.
Подать cubemap как environment/reflection/refraction texture в 3D material workflow.
Ориентировать environment в Model, World или Eye space.
Согласовать Positive Z/Negative Z convention с внешним DCC или renderer.
Повернуть environment texture без вращения geometry/camera.
Сохранить HDR precision через Source/float16/float32.
Отдельно настроить filtering для OpenGL и Software renderer.
Записать Material ID в auxiliary MatID pass при соответствующей настройке Renderer3D.
CubeMap в контексте
Скриншоты из статьи. Откройте изображение, чтобы рассмотреть его крупнее.
Пример для CubeMap.
Оригинальное изображениеПример для CubeMap.
Оригинальное изображениеПример для CubeMap.
Оригинальное изображениеПример для CubeMap.
Оригинальное изображение