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

スクリプト言語

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

Camera.RenderToCubemap

Switch to Manual
public function RenderToCubemap(cubemap: Cubemap, faceMask: int = 63): 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;

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);
	}