• Este proyecto es un proyecto que le tengo mucho amor y cariño por la historia que lleva. Pronto traeré actualizaciones, no los he olvidado! Atte. gAN++

[Guia] HINT SKIP y Viseleaves

devita

New member
La textura hint se usa para dividir los "visleaves", osea que antes de saber donde usarla tenemos que saber definir visleaves.

Visleaves

Cada visleaf (a veces tambien nombrado como leaf solamente) es un determinado volumen de un mapa que define un "sector" de superficies visibles. Cada superficie visible de un mapa es parte de un visleaf o de otro. Los visleafs son usados prinsipalmente por el Engine Renderizador (antes de renderizar cada parte) para saber cuales partes del mapa pueden necesitar renderizarse en la pantalla. Cuando cualquier parte de un visleaf es potencialmente visible desde cualquier parte de otro, el contenido entero de ese visleaf es considerado para renderizar.
Los visleafs son generados automaticamente desde el BSP por la herramienta VIS. Cada superficie (interna) de un visleaf es o un brush world (es decir sin entidad), o un "Portal" a un visleaf adyacente.

Textura HINT

Esta textura es usada para dividir los visleaves durante el tiempo de compilacion, como una forma de optimizar los resultados de la etapa de compilacion del VIS.
Son comunmente llamados brushes hint, ya que son colocados en el mapa de la misma manera que un brush world normal. El plano de la textura hint esta definido por los lados del brush que esten cubiertos por textura SKIP. Multiples planos de HINT pueden ser definidos texturizando multiples lados del brush, o usando multiples brushes. Los otros lados del brush que no actuan como planos HINT, deven ser cubiertos con textura SKIP, esta caras seran ignoradas por el compilador.
Los brushes hint son automaticamente agrupados a su propio visgroup, asi que se pueden esconder facilmente.


Por que y cuando dividimos los visleaves?

A veces, alunas formas son preferidas sobre otras simplemente porque esas formas hacen que esos leaves puedan ver menos a otros leaves. Cuando un leaf no es visto, el contenido del leaf no es dibujado, aumentando la velocidad del renderizado.
Las siguientes imagenes ilustran la importancia de la division del visleaf,y al mismo tiempo, dan un ejemplo de donde son utiles las texturas hint.

Esto es la vista de costado de un solo cuarto con dos player_starts y unas tuberias separadas por una pared

hintexample1.jpg


Cuando un jugador esta en cualquiera de los dos player_starts, el engine debe considerar si los brushes del lado derecho de la pared (tuberias) deben ser separadas o no. Esto ocurre por que el bsp.exe no dividio el nivel en leaves de la forma mas eficientemente posible

Asi seria la division de leaves del ejemplo, hecha por el engine y sin usar la textura HINT:

hintexample2.jpg


Al ser tan altos los leafs que llegan hasta el techo, el leaf de la izquierda (el de los players) puede "ver" directamente el leaf del lado derecho de las tuberias. Asi que el leaf y el contenido (las tuberias) seran dibujadas. Una lastima, por que esas tuberias no pueden ser vistas desde la perspectiva del jugador (estan atras de la pared en el centro). Podemos usar HINTS para mejorar el proceso de division de leaves:

hintexample3.jpg


La linea blanca es uno de los lados del brush de textura HINT. Lo que hace es forzar al bsp a dividir nuestro mapa en tres leaves. En este caso, no puede haber una sola linea dibujada desde el leaf donde estan los players al leaf donde estan las tuberias. Esa es la esencia del HINTEADO
Los Skybox (cielo) a veces son un poco altos, causando que el jugador pueda ver muchas mas cosas en una ciudad (por ejemplo) por que el leaf en el que esta puede ver por sobre las casas (como en el ejemplo de arriva). Esa es otra buena situacion donde uno puede usar HINTS para detener la visibilidad.



El hint en las esquinas

