Al responder esta pregunta para swquinn , la respuesta planteó una pregunta más pertinente a la que me gustaría escuchar respuestas. Publicaré nuestra propia estrategia (prometo que no la aceptaré como respuesta), pero me gustaría escuchar a otros.
Específicamente: ¿cómo se hace para establecer un presupuesto razonable para su equipo de contenido? Por lo general, una de las primeras preguntas en un desarrollo es: ¿cuál es nuestro presupuesto de polígono? Por supuesto, en estos días es raro que el conteo de vértices / poli solo sea el factor limitante, en cambio, la complejidad del sombreador, la velocidad de relleno y la complejidad de la iluminación entran en juego.
Lo que el equipo de contenido quiere son algunos números / límites difíciles para trabajar de modo que tengan una expectativa razonable de que su contenido, una vez que realmente entre en el motor, no será demasiado pesado. Dado que "depende" no es una respuesta particularmente útil, me gustaría escuchar una estrategia que me permita darles límites viables sin ser a) engañoso, ob) incorrecto.
fuente
Respuestas:
Según tengo entendido, es mucho más fácil reducir la complejidad de un modelo que agregar detalles para un modelo que ha sido desollado y manipulado. Sé que algunas empresas se aprovechan de esto al agrupar activos muy detallados y reducirlos según la situación.
Valve hace esto con sus NPC. Los NPC se modelan con detalles extremos sin ningún tipo de mapeo y luego reducen los detalles a un nivel aceptable por la tecnología y los trucos actuales, como diversas técnicas de mapeo aplicadas en base a modelos detallados (o incluso creados automáticamente).
Esto también ayuda con las pruebas futuras, ya que nunca necesitará volver a crear los activos, solo modifíquelos para cada nuevo proyecto. Esto también tiene la ventaja de que no es necesario esperar a que un equipo realice evaluaciones comparativas específicas del contexto antes de que los activos puedan comenzar a desarrollarse. Los artistas pueden participar por completo desde el día 1.
fuente
Bien, entonces nuestra estrategia es:
Finalmente: sea conservador con sus números. El renderizado no es lo único que tendrá que hacer su juego, así que decida cuál es la proporción de su marco que desea gastar en el renderizado y conviértalo en su objetivo. Por ejemplo, si desea gastar dos tercios de su marco a 30 fps de renderizado, apunte a 1s / 22ms (45 fps) en sus pruebas.
De todo eso, deberías poder dar ejemplos de escenas. Por ejemplo, aquí hay una escena con 200K polígonos, 5 luces estáticas y no más de 3 luces dinámicas por modelo, con 15 caracteres de 50K polys y 30 huesos, y funciona a 60 fps y ocupa 30MB en memoria.
fuente
Conteo de vértices
He investigado "Polygon Count" por más de 15 años. No hay una forma estricta de saber cuántos es su límite, especialmente con software y hardware más modernos. Los límites eran mucho más útiles en motores que solo admitían 4.000 triángulos para un nivel completo. Ahora, encontrarás que la mayoría de los objetos en el entorno del juego superarán eso individualmente.
Lo que finalmente importa es lo que está haciendo el motor con las tiras poligonales.
Cuando el motor renderiza cada modelo, toma sus coordenadas mapeadas de UV, la textura / material representado en los triángulos y crea tiras triangulares. En la mayoría de los casos, un abanico triangular se divide en tiras triangulares separadas por triángulo. Esto aumenta el número de tiras triangulares, disminuyendo el rendimiento.
Un buen ejemplo de cómo arreglar esto es la parte superior plana de un cilindro. Los paquetes 3D generalmente configuran un abanico triangular con un vértice en el centro. Elimino los bordes y el vértice central, luego creo quads en la cara. Esto debería triangular en una sola tira triangular en lugar de múltiples tiras de una sola cara, sin cambiar el recuento de polígonos.
Tome el recuento de polígonos como guía y cuide cómo modela, y haga un mapa UV de la malla. Menos divisiones en la malla cuando el mapeo UV a menudo puede ser más beneficioso.
Luego, considere lo que se puede falsificar con los mapas normales. Una cara plana con una gran cantidad de detalles suele estar mapeada normalmente. Las curvas solo necesitan ser redondas donde se pueda ver una silueta. Al mirar las caras curvas de frente, no debe notar la diferencia entre su activo de alta resolución y el activo de resolución del juego. La silueta es lo que marca la diferencia en su modelo cuando se trata de mapas normales. La silueta ahora se puede modificar con DirectX 11, usando mapeo de teselación y desplazamiento.
Diseño de juego
Considera lo siguiente al diseñar tu juego:
Usando el juego y los tipos de vista, decida cuál será la profundidad de la vista. ¿Vas a ver objetos distantes y con qué claridad? ¿Estás haciendo algo con visión limitada, como un tirador de corredor? (por ejemplo, Gears of War) ¿Estás haciendo algo en itinerancia libre con paisajes abiertos? (por ejemplo, Skyrim)
Una vez que sepa cómo debe verse, puede investigar los juegos que son similares.
La animación limitará su capacidad de aumentar el recuento de polígonos. Mallas estáticas, cualquier cosa que permanezca en la misma posición es más barata en la GPU y la CPU. Especialmente si no son objetos físicos. Para los objetos de física, a menudo puede crear cascos de colisión simples y mallas visuales complejas. No hay suficiente interacción en la mayoría de los juegos para notar la diferencia. La animación mueve su modelo tridimensionalmente, con varios huesos por vértice, mezclándose entre el peso de cada uno de ellos. Esto puede ser costoso en tiempo de CPU, que puede chocar con IA y física basada en software. Cuantos más vértices se vean afectados por la cantidad de huesos en todo el modelo, disminuirá el rendimiento de la CPU. Esta es la otra razón por la cual los personajes del juego se consideran "arte". Es muy difícil definir un límite de polígono.
Mi ejemplo
Uso el UDK, haciendo un shooter en tercera persona de ritmo lento, con un número limitado de jugadores y NPC en la pantalla en cualquier momento. Para esto, apunto a aproximadamente 10,000 triángulos por jugador, 5,000 triángulos para enemigos típicos y genéricos, y si estaba haciendo un personaje de estilo "jefe", alrededor de 15,000. Además, las armas para la tercera persona alrededor de 4.000 triángulos aparecerán muy detalladas. Vehículos alrededor de 10,000 triángulos. Todo requerirá Nivel de detalle, porque requiero largas distancias de visión.
Si fuera una primera persona, basaría los brazos en alrededor de 2,000 triángulos, arma alrededor de 5,000 triángulos, con mapeo normal para cada uno.
Conclusión
Esto es lo que probablemente significa "depende", pero pensé que podría aclarar algunas cosas que la gente a menudo se pregunta.
fuente
Un método que se me ocurre es utilizar escenas construidas automáticamente para generar datos estadísticos a partir de los cuales puede descifrar la información que está buscando.
Obtenga un gran volumen de activos (podría potencialmente generarse automáticamente).
Cree una herramienta para generar escenas que su motor pueda cargar utilizando el conjunto de activos.
Ejecute un bot que moverá su cámara por la escena. También es posible que desee ejecutar algunos otros bots para que la escena sea más dinámica, incluidas las luces.
Recopile tanta información como sea posible y tírela a una base de datos; fps, conteo de polígonos, cambios de sombreador, número de luces, llamadas de sorteo, etc.
Cree / obtenga algunas herramientas para mostrar los datos en su base de datos de tantas maneras como sea posible.
Este enlace puede proporcionar algunas ideas más: Dead Rising Tools
fuente