NodeWorld

Miroirs

Depuis SDK 0.2.1

Un miroir est un script FL# : une caméra créée par le script fait le rendu du reflet dans une texture, et le shader du miroir l'affiche. Le monde d'exemple en a un complet, PlanarMirror.cs avec le shader NodeWorld Example/Mirror : pars de lui.

En mettre un dans ton monde

  1. Importe l'exemple Example World (installer le SDK), puis copie Flux/PlanarMirror.cs et Shaders/Mirror.shader dans les dossiers de ton monde : le script dans ton dossier de scripts FL#, le shader n'importe où dans Assets. Ils sont à toi, tu peux les changer.
  2. Ajoute PlanarMirror.cs aux Flux Sharp Sources de ta NW World Config.
  3. Crée un Quad : sa face visible est le miroir. Donne-lui un matériau avec le shader NodeWorld Example/Mirror.
  4. Sur le quad, Add Component, NodeWorld, FL# Script, puis Read the scripts et choisis NodeWorldExample.PlanarMirror (ou le nom de classe que tu lui as donné).
  5. Pose une Reflection Probe près du miroir : le shader l'affiche tant que le script ne fait pas le rendu.

Ses champs

ChampCe qu'il fait
maxDistanceLe reflet n'est rendu que tant que le joueur se tient devant le miroir, plus près que cette distance (8 m), et le regarde. Sinon, le miroir affiche la reflection probe et ne coûte rien.
resolutionLa largeur du reflet, en pixels (1024). Baisse-la pour un petit miroir ou pour le Quest.
layersLes couches que montre le reflet (toutes).
showLocalPlayerHeadLe joueur y voit sa propre tête (activé).

En VR, le script fait une image par œil : le reflet a de la profondeur.

Un miroir des joueurs seulement

Mets layers sur les deux couches des avatars des joueurs : 384, soit 1 << 7 (LocalPlayer, ton avatar) plus 1 << 8 (RemotePlayer, les autres). Le reflet ne montre alors que les avatars, sur le ciel (le clearFlags d'une nouvelle caméra) ; pour effacer avec une couleur à la place, règle clearFlags et backgroundColor sur la caméra du script (caméras). Voir les couches.

Ce qu'il coûte

Chaque miroir en vue refait le rendu de la scène, une fois par œil en VR. Garde peu de miroirs au même endroit, garde maxDistance courte, et baisse resolution sur Quest : le script peut lire World.isMobile (Quest).

Le script ne tourne que dans le jeu des joueurs ([ClientOnly]) : un miroir n'est jamais sur le serveur.