このカメラから静的のキューブマップにレンダリングします。
この関数は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!"); } }
このカメラからキューブマップにレンダリングします。
これはキューブマップレンダーテクスチャのリアルタイムリフレクションで使用します。
キューブマップ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); }