WaveMaker es un asset de simulación de olas que crea una malla rectangular que se modifica en tiempo real para parecer líquido al interactuar con ella. Su forma de mostrarse es responsabilidad del usuario.
Para crear superficies pequeñas y medianas como piscinas, portales, charcos, estanques...
Para simular tanto agua como barro, crema y líquidos de distintas densidades
Para interactuar con objetos dinámicos y estáticos
Para añadir efectos visuales interactivos y atractivos a tus escenas
Cosas que NO puede hacer este asset en la versión actual...
No genera rompientes de olas (olas redondas)
No está preparado para superficies grandes como océanos, ríos, cascadas, lagos muy grandes
No es un shader de agua, es un modificador de malla. Debes utilizar tus propios materiales y shaders
No contiene efectos como espuma, salpicaduras, etc
No simula aerodinámica (efecto del viento en el agua)
No simula fuertas de flotación (Buoyancy)
No genera efectos de costa y orilla
El comportamiento es igual en todas las zonas, no es diferente según la profudidad
Algunas de estas características serán añadidas en el futuro. Para conocer cuáles y proponer nuevas, visita el gestor de errores y sugerencias (En inglés).
Características actuales de la versión 1.X
Simulación de fluido en CPU a tiempo real basada en campos de altura
Los colliders se pueden transformar fácilmente para hacerlos interactuar con la superficie
Configuración sencilla y rápida
Parámetros disponibles para la velocidad de las ondas, duración, suavizado y tamaño
Posición, rotación, longitud y ancho de la superficie arbitrarios
Zonas de la superficie se pueden fijar para que las ondas "choquen" en ellas
Fronteras abiertas y fijas (rebote en bordes u ondas libres)
Detección automática de zonas fijas y modo de pintado manual
Las normales de la malla se actualizan en tiempo real para que interactúe correctamente con la iluminación
Código de calidad, código completo y documentado. API disponible y con espacio de nombres propio
Independiente del timestep
Independiente de la jerarquía en la escena
Código eficiente y coste de CPU muy pequeño
Incluye todas las escenas de ejemplo mostradas en los videos (Excepto las que utilizan assets de otros creadores)
v1.1 Añadido estado de reposo para reducir la computación al mínimo (video)
Change Log
Demos Interactivas
Interacción básica
Una demostración de interactuador, celdas fijas y una superficie simulándose. Necesitas soporte para WebGL2.0.
Las olas no romperán. Jamás (a menos que los investigadores o yo descubrimos una manera): Este método está basado en campos de altura asi que eso significa solo hay una altura posible por cada celda de la superficie. Una ola rompiente necesitaría varias alturas por celda.
Se generan olas pequeñas cuando rotas una superficie y un interactuador juntos: El movimiento relativo entre superficie e interactuador se tiene en cuenta. Trasladar ambas a la vez no generará ondas. Sin embargo, si se rotan juntas bajo el mismo padre es imposible evitar una pequeña generación de olas. Lamentablemente, esto es debido a la falta de precisión en el cálculo de la velocidad angular de ambos objetos. Una solución sería hacer este sistema menos flexible de tal manera que asociaramos cada interactuador a cada superficie para calcular su velocidad respecto de la superficie sin ningún problema de precisión. A menos que haya una razón de peso que puedas comunicarme para este tipo de configuración, he preferido que el sistema sea más flexible.
Las fronteras abiertas todavía son imperfectas. Incluso si no fijas los bordes de la superficie, un porcentaje de las ondas que impactan en los bordes ellos será devuelto, cuando deberían de desaparecer por completo. Todavía estoy trabajando en resolverlo.
Un interactuador con un rigidbody kinemático debe tener un collider de tipo trigger. Pero esto es debido al sistema nativo de colisión. Si un collider no es de tipo trigger, no generará contactos con la superficie y no habrá ondas.
¿Tiene el objeto que interacciona (interactor) un componente WaveMaker Interactor?
¿Tiene el interactor un componente RigidBody?
¿Tiene el interactor un componente Collider de alguno de los tipos disponibles?
Si estás moviendo el interactor poniendo un valor de posición directamente o moviéndolo a mano, tienes que activar "isKinematic" en el componente RigidBody
¿Es el rigidbody del interactor kinemático y el collider es trigger? Esta combinación no genera contactos en Unity. Encuentra otra combinación!
Activa el botón Debug Log en la superficie para ver los mensajes de consola que indican si hay interacción o no.
Si aún así no afecta a la superficie, copia los parámetros de una de las escenas de ejemplo y empieza desde ahí.
¡Contacta con soporte!
Soporte y Contacto
Si estás intersado en alguna característica nueva que no está en el gestor, por favor añádelo. Si no te comunicas en inglés, añádelo en castellano o escríbeme directamente a mi.
Para recibir notificaciones de las actualizaciones, por favor, sigue la página del asset en el asset store o en cualquiera de mis redes sociales o blog en esta misma web (twitter, linkedin, blog).
Si tienes cualquier pregunta que no esté relacionada con un posible error o sugerencia, por favor escríbeme a unitysupport (at) lidia-martinez.com