El componente Reflection Probe se puede agregar a cualquier objeto en la escena pero normalmente va a desear agregar cada probe a un GameObject vacío por separado. El flujo de trabajo habitual es:
Para ver los reflejos, necesitará al menos un objeto reflectante en la escena. Un simple objeto de prueba se puede crear de la siguiente manera:
La esfera puede ahora mostrar las reflexiones obtenidas de los probes. Un arreglo simple con un solo probe es suficiente para ver el efecto básico de las reflexiones.
Finalmente, los probes deben ser baked antes de que las reflexiones se hagan visibles. Si tiene activada la opción Auto en la Lighting window(este es el ajuste predeterminado), las reflexiones se actualizarán a medida que posiciona o cambia objetos en la escena, aunque la respuesta no es instantánea. Si desactiva el baking automático, debe hacer clic en el botón Bake en el inspector del Reflection Probe para actualizar los probes. La razón principal para desactivar el bake automático es que el proceso de bake puede tomar bastante tiempo para una escena complicada con muchos probes.
La posición de un probe se determina principalmente por la posición de su GameObject por lo que simplemente puede arrastrar el objeto a la ubicación deseada. Una vez hecho esto, debe configurar la zona de efecto del probe; Se trata de una forma de cuadro alineada con el eje cuyas dimensiones son configuradas por la propiedad Size. Puede configurar los valores de tamaño directamente o habilitar el modo de edición de tamaño en el inspector y arrastrar los lados del cuadro en la vista de escena (consulte la página del componente Reflection Probe para obtener más detalles). Las zonas del conjunto completo de probes deberían cubrir colectivamente todas las áreas de la escena en las que podría pasar un objeto reflectante.
Usted debe colocar los probes cerca de cualquier objeto grande en la escena que se reflejaría notablemente. Las áreas alrededor de los centros y esquinas de las paredes son buenas ubicaciones candidatas para los probes. Los objetos más pequeños pueden requerir probes cercanos si tienen un efecto visual fuerte. Por ejemplo, es probable que desee que las llamas de una fogata se reflejen, incluso si el objeto en sí es pequeño y de otra manera insignificante.
Cuando tiene probes en todos los lugares apropiados, necesita definir la zona de efecto para cada probes, lo que puede hacer con la propiedad Size como se mencionó anteriormente. Una pared puede necesitar sólo una zona de probe única a lo largo de la mayor parte de su longitud (al menos si tiene un aspecto bastante uniforme), pero la zona podría ser relativamente estrecha en la dirección perpendicular a la pared; Esto implicaría que la pared sólo es reflejada por objetos que están bastante cerca de ella. Un espacio abierto cuya apariencia varía poco de un lugar a otro a menudo puede ser cubierto por un solo probe. Tenga en cuenta que la zona de un probe está alineada con los ejes principales del mundo (X, Y y Z) y no se puede girar. Esto significa que a veces puede ser necesario un grupo de probes a lo largo de una pared uniforme si no está alineada con el eje.
Por defecto, la zona de efecto de un probe está centrada en su punto de vista, pero puede que ésta no sea la posición ideal para capturar el reflection cubemap. Por ejemplo, la zona del probe para una pared muy alta podría extenderse a cierta distancia de la pared, pero es posible que desee que la reflexión se capture desde un punto cercano a ella en lugar del centro de la zona. Opcionalmente puede agregar un desplazamiento al punto de vista utilizando la propiedad Probe Origin (es decir, el origen es la posición en el espacio local del GameObject que se genera desde la vista de cubemap del probe). Usando esto, usted puede fácilmente colocar el punto de vista en cualquier lugar dentro de la zona de efecto o de hecho fuera de la zona por completo.
Sería muy difícil posicionar las zonas de los reflection probes sin que se superpongan y, afortunadamente, no es necesario hacerlo. Sin embargo, esto deja la cuestión de elegir qué sonda utilizar en las áreas de superposición. De forma predeterminada, Unity calcula la intersección entre la caja delimitadora del objeto reflectante y cada una de las zonas probe superpuestas; La zona que tiene el mayor volumen de intersección con el cuadro delimitador es la que será seleccionada.
Puede modificar el cálculo utilizando las propiedades de Importancia de los probes. Los probes con un valor de mayor importancia tienen prioridad sobre las de menor importancia dentro de las zonas de superposición. Esto es útil, digamos, si usted tiene una pequeña zona probe que está contenida completamente dentro de una zona más grande (es decir, la intersección de la caja delimitadora del carácter con la zona de inclusión siempre podría ser más grande y por lo que la pequeña zona nunca se utilizaría).
Si su plataforma de destino utiliza Shader Model 3 o uno mejor, tiene la opción de blending entre probes en las áreas donde se superponen sus zonas. Con la mezcla habilitada, Unity poco a poco desvanece el cubemap de un probe mientras se desvanece en la otra como el objeto reflexivo que pasa de una zona a la otra. Esta transición gradual evita la situación en la que un objeto distintivo repentinamente “aparece” en la reflexión cuando un objeto cruza el límite de la zona.
El blending (mezcla) se controla utilizando la propiedad Reflection Probes del componente Mesh Renderer. Hay dos opciones de blending (mezcla) que están disponibles:
When probes have equal Importance values, the blending weight for a given probe zone is calculated by dividing its intersection (volume) with the object’s bounding box by the sum of all probes’ intersections with the box. For example, if the box intersects probe A’s zone by 1.0 cubic units and intersects probe B’s zone by 2.0 cubic units then the blending values will be:
In other words, the blend will incorporate 33% of probe A’s reflection and 67% of probe B’s reflection.
The calculation must be handled slightly differently in the case where one probe is entirely contained within the other, since the inner zone overlaps entirely with the outer. If the object’s bounding box is entirely within the inner zone then that zone’s blending weight is 1.0 (ie, the outer zone is not used at all). When the object is partially outside the inner zone, the intersection volume of its bounding box with the inner zone is divided by the total volume of the box. For example, if the intersection volume is 1.0 cubic units and the bounding box’s volume is 4.0 cubic units, then the blending weight of the inner probe will be 1.0 / 4.0 = 0.25. This value is then subtracted from 1.0 to get the weight for the outer probe which in this case will be 0.75.
When one probe involved in the blend has a higher Importance value than another, the more important probe overrides the other in the usual way.