返回介绍

Camera.RenderToCubemap 渲染到立方图

发布于 2019-12-18 15:37:28 字数 5568 浏览 840 评论 0 收藏 0

JavaScript => RenderToCubemap(cubemap: Cubemap, faceMask: int = 63): bool;
C# => bool RenderToCubemap(Cubemap cubemap, int faceMask = 63);

Description 描述

Render into a cubemap from this camera.

从这个相机渲染到一个立方贴图。

This is mostly useful in the editor for “baking” static cubemaps of your scene. See wizard example 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).

相机的位置,清除标志和裁剪面距离将被使用来渲染到立方贴图表面,FaceMask是一比特域,表示那个立方贴图面应该被渲染,每个位对应于一个面。比特数是Cubemapface枚举的整型值。默认的所有六个立方贴图面都被渲染(默认值63的低6位是打开的)。

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

如果渲染失败这个函数将返回false,某些显卡不支持这个函数。

Note: This is a Unity PRO feature.

注意:这是一个Unity 专业版属性

参见: Cubemap assets, Reflective shaders.

JavaScript:

	// 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.camera.RenderToCubemap( cubemap );
 
			// destroy temporary camera
			DestroyImmediate( go );
		}
 
		@MenuItem("GameObject/Render into Cubemap")
		static function RenderCubemap () {
			ScriptableWizard.DisplayWizard.<RenderCubemapWizard>(
				"Render cubemap", "Render!");
		}
	}

JavaScript => RenderToCubemap(cubemap: RenderTexture, faceMask: int = 63): bool;
C# => bool RenderToCubemap(RenderTexture cubemap, int faceMask = 63);

Description 描述

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.

这个用于实时反射到立方贴图渲染纹理。这是非常耗时的,尤其是所有六个立方贴图面在每一帧中都被渲染。

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).

相机的位置,清除标志和裁剪面距离将被使用来渲染到立方贴图表面,FaceMask是一比特域,表示那个立方贴图面应该被渲染,每个位对应于一个面。比特数是Cubemapface枚举的整型值。默认的所有六个立方贴图面都被渲染(默认值63的低6位是打开的)。

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

如果渲染失败这个函数将返回false,某些显卡不支持这个函数。

Note: This is a Unity PRO feature.

注意:这是一个Unity 专业版属性

参见: RenderTexture.isCubemap, Reflective shaders.

JavaScript:

		// 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.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;
			renderer.sharedMaterial.SetTexture ("_Cube", rtex);
		}
 
		cam.transform.position = transform.position;
		cam.RenderToCubemap (rtex, faceMask);
	}	function OnDisable () {
		DestroyImmediate (cam);
		DestroyImmediate (rtex);
	}

Camera

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文