Aca hay una vista desde arriva de una tipica esquina. Hay dos player_starts, y los cilindros en cada esquina representan cosas que seran dibujadas por el engine. El objetivo de HINTEAR en este caso es evitar renderizar objetos cuando no es necesario.
Uno piensa que el bsp se asegurara de que los jugadores no vean los objetos pertenecientes al otro. Eso no es verdad. El bsp va a dividir este espacio en dos leaves, ya sea cortando los leaves a lo largo de la linea rosa o la marron (dependiendo de cual cara de brush corta primero)
De cualquiera de las dos maneras, las dos esquinas tienen una linea de vista directa una con la otra, por lo que los contenidos del rincon opuesto siempre van a renderizarse al estar en el otro rincon.

200pxhintexample5.jpg


Esto puede ser altamente mejorado simplemente al colocar un brush HINT en la esquina, dividiendo nuestro nuvel en tres leaves, (haciendo un total de tres en vez de dos) pero asegurandonos de que las cosas del lado de un jugador no se renderize desde el punto de vista del otro jugador.
No hay linea de vista directa entre los leaves rojo y marron, asi es evitado el renderizado innecesario. Sin embargo, si uno de los jugadores entra al leaf verde, va a poder ver sus cosas y las cosas del otro jugador renderizadas. Esto no se puede evitar usando HINTS.

200pxhintexample4.jpg


Aca hay algunos ejemplos mas de como usar hints. En todos los casos el objetivo es esconder a los player_start uno del otro. Los tres de arriva funcionan como deberian, el de la izquierda incluso muestra que no importa si es un solo brush HINT, mientras su algulo sea menor que 180º. Uno podria facilmente dibujar una linea recta de leaf a leaf, resultando en un HINT mal hecho.
Cuando la esquina del pasillo es de 180º (como en el ejemplo de arriva al medio), dos hints seran suficientes. De hecho, pueden ponerse mas cerca de los players, pero eso daria menos efectividad (mas cosas van a ser dibujadas "alrededor de la esquina"). En el ejemplo del medio de abajo, los hints fueron bajados y el bsp es forzado a cortar el visleaf de arriva, por que los visleaves no pueden ser concavos. No importa como corte esta esquina el bsp, los HINTS siempre van a ser menos efectivos y van a crear leaves extras (mas trabajo para el VIS). En el ejemplo, el player de la izquierda puede ver los leaves 1 y 2, pero el de la derecha va a ver los tres leaves.
Las dos figuras de la derecha muestran que se deben hacer las cosas lo mas simples posibles. Si un HINT sera suficiente, como en el ejemplo de arriva, es mejor asi. Y,obiamente, los HINTS no deben ser usados si no son necesarios, como en la figura de abajo. Como se ve, el bsp no puede crear leaves que les permitan a los jugadores verse unos a otros,asi que no hay necesidad de usar HINTS.
Al no tener un coste directo de renderizacion durante el juego de un mapa, cuando son usadas sabiamente son una manera primeria para acelerar tu mapa y controlar tu visibilidad

hinte.jpg



Gui By Santi para MZ
 

LeLL*

New member
La textura HINT se usa para crear zonas visibles/no visibles (?) manualmente. Que es VIS? Si te fijas en ZHLT, hay 4 programas que son: CSG, BSP, VIS, RAD.

Acá explica que hace cada uno: http://www.mapping-zone.net/foro/showthread.php?t=54

Pero en síntesis, cuando compilas el mapa sin VIS o cuando tiene LEAK y el VIS te tira error, verás que es mas lento el mapa (baja el FPS). Eso es porque carga todo el mapa entero en tu memoria, y eso hace que sea lento. El VIS, lo que hace es que dividen automáticamente en zona (?) donde es visible y no es visible cuando un jugador está en una posición X (un lugar).
Pero algunas veces, como es automático, no es perfecto.
Por eso, utilizar la textura HINT es una forma "manual (no automático)" de lo que he dicho antes.
Esto no es algo para principiante, porque es algo bastante complicado. Hasta yo no consigo manejar esto perfectamente.

Podes encontrar en torntextures.wad
 
Arriba