Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Объявление

public bool RenderToCubemap(Cubemap cubemap, int faceMask);

Параметры

cubemap Кубическая карта для рендеринга.
faceMask Битовая маска, определяющая, на какую из шести граней выполняется рендеринг.

Возвращает

bool False, если рендеринг завершается сбоем, иначе true.

Описание

Визуализация в статическую кубическую карту с этой камеры.

Эта функция в основном полезна в редакторе для «запекания» статических кубических карт вашей сцены. См. пример мастера ниже. Если вам нужна кубическая карта, обновляемая в реальном времени, используйте вариант RenderToCubemap, в котором используется RenderTexture с измерением кубической карты, см. ниже.

Положение камеры, четкие флажки и расстояния между плоскостями отсечения будут использоваться для рендеринга граней кубической карты. faceMask – это битовое поле, указывающее, в какие грани кубической карты следует отображать. Каждый установленный бит соответствует лицу. Битовые числа — это целые значения перечисления CubemapFace. По умолчанию будут визуализированы все шесть граней кубической карты (значение по умолчанию 63 включает шесть младших битов).

Эта функция вернет false, если рендеринг в кубическую карту завершится ошибкой. Некоторое графическое оборудование не поддерживает эту функцию.

Обратите внимание, что ReflectionProbes — это более продвинутый способ выполнения отражений в реальном времени. Кубические карты можно создавать в редакторе, выбрав опцию Create->Legacy.

Смотрите так же: Cubemap assets, Reflective shaders.

