Mezcla dos fluidos en Blender: agua y aceite
Mezcla agua y aceite en FluidLab 1.2: dos emisores InFlow, Fluid Interactions, un collider OutFlow, una malla GN y dos shaders mezclados con fl_color.
En este tutorial lanzamos dos chorros de líquido, agua y aceite, dentro de una caja para que choquen entre sí, y después mezclamos sus shaders en una sola malla para ver dónde acaba cada fluido.
Configurarás dos emisores InFlow a partir de presets, harás que los dos grupos interactúen, eliminarás las partículas que se escapan con un collider OutFlow, mallarás el resultado con Geometry Nodes y mezclarás los materiales con el atributo fl_color que ofrece FluidLab.
Paso a paso
-
La escena tiene una caja como collider (
Cube_00) y dos esferas: una para el agua y otra para el aceite. Selecciona la primera esfera, pulsa Add New Group, cámbiale el nombre awater, elige InFlow y pulsa OK. Después pulsa Add Emitter; el grupo aparece en Fluid Groups comoG_Water.En Fluid Presets, elige Water y pulsa Set Preset para cargar los parámetros del agua. Luego ve a Fluid Settings:
- Emission: en Count | Size, pon 50000 y 0.03 m. Frame Start | End es 1 y 100, así que la emisión dura 100 frames, y Lifetime es 185, la duración de la línea de tiempo. En Velocity, pon Initial Velocity X en 2.7 m/s.
- Physics: activa Adaptive, sube Subframes de 4 a 7 para que los cálculos sean más precisos y sube un poco Mass, a 0.11 kg.
- Emission → Viewport Display: pon Display en Material y elige un azul tipo agua en el campo de color.
-
Repite el proceso con la segunda esfera: Add New Group con el nombre
oile InFlow, y después Add Emitter (aparece comoG_Oil). En Fluid Presets, elige Oil y pulsa Set Preset.En Fluid Settings → Emission, usa los mismos valores que en el agua: 50000 partículas de 0.03 m, frames del 1 al 100 y Lifetime 185. Lo que cambia es la dirección: pon Initial Velocity X en -2.7 m/s para que los dos chorros salgan el uno hacia el otro. En Viewport Display, pon Display en Material y elige un amarillo.
En Physics, activa también Adaptive y pon Subframes en 7, pero esta vez baja un poco Mass, a 0.08 kg.
-
Oculta el collider y reproduce la simulación: los dos fluidos caen, pero el agua y el aceite no reaccionan entre sí. Abre Fluid Interactions, pulsa Add Interaction, marca
G_WateryG_Oilen el cuadro de diálogo y pulsa OK (apareceInteraction_00en la lista). Vuelve a lanzar la simulación: ahora los dos fluidos se empujan entre sí.Aún se escapan algunas partículas por las paredes de la caja. Para arreglarlo, ve a Colliders, vuelve a mostrar el collider, duplícalo y escala la copia un poco hacia fuera. Con la copia seleccionada, pulsa Add Selection Collider y activa OutFlow (Kill Particles) en sus Collider Settings: cualquier partícula que toque este collider exterior se elimina, así que no se derrama nada. Oculta los dos colliders y vuelve a lanzar la simulación.
Los grupos no interactúan por defecto
Dos grupos de fluido en la misma escena se simulan sin ninguna interacción hasta que añades una en Fluid Interactions.
-
Pulsa el icono del disco junto a Current Cache para guardar la simulación. En el vídeo se abre en ese momento un explorador de archivos y la escena se guarda como archivo .blend.
Después abre Mesh y pulsa Add Mesh. En el cuadro Add GN Meshes To: deja marcados
G_WateryG_Oily pulsa OK: se crea una sola malla de Geometry Nodes,M_Water, para los dos fluidos. En Mesh Settings:- Voxel Resolution: bájalo a 0.04 para ganar algo de detalle.
- Size: súbelo a 0.07.
- Smooth XYZ: súbelo de 1 a 10 para suavizar la superficie.
Por último, oculta las partículas en el viewport con los iconos del ojo de Fluid Groups para ver solo la malla.
-
Abre Shading, comprueba que Assign está activo y recorre las vistas previas de Materials hasta llegar a MixColors (con Fluid seleccionado). Pulsa Assign Material.
En Settings verás sus colores por defecto: Color 0 rosa y Color 1 verde, con Blur en 100. Reproduce la simulación para ver cómo se mezclan los dos fluidos. Puedes cambiar estos colores cuando quieras: en el vídeo se cambia Color 0 a azul.
-
Guarda antes el archivo. De vuelta en Shading → Assign, elige Water en la galería de materiales y pulsa Assign Material; después elige Oil y vuelve a pulsar Assign Material. Así se crean los materiales
Water_00yOil_00.Pasa al espacio de trabajo Shading de Blender y activa Material Preview: la malla muestra el aceite. Pulsa Ctrl+Space para maximizar el Shader Editor, selecciona todos los nodos del shader del aceite y cópialos. Abre el material
Water_00y pégalos. Ahora tienes los dos árboles de nodos en el mismo material: los del agua arriba y los del aceite debajo. -
Añade un Mix Shader y conecta el shader del agua a su primera entrada Shader y el del aceite a la segunda. Para el Fac, añade un nodo Color Attribute y elige
fl_color: es el atributo que sirve para mezclar los dos shaders. Pon un Color Ramp en medio: Color del atributo → Fac de la rampa, y Color de la rampa → Fac del Mix Shader. Por último, conecta el Mix Shader a la entrada Surface del Material Output.El material de la malla se define en su modificador de Geometry Nodes. Abre Modifier Properties y, en
FluidLab_Mesh_GN_00, cambia Material deOil_00aWater_00, el material en el que estás montando la mezcla.Ajusta el Color Ramp acercando sus dos marcadores para que el límite sea más nítido. Ahora distingues claramente la zona del aceite de la del agua.
-
La interacción se aprecia mejor con un shader más contrastado. En Shading → Assign, elige Milk y pulsa Assign Material. En el Shader Editor, copia los nodos del shader de la leche, abre
Water_00, borra los nodos del aceite y pega los de la leche en su lugar, conectados al Mix Shader.Al asignar Milk, el Material del modificador ha pasado a
Milk_00, así que vuelve a ponerlo enWater_00, el material que contiene la mezcla. Ajusta de nuevo el Color Ramp: el agua y la leche se mezclan ahora con el mismo atributofl_color.
Ya tienes dos fluidos que interactúan en la misma simulación y una sola malla cuyos shaders se mezclan según el atributo fl_color. Prueba otros materiales de la galería para ver la misma interacción con otro aspecto.