Cubemaps

From Valve Developer Community
Jump to: navigation, search
English Français Русский
Env cubemap.png
Reflexiones especulares.

Muchos materiales reflectantes deben combinarse con datos externos para que el motor de Source puedan generar correctamente su apariencia. Estos datos se almacenan como Cubemap (Mapa de cubos), una textura que representa una representación tridimensional de un area. El motor Source usa entidades env_cubemap como puntos de muestra para generar estas texturas, y guardar los cubemaps dentro del archivo .bsp de cada mapa. Al procesar materiales especulares y cartografiados por el entorno, los utiliza para generar entornos con mayor precisión. En otras palabras, un cubemap crea las texturas que reflejará una superficie reflectante.

Note:Portal 2 y Team Fortress 2 tienen problemas con la construcción de cubemaps. Sus errores están listados Aqui
Note:Counter-Strike: Global Offensive debe lanzarse con la bandera -insecure para construir cubemaps.


Construir Cubemaps

Una vez que un mapa ha sido compilado e iluminado por VBSP y VRAD (respectivamente), se pueden construir los cubemaps. Después de que se cargue el mapa, usa el comando buildcubemaps en la consola para comenzar a construir los cubemaps para el nivel. Aquí podrá ver cada faceta del renderizado de cubemap (seis por cubemap) y esto puede demorar unos segundos o minutos, según la configuración de su sistema. Una vez terminado, el mapa o el juego deben reiniciarse para que los cubemaps se apliquen correctamente a todas las superficies.

Note:Establesca mat_specular a 0 antes de colocar buildcubemaps o tendra reflejos incorrectos
Note:Los cubemaps construidos se guardan en adentro del archivo bsp que cargó el juego, que estará en la carpeta de mapas, no en la ubicación donde se construyó el archivo bsp.
Note:Si intentas cambiar el nombre de tu BSP y construir los cubemaps, necesitas ejecutar buildcubemaps antes de renombrar y empaquetar el BSP.
Note:Si su mapa tiene grandes superficies reflectantes una frente a la otra (Ejemplo: Rascacielos), se recomienda ejecutar buildcubemaps dos veces, por lo que sus superficies reflectantes en las reflexiones también tendrán reflejos de la primera construcción.

HDR

Si el mapa se ha compilado con la opción de iluminación HDR habilitada en VRAD, los cubemaps deben estar integrados en los modos HDR y LDR (no HDR). Construir cubemaps en un solo modo significará que los cubemaps no estarán presentes en el otro modo. Para obtener información sobre cómo crear cubemaps en HDR, vease HDR Lighting Basics.

los Cubemaps que deben ser construido para los mapas LDR y HDR. Suponiendo que ya está en el modo HDR y que su mapa se haya cargado desde la compilación (VRAD debe tener el parámetro '-both' activado). Ve a la consola y ejecuta los siguientes comandos:

buildcubemaps
mat_hdr_level 0 (Para ir a LDR)
restart (Para recargar el mapa)
buildcubemaps
mat_hdr_level 2 (Para volver a HDR)
restart (Para recargar el mapa)
Note:Esto no se aplica a CS:GO ya que no se puede desactivar

Team Fortress 2 / Juegos Source 2012+

Team Fortress 2 no tiene un cubemap predeterminado aplicado a superficies reflectantes. (También hay problemas similares con algunas instalaciones de Portal 2, excepto que los cubemaps no se muestran.) Todo lo brillante brillará con una textura a cuadros rosa y negro. Si tuviera que construir cubemaps ahora y uno de sus cubemap puede ver una gran superficie brillante; El cubemap lo registrará en sus 6 imágenes. Eso significa que algunos objetos podrían brillar como si hubiera algo que brillara a su lado con la textura rosa y negra. Para resolver esto, necesita construir los cubemaps con especular desactivado. Para construir cubemaps para su mapa TF2, vaya a la consola y ejecute los siguientes comandos:

Construyendo Cubemaps para LDR o HDR solamente::

Note:no habilitar sv_cheats antes de cargar el mapa; se ejecutará automáticamente mat_reloadallmaterials justo después de que el mapa se haya cargado y hará que el menú se congele por un momento.
Note: se recomienda configurar mat_specular a "0" bantes de cargar un mapa, por lo que se tarda mucho menos en completar que hacer mientras o despues de que se haya cargado un mapa.
mat_specular 0
map <su mapa>
sv_cheats 1
buildcubemaps
disconnect
sv_cheats 0

La creación de cubemaps para HDR requiere que repita estos pasos después de cargar su mapa mientras el HDR está habilitado.

