言語: 日本語
  • C#
  • JS
  • Boo

スクリプト言語

お好みのスクリプト言語を選択すると、サンプルコードがその言語で表示されます。

Camera.RenderToCubemap

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Switch to Manual
public function RenderToCubemap(cubemap: Cubemap, faceMask: int = 63): bool;
public bool RenderToCubemap(Cubemap cubemap, int faceMask = 63);
public def RenderToCubemap(cubemap as Cubemap, faceMask as int = 63) as bool

Description

このカメラから静的のキューブマップにレンダリングします。

この関数はEditor内でシーンの静的キューブマップに"焼き付ける"ために最も役に立ちます。 下記のウィザード例を見てください。もしキューブマップをリアルタイムでアップデートしたい場合、 isCubemap フラグを立てたRenderTextureを変形するRenderToCubemapを使用します。以下を参照してください。 カメラの位置は、クリアフラグとクリッピング平面距離のキューブマップの各面のレンダリングに使用されます。 /faceMask/ はキューブマップの各面にレンダリングされるべきかを示すビットフィールドです。 設定されている各ビットは面に対応しています。ビット番号は CubemapFace 列挙のint値です。 デフォルトでは6つの全ての面でレンダリングされます(デフォルト値は63で下位6ビットを持ちます) この関数はキューブマップのレンダリングに失敗した時 false を返します。 一部のグラフィックスハードウェアでは機能がサポートされていません。 注意: これはUnity PROの機能です。 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.camera.RenderToCubemap( cubemap );
			
			// destroy temporary camera
			DestroyImmediate( go );
		}
		
		@MenuItem("GameObject/Render into Cubemap")
		static function RenderCubemap () {
			ScriptableWizard.DisplayWizard.<RenderCubemapWizard>(
				"Render cubemap", "Render!");
		}
	}
public function RenderToCubemap(cubemap: RenderTexture, faceMask: int = 63): bool;
public bool RenderToCubemap(RenderTexture cubemap, int faceMask = 63);
public def RenderToCubemap(cubemap as RenderTexture, faceMask as int = 63) as bool

Description

このカメラからキューブマップにレンダリングします。

これはキューブマップレンダーテクスチャのリアルタイムリフレクションで使用します。 キューブマップ6つすべての面で毎フレームレンダリングした場合、特に高価なものとなってしまいます。 カメラの位置は、クリアフラグとクリッピング平面距離のキューブマップの各面のレンダリングに使用されます。 /faceMask/ はキューブマップの各面にレンダリングされるべきかを示すビットフィールドです。 設定されている各ビットは面に対応しています。ビット番号は CubemapFace 列挙のint値です。 デフォルトでは6つの全ての面でレンダリングされます(デフォルト値は63で下位6ビットを持ちます) この関数はキューブマップのレンダリングに失敗した時 false を返します。 一部のグラフィックスハードウェアでは機能がサポートされていません。 注意: これはUnity PROの機能です。 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.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);
	}