Volúmenes: humo, fuego y líquidos
Un volumen es una caja de vóxeles en lugar de una superficie: una columna de humo, una llama, una explosión, agua. Pixor lee archivos .vdb de Blender, EmberGen y Houdini, y tiene algunos propios para cuando no tienes una herramienta de simulación.
Un volumen no tiene geometría. Se dibuja recorriendo un rayo a través de él para cada píxel, en el procesador, y lo que sale va a la misma imagen que el modelo; así, una llama queda delante de una mano, un personaje está dentro del humo, y las bandas, las líneas y la limpieza lo tratan exactamente igual que a cualquier otra cosa.
Añadir uno
En el paso Escena, en el menú + del Esquema, bajo Un volumen:
| Bocanada | una bocanada redonda de humo |
| Llama | caliente y estrecho abajo, frío y ancho arriba |
| Nube | ancho, plano por debajo, irregular por arriba |
| Niebla | fino, bajo y uniforme |
| Desde un archivo .vdb… | una simulación de Blender, EmberGen o Houdini |
Un volumen es un nodo Volumen del grafo de Escena, y su fila en el Esquema es el mismo nodo: una Fila después de él es una fila de volúmenes, cada uno colocado por su copia, y uno que no está conectado a nada no está en la escena. Sus ajustes también están en el nodo (pxr project scene game.pixor --set flame.voxels=48, por el nombre del volumen).
En la línea de comandos: --volume flame:0.5,0.8,0.5:0,0.55,0, donde los números son el tamaño y después la posición, en metros. Una ruta a un .vdb funciona en el mismo lugar: --volume smoke.vdb:1.2.
Llevado por un hueso, un volumen va adonde va el hueso en cada clip (la llama de una antorcha en una mano) y se mantiene vertical, como hace el fuego; su posición se mide entonces desde el hueso. En la línea de comandos, @BONE al final: --volume flame:0.25:0,0.05,0@hand.r.
Llevado por el emisor de un efecto, un volumen forma parte de ese efecto: se dibuja en las filas propias del efecto, desde el primer fotograma del efecto, dondequiera que esté el emisor (en su hueso, o donde lo muevan las claves de un clip) y en ninguna otra fila. El humo de una explosión, el fuego de un hechizo. Su posición se mide entonces desde el emisor. En la línea de comandos, @effect:N para el enésimo efecto del proyecto: --effect explosion --volume puff:1.5@effect:1.
Cómo se dibuja
Están en Cómo se dibuja, en el Inspector del volumen.
- Grosor es cuánto volumen necesita un píxel antes de dibujarse siquiera. Un valor más alto da una forma más compacta y dura; uno más bajo, una más tenue.
- Borde suave es el ancho del borde deshilachado. El borde se difumina con tramado en un patrón ordenado anclado al propio volumen, nunca mezclado, así que cada píxel se mantiene en la paleta y el patrón no repta cuando el volumen gira.
- Autosombra es cuánto oscurece el volumen allí donde la luz tiene que atravesarlo.
- Color es el propio del volumen, y su rampa se construye a partir de él. Color caliente es el color de la parte que arde; ponerlo igual que el color significa que nada arde, que es lo que quiere el humo. Resplandor sobre indica lo caliente que tiene que estar una parte para tomar el color caliente sea cual sea la luz.
- Vóxeles indica lo fino que se divide el volumen a lo largo de su lado más largo. Un píxel de sprite quiere uno o dos vóxeles: más solo produce parpadeo, porque un vóxel distinto se queda con el píxel en cada fotograma. Una simulación de 256³ se reduce a esto al cargarla, y por eso una columna de humo a 32 px se mantiene estable.
- Muestras es cuántos puntos de un rayo se miran por vóxel. Dos bastan a tamaños de sprite; más es más suave y más lento.
Los volúmenes no reciben destello: una nube no tiene, y la densidad con la que se sombrean es lo bastante irregular como para centellear si se les permitiera uno.
Secuencias: darle movimiento
Un .vdb es un volumen fijo. Una simulación escribe un archivo por fotograma (fire_0001.vdb, fire_0002.vdb, etc.), y si apuntas Pixor al primero, reproduce los demás.
En la sección Secuencia del volumen:
| Fotogramas | cuántos archivos reproducir, contando a partir del que abriste |
| Cada | toma un archivo de cada N: una simulación suele escribirse con más fotogramas de los que quiere un sprite |
| Cerrar el bucle sobre | funde este número de fotogramas del final con el principio, para que el sprite se reproduzca en bucle sin saltos. Esos archivos se convierten en el fundido y no se reproducen: cinco archivos con un fundido de uno son cuatro fotogramas |
En la línea de comandos, la secuencia va después del tamaño y la posición: --volume fire_0001.vdb:1.5::24,2,4: 24 archivos, uno de cada dos, con los cuatro últimos fundidos de vuelta en el primero.
Una secuencia se reproduce junto con el movimiento que ya tenga la hoja: pon un fuego junto a un ciclo de caminar y los fotogramas del fuego serán los del ciclo. Cuando no hay nada más moviéndose, la secuencia es el movimiento y recibe una acción propia, llamada volume.
Cada fotograma se coloca con la misma transformación, tomada de la caja que llena toda la secuencia, así que una columna de humo que crece no encoge la imagen en cada fotograma. Eso también significa que Tamaño es el tamaño de toda la secuencia, no el de su primer fotograma.
Una secuencia nunca está entera en memoria: cada archivo se lee una vez para encontrar esa caja, y luego otra cuando la hoja o la vista previa llega a su fotograma, conservando los tres últimos. Una simulación larga cuesta tiempo de lectura, no memoria.
Lo que lee Pixor
Archivos .vdb con cuadrículas float o vectoriales en el árbol habitual, con los valores guardados tal cual, comprimidos en zip o empaquetados con Blosc-LZ4 (divididos o no en un flujo por byte, como los escribe Blosc 1.14 y posteriores), todos o solo los activos, que es lo que escriben Blender, EmberGen, Houdini y las propias herramientas de OpenVDB. Pixela una cuadrícula llamada density, smoke, fog o d, luego temperature, flame, heat o fire para la parte caliente, y luego velocity para el movimiento que usa la pasada antiparpadeo. La superficie de un líquido (un level set) se lee como un grosor con un borde duro, sólido de lado a lado.
Lo que Pixor no puede leer lo dice por su nombre en lugar de salir mal: otro compresor, otro tipo de árbol, una transformación con cizallamiento. pxr inspect fire.vdb imprime las rejillas de un archivo, su tamaño y su tamaño de vóxel.
Lo que aún no está
- Los líquidos se leen y se dibujan como un volumen, sin espuma ni reflejo. Una lámina de agua con ambos es el nodo Agua del mundo (Mundos).
Lo que describe esta página está en la versión completa; la demo gratuita del navegador se limita al aspecto predeterminado y a la hoja PNG.
Probar en el navegador Obtener Pixor