Note:si el juego falla cuando intentas construir cubemaps, esto probablemente significa que la resolución de tu juego es demasiado baja. Antes de intentar crear cubemaps, debes asegurarte de que el ancho y la altura de tu juego superen los 512 píxeles. Esto significa que la resolución estándar mínima para compilar es 800X600. La resolución del video se puede cambiar desde la pestaña Video, que se encuentra en el menú de opciones del juego.
Note: Si el mapa BSP es renombrado despues de construir los cubemaps, los cubemaps dejaran de funcionar y se establecerán de forma predeterminada en el mapa el sky cubemap. Debe reconstruir los cubemaps nuevamente cada vez que se renombra un mapa. Sin embargo, los cubemaps que ya no funcionan no se eliminan, por lo que esto puede llevar a archivos pesados. Si planea lanzar un mapa para que otros puedan descargarlo, es mejor tratar de evitar cualquier cambio de nombre de mapa después de compilarlo, para evitar problemas.
Note:para los mapas de varios jugadores en algunos juegos, es posible que necesites habilitar los trucos con (sv_cheats 1) antes de ejecutar el comando buildcubemaps.

Cubemaps después de la actualización de SteamPipe

Debido a la actualización de SteamPipe, un problema reconocido podría ser la creación de los cubemaps sin resultados efectivos. Según una discucion thread, este problema se puede solucionar siguiendo estos pasos:

Bug: <Counter-Strike: Global Offensive> en CSGO, eeditar el archivo de mapa directamente de esta manera puede tener efectos secundarios adversos que incluyen fallos en los gráficos de nodos y la pérdida de datos de sombra static_prop.Este metodo puede prevenir eso.

  1. Coloca entidades env_cubemap en ubicaciones validas en su mapa, y compilelo. Importante: el nombre debe ser mas corto que 30 caracteres (incluido la extension .BSP), o el archivo .BSP no sera escribible. tambien, no cambie el nombre del mapa despues de compilarlo, o los cubemaps no funcionaran.
  2. Use un pakfile editor al .BSP (Por ejemplo: Vide o Pakrat. Usar esas herramientas no estan incluidos en este tutorial.), e inicia tu .BSP
  3. Elimina todos los archivos de tipo como "Texture" o "Texture (HDR). (No los archivos "Material", solo los .VTF)
  4. Guarda el archivo editado .BSP
  5. Copia tu mapa devuelta a tu carpeta de mapas de tu juego.
  6. Abre la consola y escribe: "map -Nombre del mapa-". (Ejemplo: "map ttt_mars_colony_cubemap".)
  7. Una vez en juego, abre la consola denuevo y escribe esto: "mat_specular 0" y "buildcubemaps".
  8. Espera a que se construyan los cubemaps, y despues re-habilita el "specular mapping" con "mat_specular 1" y recarga todos los materiales con "mat_reloadallmaterials"
Note: Si desea empaquetar el contenido personalizado en su mapa, hágalo después de crear los cubemaps.

Source Filmmaker

La construcción de Cubemaps en Source Filmmaker actualmente está dañada y solo mostrará una única cara de un solo cubemap. Para crear mapas de Source Filmmaker correctamente, copie el archivo de mapa y los recursos utilizados por el mapa (texturas, modelos, etc.) en Alien Swarm. Como la versión de rama del motor es muy similar, no es necesario volver a compilar mapas o modelos por separado, bastará con copiar los archivos. Una vez que se hayan renderizado las caras, su mapa ahora contendrá cubemaps y podrá copiarse nuevamente en Source Filmmaker. Esto solo funcionará con la versión más nueva de la rama del mapa, ya que los mapas de TF2 o Garry's Mod bloquearán el juego al cargarse.

La versión 'sin copia' adicional para Hammer y construir está usando una configuración de modificación adicional en Alien Swarm con parches de búsqueda 'alienígenas' (relativos) al contenido de sfm. todo: pathes absolutos.

Ejemplo para la ubicación 'común':

	"SearchPaths"
	{
		"Game"	"|gameinfo_path|."
		"Game"	"swarm"
		"Game"	".\..\SourceFilmmaker\game\tf_movies"
		"Game"	".\..\SourceFilmmaker\game\tf"
		"Game"	".\..\SourceFilmmaker\game\usermod"
		"Game"	".\..\SourceFilmmaker\game\hl2"
		"Game"	"swarm_base"
		"Game"	"platform"
	}

Portal 2

Cuando quiera crear cubemaps para un mapa que se encuentra en "Portal 2/portal2/maps" (Hammer copia los mapas allí de manera predeterminada) Portal 2 se bloqueará porque espera que el mapa se encuentre en "portal2_dlc2/maps". Entonces, si desea arreglar el bloqueo, simplemente copie su mapa en "Portal 2/portal2_dlc2/maps" (o la carpeta de mapas de su mod personalizado) vuelva a cargarlo y vuelva a construir los cubemaps. Debería de funcionar ahora.

Left 4 Dead 1/2

