HeroEngine Forums

HeroEngine Support => Art & Art Pipeline => Animation => Topic started by: PN-Dwight on Oct 25, 12, 11:32:44 AM

Title: [Resolved] Design: How to do "sails"
Post by: PN-Dwight on Oct 25, 12, 11:32:44 AM
Dear community and developers,

Our game greatly evolves around sailing the vast oceans in search for islands, adventure and treasure. While rethinking our initial designs of the ship, we bumped up against an issue: animating the sails.

How would you animate the sails while sailing and in an idle pose? How could we make the sails "wave" dependantly on the wind? How resource intensive is this?

Thank you in advance, and awaiting your responses! :)
Title: Re: Design: How to do "sails"
Post by: HE-Cooper on Oct 25, 12, 12:29:03 PM
Make them a dynamic character and then push behaviors on them based on the situations if you needed all the complexity and can't just use a simple animated object with one animation loop.
Title: Re: Design: How to do "sails"
Post by: HE-BENNETT on Oct 25, 12, 02:19:06 PM
Any catamarans in your plans? :D  My granddad used to say anything else was just half a boat!  Have you any sailing experience?  I ask because having a good understanding of how the type of boat you want to create actually functions is crucial and I don't know how familiar you are with nautical terms.

In terms of specific setup you'll probably want to use a combination of rotate bone, blend, and additive blend sequences along with very specific animation channels.  The boom of the mainsail could be one animation channel, controlled by a rotate bone sequence (set by player input most likely), etc.

To do the actual fabric, which I assume is what you're flummoxed about, you would need to rig the sails (hehehehe) with bones just like you would the limbs of a character.  As such, it is no more resource intensive than any other character (of similar bone count, poly count, texture size... etc).

What you wouldn't be doing is actually actively simulating the effect of a gust of wind on the sail because you'd have to script all of that logic, it would likely be very resource intensive, and entirely unnecessary.

Take your basic mainsail:  At minimum, it needs a transition animation for up and down the mast, it needs to have a slack 'idle' and a taut 'idle', two transitions: one for slack to taut and vice versa, and the whole assembly would be rigged to a boom which only needs a rotate bone sequence (and a 1 frame idle).

Then if you want to get fancy, you could use in additive blends to have ripples in the fabric when the sail isn't fully  taut or fancier curvature of the sails.
Title: Re: Design: How to do "sails"
Post by: PN-Dwight on Oct 25, 12, 02:43:17 PM
I see I caught Bennett's attention here hehe!

Players start of with basic rowboats (single user), and depending on their Crew (Pirate or Marine crews number), they can buy ships and other ways of transporting (some of which are dependant on the strength of certain abilities).

But we do strive to have a fun, but also semi-realistic game with huge sea-battles versus mythological creatures. The game mechanics, and our knowledge about implementing them, is what is holding us back to some extend with regards to how to build it art-wise. Our engineers can pretty much handle it.

Please fire all you got to us, and we will try to analyse and implement it! :)

Title: Re: Design: How to do "sails"
Post by: HE-BENNETT on Oct 26, 12, 09:50:46 AM
Was it that obvious? :D

Pretty much all of the art decisions are going to be heavily influenced by the overall design for implementation of the mechanics, so it is hard to get more specific than what I talked about above.  My suggestion is to get down and dirty experimenting with the animation sequences I mentioned and see what works!  Once you get an idea of how they all fit together, you should be able to sit down and pencil out a plan to implement for all your boats. 

I can try and help with any more specific questions about working with any of those things, be sure to post any cool things you do on the "show us your game" forum!:)