Version: 5.3 (switch to 5.4b)
IdiomaEnglish
  • C#
  • JS

Idioma de script

Selecciona tu lenguaje de programación favorito. Todos los fragmentos de código serán mostrados en este lenguaje.

Camera.RenderToCubemap

Sugiere un cambio

¡Éxito!

Gracias por ayudarnos a mejorar la calidad de la documentación de Unity. A pesar de que no podemos aceptar todas las sugerencias, leemos cada cambio propuesto por nuestros usuarios y actualizaremos los que sean aplicables.

Cerrar

No se puedo enviar

Por alguna razón su cambio sugerido no pudo ser enviado. Por favor <a>intente nuevamente</a> en unos minutos. Gracias por tomarse un tiempo para ayudarnos a mejorar la calidad de la documentación de Unity.

Cerrar

Cancelar

Cambiar al Manual
public function RenderToCubemap(cubemap: Cubemap, faceMask: int = 63): bool;
public bool RenderToCubemap(Cubemap cubemap, int faceMask = 63);

Parámetros

cubemap The cube map to render to.
faceMask A bitmask which determines which of the six faces are rendered to.

Valor de retorno

bool False is rendering fails, else true.

Descripción

Render into a static cubemap from this camera.

This function is mostly useful in the editor for "baking" static cubemaps of your scene. See wizard example below. If you want a realtime-updated cubemap, use RenderToCubemap variant that uses a RenderTexture with isCubemap flag, see below.

Camera's position, clear flags and clipping plane distances will be used to render into cubemap faces. faceMask is a bitfield indicating which cubemap faces should be rendered into. Each bit that is set corresponds to a face. Bit numbers are integer values of CubemapFace enum. By default all six cubemap faces will be rendered (default value 63 has six lowest bits on).

This function will return false if rendering to cubemap fails. Some graphics hardware does not support the functionality.

Note also that ReflectionProbes are a more advanced way of performing realtime reflections. Cubemaps can be created in the editor by selecting the Create->Legacy option.

See Also: Cubemap assets, Reflective shaders.

	// Render scene from a given point into a static cube map.
	// Place this script in Editor folder of your project.
	// Then use the cubemap with one of Reflective shaders!
	class RenderCubemapWizard extends ScriptableWizard {
		var renderFromPosition : Transform;
		var cubemap : Cubemap;
		
		function OnWizardUpdate () {
			helpString = "Select transform to render from and cubemap to render into";
			isValid = (renderFromPosition != null) && (cubemap != null);
		}
		
		function OnWizardCreate () {
			// create temporary camera for rendering
			var go = new GameObject("CubemapCamera", 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 function RenderCubemap () { ScriptableWizard.DisplayWizard.<RenderCubemapWizard>( "Render cubemap", "Render!"); } }
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<RenderCubemapWizard>( "Render cubemap", "Render!"); } }

public function RenderToCubemap(cubemap: RenderTexture, faceMask: int = 63): bool;
public bool RenderToCubemap(RenderTexture cubemap, int faceMask = 63);

Parámetros

faceMask A bitfield indicating which cubemap faces should be rendered into.
cubemap The texture to render to.

Valor de retorno

bool False is rendering fails, else true.

Descripción

Render into a cubemap from this camera.

This is used for real-time reflections into cubemap render textures. It can be quite expensive though, especially if all six cubemap faces are rendered each frame.

The Camera's position, clear flags and clipping plane distances will be used to render into cubemap faces. faceMask is a bitfield indicating which cubemap faces should be rendered into. Each bit that is set corresponds to a face. Bit numbers are integer values of CubemapFace enum. By default all six cubemap faces will be rendered (default value 63 has six lowest bits on).

This function will return false if rendering to cubemap fails. Some graphics hardware does not support the functionality.

Note that the RenderTexture must have isCubemap set to true. This is illustrated in the example following.

See Also: RenderTexture.isCubemap, Reflective shaders.

	// Attach this script to an object that uses a Reflective shader.
	// Realtime reflective cubemaps!

@script ExecuteInEditMode

var cubemapSize = 128; var oneFacePerFrame = false; private var cam : Camera; private var rtex : RenderTexture;

function Start () { // render all six faces at startup UpdateCubemap( 63 ); }

function LateUpdate () { if (oneFacePerFrame) { var faceToRender = Time.frameCount % 6; var faceMask = 1 << faceToRender; UpdateCubemap (faceMask); } else { UpdateCubemap (63); // all six faces } }

function UpdateCubemap (faceMask : int) { if (!cam) { var go = new GameObject ("CubemapCamera", Camera); go.hideFlags = HideFlags.HideAndDontSave; go.transform.position = transform.position; go.transform.rotation = Quaternion.identity; cam = go.GetComponent.<Camera>();; cam.farClipPlane = 100; // don't render very far into cubemap cam.enabled = false; } if (!rtex) { rtex = new RenderTexture (cubemapSize, cubemapSize, 16); rtex.isCubemap = true; rtex.hideFlags = HideFlags.HideAndDontSave; GetComponent.<Renderer>().sharedMaterial.SetTexture ("_Cube", rtex); } cam.transform.position = transform.position; cam.RenderToCubemap (rtex, faceMask); }

function OnDisable () { DestroyImmediate (cam); DestroyImmediate (rtex); }