Para crear cubemaps en Left 4 Dead 2, la configuración del sombreador debe establecerse en media. Si cambia la configuración del sombreador mientras se carga un mapa, es posible que tenga que volver a cargarlo, ya que algunas veces las superposiciones (overlays) terminan con una iluminación interrumpida, lo que hace que aparezcan unlit. Una vez que se construyen los cubemaps para un mapa, debes reiniciar el juego para probarlos. A veces debes reiniciar el juego para construir cubemaps en un segundo mapa también.

Pruebas

Los cubemaps se prueban mejor usando el comando impulse 81 en la consola. A continuación, escriba give weapon_cubemap en la consola.

Note: puede vincular estos 2 comandos a teclas separadas para que no tenga que escribir esto cada vez. EJ: impulse 81 ; give weapon_cubemap

Esto reemplaza el modelo de arma actual con el "cubemap weapon"; Un conjunto de esferas, cada una con diferentes superficies reflectantes. Al moverse alrededor del nivel, es posible ver qué los cubemaps se está aplicando en esa posición en el espacio en un momento dado, así como si ese cubemaps describe con precisión la iluminación y el color del área

Note: el cubemap weapon se puede copiar desde Steam\SteamApps\common\Half-Life 2\hl2\models\shadertest\envballs.mdl a un mod deseado que no lo tenga.
Note: si ejecuta una copia recompilada del mismo mapa sin reiniciar el juego, los cubemaps de la versión anterior aún se almacenarán en caché, lo que hará que parezca que no es necesario reconstruir los cubemaps. Sin embargo, estos cubemaps no se encuentran en el mapa, ya que volver a ejecutar el mapa en otra computadora o después de reiniciar el juego se mostrará. Cada nueva compilación elimina todo el contenido empaquetado, incluidos los cubemaps.

Performance

La entidad env_cubemap permite al usuario definir qué tan grande es la resolución de textura del cubemaps de destino. Si bien una resolución de textura más grande proporcionará resultados más precisos y nítidos cuando se muestra, también incurre en un costo en la memoria de textura. La mayoría de los cubemaps solo deben usar la configuración predeterminada en la entidad env_cubemap para su resolución de textura (32x32 píxeles para cada superficie). Esto es generalmente aceptable en condiciones normales. Algunas excepciones pueden ser necesarias para áreas de alta reflectividad o detalle, tales como piezas para actuar.

Debido a que las superficies deben aproximarse a sus alrededores a través de cubemaps, el uso de demasiados cubemaps en un área pequeña puede causar discontinuidades visuales notables al moverse. Para áreas de alta reflectividad, generalmente es más correcto colocar un mapa de cubos en el centro de la superficie y no más. Esto evita costuras o saltos a medida que cambia la vista.

Para determinar el costo de los cubemaps en cualquier área, primero observe la categoría World Rendering usando el comando +showbudget de la consola. Si esta categoría está registrando un costo inusualmente alto, puede deberse al uso de demasiados mapas en un área. Una solución simple para verificar este escenario es usar Hammer para ocultar todos los cubemaps en el mapa, y luego compilar y ejecutar el mapa nuevamente. Si el rendimiento es notablemente mejor, es posible que deba reducirse la densidad del mapa de cubos o la resolución. Eventualmente, esto también se puede verificar apagando los cubemaps, usando mat_specular 0 para deshabilitarlos, sin embargo, esto necesita confirmación.

Bugs

Note: Para algunos juegos (L4D<Left 4 Dead>/L4D2<Left 4 Dead 2>) se requiere un reinicio completo del juego después de construir los cubemaps para habilitarlos.
Bug: En Team Fortress 2 VBSP no puede cargar el skybox para usarlo como el mapa de cubos predeterminado, por lo que todas las superficies reflectantes mostrarán la textura missing content, que se asemeja a un tablero de ajedrez rosa y negro. Para arreglar esto necesitarás construir cubemaps manualmente.
Bug: la creación de cubemaps en Portal 2 bloqueará el juego si el mapa que estás ejecutando está en la carpeta common/portal 2/portal2/maps. Este bloqueo ocurre cuando el mapa se está recargando, después de que los cubemaps se hayan guardado en el archivo. Para evitar el bloqueo, establezca la opción 'Place compiled maps' (Colocar mapas compilados) en la pestaña Build Programs (Crear programas) de las opciones de Hammer en 'common/portal 2/portal2_dlc2/maps', luego vuelva a compilar el mapa antes de compilar los cubemaps.
Bug: Algunos modelos requieren cubemaps construidos para parecer correctos. Sin ellos, pueden terminar luciendo súper brillantes e incluso brillantes. La construcción de cubemaps con dichos modelos rotos construirá esos materiales de modelo rotos en su cubemap. En esos casos, es posible que tenga que construir los cubemaps dos veces o bajar su detalle de sombreado a un nivel inferior donde no se usarán, eliminando el error de textura rota de esos pocos modelos.

Mire también