using UnityEngine; using UnityEditor; using System.Collections; public class RenderCubemapWizard : ScriptableWizard { public Transform renderFromPosition; public Cubemap cubemap; void OnWizardUpdate() { string helpString = "Select transform to render from and cubemap to render into"; bool isValid = (renderFromPosition != null) && (cubemap != null); } void OnWizardCreate() { // create temporary camera for rendering GameObject go = new GameObject("CubemapCamera"); go.AddComponent<Camera>(); // place it on the object go.transform.position = renderFromPosition.position; go.transform.rotation = Quaternion.identity; // render into cubemap go.GetComponent<Camera>().RenderToCubemap(cubemap); // destroy temporary camera DestroyImmediate(go); } [MenuItem("GameObject/Render into Cubemap")] static void RenderCubemap() { ScriptableWizard.DisplayWizard( "Render cubemap", "Render!"); } }

Объявление

public bool RenderToCubemap(RenderTexture cubemap, int faceMask);

Параметры

faceMask Битовое поле, указывающее, какие грани кубической карты должны быть отображены в.
cubemap Текстура для рендеринга.

Возвращает

bool False, если рендеринг завершается сбоем, иначе true.

Описание

Визуализация в кубическую карту с этой камеры.

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

Положение камеры, четкие флажки и расстояния между плоскостями отсечения будут использоваться для рендеринга граней кубической карты. faceMask – это битовое поле, указывающее, в какие грани кубической карты следует отображать. Каждый установленный бит соответствует лицу. Битовые числа — это целые значения перечисления CubemapFace. По умолчанию будут визуализированы все шесть граней кубической карты (значение по умолчанию 63 включает шесть младших битов).

Эта функция вернет false, если рендеринг в кубическую карту завершится ошибкой. Некоторое графическое оборудование не поддерживает эту функцию.

Обратите внимание, что для параметра RenderTexture RenderTexture.dimension должно быть задано значение TextureDimension.Cube. Это показано в следующем примере.

Смотрите так же: RenderTexture.isCubemap, Reflective shaders.

using UnityEngine; [ExecuteInEditMode] public class Example : MonoBehaviour { // Attach this script to an object that uses a Reflective shader. // Realtime reflective cubemaps! int cubemapSize = 128; bool oneFacePerFrame = false; Camera cam; RenderTexture renderTexture; void Start() { // render all six faces at startup UpdateCubemap(63); } void OnDisable() { DestroyImmediate(cam); DestroyImmediate(renderTexture); } void LateUpdate() { if (oneFacePerFrame) { var faceToRender = Time.frameCount % 6; var faceMask = 1 << faceToRender; UpdateCubemap(faceMask); } else { UpdateCubemap(63); // all six faces } } void UpdateCubemap(int faceMask) { if (!cam) { GameObject obj = new GameObject("CubemapCamera", typeof(Camera)); obj.hideFlags = HideFlags.HideAndDontSave; obj.transform.position = transform.position; obj.transform.rotation = Quaternion.identity; cam = obj.GetComponent<Camera>(); cam.farClipPlane = 100; // don't render very far into cubemap cam.enabled = false; } if (!renderTexture) { renderTexture = new RenderTexture(cubemapSize, cubemapSize, 16); renderTexture.dimension = UnityEngine.Rendering.TextureDimension.Cube; renderTexture.hideFlags = HideFlags.HideAndDontSave; GetComponent<Renderer>().sharedMaterial.SetTexture("_Cube", renderTexture); } cam.transform.position = transform.position; cam.RenderToCubemap(renderTexture, faceMask); } }

Объявление

public bool RenderToCubemap(RenderTexture cubemap, int faceMask, Camera.MonoOrStereoscopicEye stereoEye);

Параметры

cubemap Текстура для рендеринга.
faceMask Битовое поле, указывающее, в какие грани кубической карты следует отображать. Установите целочисленное значение 63, чтобы визуализировать все лица.
stereoEye Глаз камеры, соответствующий левому или правому глазу для стереоскопического рендеринга или ни одному из них для нестереоскопического рендеринга..

Возвращает

bool False, если рендеринг завершается сбоем, иначе true.

Описание

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

Установка для параметра stereoEye значения Camera.MonoOrStereoscopicEye.Left или Camera.MonoOrStereoscopicEye.Right отображает точку зрения левого или правого глаза стереоизображения 360 с надлежащим преобразованием мирового пространства. Установка для stereoEye значения Camera.MonoOrStereoscopicEye.Mono обеспечивает моноскопическое представление сцены. После рендеринга отдельных левой и правой кубических карт их можно преобразовать в равнопрямоугольные панорамные изображения, занимающие одну текстуру.

При рендеринге любой стороны стереоскопического изображения камера использует значение stereoSeparation в качестве межзрачкового расстояния (IPD), если не включена поддержка VR. При использовании камеры VR IPD устройства VR переопределяет значение stereoSeparation.

Unity использует положение камеры, флажки очистки и расстояния между плоскостями отсечения для рендеринга граней кубической карты. Камера поворачивается для каждого лица. faceMask – это битовое поле, указывающее, в какие грани кубической карты следует отображать. Каждый установленный бит соответствует лицу. Битовые числа — это целые значения перечисления CubemapFace. Для захвата стереоизображения 360 должны быть отрисованы все шесть граней кубической карты (установите для facemask значение 63).

Эта функция вернет false, если рендеринг в кубическую карту завершится ошибкой. Некоторое графическое оборудование не поддерживает эту функцию.

Обратите внимание, что для параметра RenderTexture RenderTexture.dimension должно быть задано значение TextureDimension.Cube.

Смотрите так же: RenderTexture.isCubemap, Cubemap.

using UnityEngine; using UnityEngine.Rendering; //attach this script to your camera object public class CreateStereoCubemaps : MonoBehaviour { public RenderTexture cubemapLeftEye; public RenderTexture cubemapRightEye; public RenderTexture equirect; public bool renderStereo = true; public float stereoSeparation = 0.064f; void Start() { cubemapLeftEye = new RenderTexture(1024, 1024, 24, RenderTextureFormat.ARGB32); cubemapLeftEye.dimension = TextureDimension.Cube; cubemapRightEye = new RenderTexture(1024, 1024, 24, RenderTextureFormat.ARGB32); cubemapRightEye.dimension = TextureDimension.Cube; //equirect height should be twice the height of cubemap equirect = new RenderTexture(1024, 2048, 24, RenderTextureFormat.ARGB32); } void LateUpdate() { Camera cam = GetComponent<Camera>(); if (cam == null) { cam = GetComponentInParent<Camera>(); } if (cam == null) { Debug.Log("stereo 360 capture node has no camera or parent camera"); } if (renderStereo) { cam.stereoSeparation = stereoSeparation; cam.RenderToCubemap(cubemapLeftEye, 63, Camera.MonoOrStereoscopicEye.Left); cam.RenderToCubemap(cubemapRightEye, 63, Camera.MonoOrStereoscopicEye.Right); } else { cam.RenderToCubemap(cubemapLeftEye, 63, Camera.MonoOrStereoscopicEye.Mono); } //optional: convert cubemaps to equirect if (equirect == null) return; if (renderStereo) { cubemapLeftEye.ConvertToEquirect(equirect, Camera.MonoOrStereoscopicEye.Left); cubemapRightEye.ConvertToEquirect(equirect, Camera.MonoOrStereoscopicEye.Right); } else { cubemapLeftEye.ConvertToEquirect(equirect, Camera.MonoOrStereoscopicEye.Mono); } } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3