Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Animacion de vela de barco pirata

Iniciado por brok, Diciembre 14, 2017, 09:37:38 PM

Tema anterior - Siguiente tema
Hola chicos, ¿se puede hacer un rig de una vela de barco pirata en blender? y simular la tela, ¿Cómo se haría? se sobre personajes y tal pero un rig de una tela de barco que se pliega y se recoge, ¿alguna idea? que sea solo aniamcion de rigging.  

podrias hacerlo via shader, mani***ndo lo vertex desde ahi...., parcido a lo que se hace en los shaders de agua(water) olas...
 
 

Gracias Igor pero no se nada de shader yo tendría que apreder.

Diciembre 15, 2017, 05:08:27 PM #3 Ultima modificación: Diciembre 15, 2017, 05:09:48 PM por lightbug
Hola, mira ese shader lo quería hacer hace un tiempo para un sprite animado, pero cada vez que re-comenzaba con los shaders me había olvidado todo, así que empecé a tocar "hasta que algo se movió" jaja, la cosa es que los uv's terminaron mal puestos, la velocidad y fase de ondulación cambiaban con la distancia a la cámara y para rematarla creo que estaba algo ebrio cuando lo estaba escribiendo ... asi que lo subo a modo de que si alguien tiene ganas de tocarlo/mejorararlo/ponerlo aceptable que lo haga:
 

Shader "Custom/SpriteAnimated" {
Properties {
   _Color ("Color", Color) = (1,1,1,1)
   _MainTex ("Albedo (RGB)", 2D) = "white" {}
   _AmplitudeX("Amplitude X" , float) = 45
   _PhaseX("Phase X" , float) = 1
   _SpeedX("Speed X" , float) = 10
   _AmplitudeY("Amplitude Y" , float) = 45
   _PhaseY("Phase Y" , float) = 1
   _SpeedY("Speed Y" , float) = 10
}
SubShader {
Tags { "RenderType"="Opaque" }
   LOD 100
   pass{
   
   CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"
 
            float4 _Color;
            sampler2D _MainTex;
            float _PhaseX;
            float _AmplitudeX;
            float _SpeedX;
            float _PhaseY;
            float _AmplitudeY;
            float _SpeedY;
            struct v2f {
                float4 pos : SV_POSITION;
                float2 uv : TEXCOORD0;
            };
            float4 _MainTex_ST;
            v2f vert (appdata_base v)
            {
                v2f o;
                o.pos = UnityObjectToClipPos(v.vertex);
                o.pos.x += o.pos.y * (_AmplitudeX/100) * sin(_Time.y * _SpeedX + o.pos.y * _PhaseX );
                o.pos.y +=  (_AmplitudeY/100) * sin(_Time.y * _SpeedY + o.pos.x * _PhaseY );
                o.uv = TRANSFORM_TEX (v.texcoord , _MainTex);
                return o;
            }
            fixed4 frag (v2f i) : SV_Target
            {
                 return _Color * tex2D( _MainTex , i.uv);
            }
            ENDCG
        }
}
 
}

 
Seguramente debe haber algo bien hecho en la wiki de Unity o por internet dando vueltas, si encuentro algo lo subo.

Gracias lightbug, pero entiendo algo porque se preogramar algo, pero creo que seria algo mas complejo, ya he buscado en google y he encontrado algo pero no se como funciona es mi primer dia con los shader, jejeje.
 
Tiene que quedar asin como este juego.
 


   
tart=1486&feature=oembed" width="480">

 
 

wooo el agua esa se ve genial, el tema de la vela podés animarla si no querés enquilombarte, el shader ese lo que supuestamente haría es tomar los vértices y moverlos como una función seno, es más te queda más una bandera que una vela ahora que lo pienso jaja tendrias que fijar los extremos (algo más para agregar)... si yo tuviera que imitar el efecto del video que pusiste probablemente haría la animación directamente ya que la vela esa no hace mucho, tiene tres estados, se "pone", animacion normal y animación con viento fuerte, con un lindo blend entre estados quedaría bien.


Hola gZone muchas gracias esta muy bien pero lo que me piden es un rig y hacerlo todo por huesos no por cloth de unity ni blender dicen que asi consume menos recursos.

Pues con huesos solo se me ocurre hacer como un Grid de huesos independientes,hacerles un constraint a su posicion correspondiente de la maya,hacer una simulacion de cloth y bakear la posicion de los huesos.Luego esos huesos les haces un el skinning con un mesh sin animacion.
 
Asi tendrias la animacion  del pliegue/despliege hecha con los huesos, y los huesos libres por si quieren hacer algo par darle una deformacion extra.
 
Ahora si no se van a utilizar los huesos "inGame" yo lo plantearia de otra manera,que dara mejores resultados y consumira practicamente lo mismo,o incluso menos.
 
Tochete is coming!!!
 
La animacion del pliegue/despliegue pues la haria directamente en blender con cloth,la bakearia y la importaria en unity como meshAnimation/vertexAnimation(o como se diga).Puede parecer que esto consuma mucho, pero todo lo contrario, piensa que por ejemplo en la era de la play2 solo los juegos punteros como doom3/halfLife2 utilizaban huesos porque consumian muchos recursos,en la mayoria usaban vertexAnimations en los personajes que podian tener cientos de animaciones y mas de 5000 polygonos.Tu solo necesitarias dos,la del pliegue y la del despliegue,y una bandera de 5000 polygonos tendria una animacion muy buena que no conseguiras con huesos a menos que usaras un grid de huesos muy grande.
 
Esto para el pliegue/despliegue, para controlar la potencia del viento cuando sopla a favor de la vela pues con un blendShape para la potencia que lo controlas con alguna variable de direccion del viento.
 
Y por ultimo para simular las pequeñas turbulencias,pues atraves de un shader con alguna textura noise animada deformas un pelin los vertexs,puedes pasarle al shader tambien la variable que marque la direccion del viento y asi mover la textura noise que simula las tarbulencias hacia la derecha o la izquierda dependiendo de por donde venga el aire.
 
Para evitar que las turbulencias afecten en los anclajes de la vela pintas algun canal de los vertexColors para controlar cuanto le afectan,0 en los anclajes superiores 0.5 en los inferiores que van mas sueltos y en el resto de la maya a 1.
 
 
 
Asi te podria quedar una vela que consuma muuuyy poco,muy realista y con bastante control.
 
Pliegue/despliegue---VertexAnimations de una animacion bakeada en blender
 
potencia aire--blendshape + direccion del viento
 
turbulencias-- shader moviendo un noise con la direccion del viento
 
A menos que los huesos se quieran utilizar ingame para algo,me parece que esta opcion es muchissimo mejor.
 
 
 
Cheers.
 
 
 
 

Si queréis un efecto realista de la tela, recordad que es un material poco elástico. Deformable y ligero, sí, pero no "escalable", como si fuera un globo de goma o látex....

Gracias hammer me lo as explicado bastante bien voy a probar y gracias pioj.
Una pregunta hammer,  ¿Cómo hago para que se depliegue/ prielgue en blender? si bakeandola pero como hago para hacelo si no me deja blender utilizar huesos solo uno.

Etiquetas: