noocrypte.net http://noozone.free.fr/noocrypte/ |
|
Unity3D-Faire Un Cubemap http://noozone.free.fr/noocrypte/viewtopic.php?f=47&t=7236 |
Page 1 sur 1 |
Auteur: | yann.minh [ Mer Mar 11, 2015 5:43 pm ] |
Sujet du message: | Unity3D-Faire Un Cubemap |
http://docs.unity3d.com/ScriptReference ... bemap.html Créer un script (java) avec ce code : Code: // 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!"); } } Nommer le script "RenderCubemapWizard" et Mettre ce script dans le dossier Editor du dossier asset, s'il n'y a pas de dossier Editor en créer un. A partir de ce moment, dans le bas du menu "game object" devrait apparaitre la fonction "Render in to Cubemap". Créer dans le dossier asset une cubemap : menu contextuel > create > cubemap Et créer un nouveau matériaux, et ajuster son Shader dans le type Reflective/Diffuse Sélectionner Render in to cubemap dans le menu game object une fenêtre apparait avec trois cases a informer : 1) Script 2) Render from position 3) Cubemap la case script n'est pas obligatoire créer un objet (cube) dans le monde qui servira de position pour le point de vue des reflets de la cubemap, et poser cet objet dans la fenêtre 2 : Render from position sélectionner la Cubemap précédemment créée dans le dossier asset, et la mettre dans la case 3 : Cubemap. Cliquer sur Render en bas à droite de la fenêtre. Normalement si tout se passe bien, l'objet Cubemap créé dans le dossier Asset devrait avoir ses six faces. Pour augmenter la qualité de la réflexion, augmenter la valeur face size dans les attributs du cubemap (fenêtre Inspector) 64 à 128, 256, 1024 ou 2048... Affecter le matériaux précédemment créé aux objets devant avoir une réflexion dans le monde. ----------- mettre ce script dans un objet qui doit réfléter son environnement . Code: // 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); } |
Page 1 sur 1 | Heures au format UTC [ Heure d’été ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |