Mi pregunta es qué está escrito en el título. Este término "color de vértice" aparece mucho. Estoy teniendo dificultades para entender esto.
Por ejemplo:
¿No es un punto de vértice simple en el espacio 3D? Si es así, ¿cómo puede un punto tener un color? ¿O este "color" significa algo más?
Hay un nodo "Vertex Color" en el editor de materiales del motor irreal.
¿Alguien puede arrojar luz sobre mi pregunta? No pude encontrar nada útil cuando busqué en Google "qué es un color de vértice", pero las documentaciones son demasiado técnicas para mí.
vertex
terminology
Bora
fuente
fuente
Respuestas:
Los colores de vértice no son tan relevantes cuando tienes una malla 3D completamente texturizada. Pero se pone interesante cuando tienes una malla sin textura pero de color. En ese caso, asigna un color a cada vértice. El sombreador entonces colorea cada píxel de un polígono interpolando entre los colores de los tres vértices.
Los colores de vértices también pueden ser interesantes en combinación con texturas. Cuando desee utilizar un algoritmo de sombreado como Gouraud Shading , simplemente calcule la intensidad de la luz en cada vértice, asigne el color de la luz al vértice como un color de vértice, y cuando renderice la textura, multiplique el valor de color de cada píxel de textura con Los colores interpolados. Esto le permite calcular las fuentes de luz en el sombreador de vértices en lugar del sombreador de píxeles. Esto suele ser mucho más rápido, porque el sombreador de vértices generalmente se ejecuta con mucha menos frecuencia.
fuente
En teoría, Vertex Color permite colorear un modelo sin tener que preocuparse por las texturas. Esto es bastante común en CAD.
En la práctica, es solo una ranura más que puede usar para insertar datos en el vértice, que luego usa en el sombreador de vértices para hacer cosas locas .
Eso era lo que solía pensar cuando comencé con 3D. Aprendí rápidamente que estaba equivocado .
Puede pensar en un vértice como un blob de datos que forma una esquina de un triángulo que desea pintar en la pantalla (y ni la parte "esquina" ni las partes "triángulo", "pintura" o "pantalla" son siempre verdaderas ) La posición es un aspecto opcional de ese blob de datos que llamamos Vértice.
Hay muchas cosas que puede hacer adjuntando datos adicionales al vértice. El ejemplo más famoso es que puede agregar coordenadas uv para dibujar una textura en ese triángulo. Usted (generalmente) no puede decidir qué parte de una textura dibujar en el triángulo si solo tiene un punto; también necesita coordenadas de textura.
Otros ejemplos estándar de lo que hay en esa burbuja son normales y tangentes. Lo importante es que todos son opcionales, incluida la posición. Vertex Color es solo una de estas entradas opcionales que puede usar o abusar para crear una imagen bonita en la pantalla.
fuente
Los vértices pueden tener colores, es una propiedad como la normal.
En entornos 3D, un triángulo se colorea según la información de color de sus vértices. Los fragmentos más cercanos al vértice A obtienen el color, el más cercano al vértice B obtiene el color de B y el color se interpola entre los 2.
Funciona de la misma manera que la iluminación por vértice.
Es una manera fácil de agregar colores a un modelo sin usar una textura.
fuente
Aquí ya hay respuestas sólidas: solo quiero intervenir con una forma más común de ver los colores de vértice utilizados:
Diversos colores de objeto (u otros atributos) dentro de una sola llamada de lote / extracción
Verá esto utilizado en la representación de sistemas de partículas, texto y sprites en lotes (generalmente atlased).
Imagine que tiene un emisor de partículas que genera partículas con un color de inicio aleatorio, o que se desvanecen a 0 alfa durante la vida útil de las partículas. Si tuviéramos que usar uniformes de sombreado para enviar estos datos de color, necesitaríamos dibujar cada partícula de diferentes colores en su propia llamada de dibujo, haciendo que el sistema de partículas sea mucho más costoso. En cambio, podemos hornear estos colores en los datos de vértice de las partículas y renderizar todo el lote en una sola llamada.
Parece que Unity utiliza esta técnica para la variación del color de las partículas, así como para colorear caracteres individuales en TextMesh o Sprites renderizados juntos en un lote.
Creo que puede hacer algo similar con la creación de instancias de geometría, pero no sé cómo se comparan los dos en rendimiento. Es posible que hoy hacer este tipo de ajustes instanciados a través de los colores de vértice sea más una suspensión para admitir hardware anterior a OpenGL 3.1 / DX9 como algunos dispositivos móviles, en lugar de una mejor práctica para las PC modernas. Agradecería los comentarios de personas que han realizado más ajustes de rendimiento con lotes e instancias para ayudar a aclarar si estas técnicas han reemplazado los colores de vértice para este propósito. :)
fuente