Connexion




Poster un nouveau sujet Répondre au sujet  [ 1 message ] 
Auteur Message
 Sujet du message: Unity3D-Faire Un Cubemap
UNREAD_POSTPosté: Mer Mar 11, 2015 5:43 pm 
NooFondateur
Avatar de l’utilisateur
Inscription: Mar Jan 09, 2007 3:21 am
Messages: 1166
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);
   }


 Hors ligne
 

Afficher les messages postés depuis:  Trier par  

Poster un nouveau sujet Répondre au sujet  [ 1 message ] 


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

Panel

Haut Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Rechercher:
Aller à:  
 cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduction par: phpBB-fr.com
Dizayn Ercan Koc