Home Technical Talk

Real-Time Plant Growth Workflow - Rigging? Blendshapes?

polycounter lvl 2
Offline / Send Message
purplekami polycounter lvl 2
Hey crew,

So a small team and I are starting a plant cultivating game where you'll be able to make a little garden with alien plants that grow in real-time. One of the biggest technical roadblocks we're trying to figure out right now is how we could make the plant models "grow" and bloom. Our first thought was blendshapes, but having to make blendshapes for each variation of plant seems like a lot of inefficient work. Our backup solution right now would be to simply model swap the plants over time, but that's pretty counter-intuitive to the real-time growing aspect.

My experience with rigging is very limited, but would it be possible to make a rig that can be used / tweaked between plants, as well as allow room for it to bloom? Alternatively if there's maybe a different way we could make the animations I'm open to suggestions!

Replies

  • Eric Chadwick
    Options
    Offline / Send Message
    Depends how big they are on-screen, and what hardware you're targeting.

    I'd start with simply animating the scale of the model, and cross-fading between juvenile and adult plant models.

    You could also scale a juvenile model, then when it gets to a certain size/age, you scale additional models on top (thicker trunk scales outwards from middle, additional branches scale up from joints, fruit scales from leaf junctions, etc.).
  • purplekami
    Options
    Offline / Send Message
    purplekami polycounter lvl 2
    Ooo yeah I like the idea of scaling additional models on top of the base plants, that might be a good start for experimenting. The plants will be the main draw of the game, so they'll be relatively large on screen. Hardware is a bit up in the air at the moment, right now we're focusing on desktop, but optimizing for mobile is a possible path we take in the future.
  • Eric Chadwick
    Options
    Offline / Send Message
    We had a thread recently about tree modeling software. http://polycount.com/discussion/201506/what-is-the-best-software-for-creating-foliage-trees-bushes-grass-etc

    The Grove came up as a nice solution, it's a paid plugin for Blender. They have some nice timelapses of growth animation in their Twitter feed, might give you some ideas:

    https://video.twimg.com/ext_tw_video/997189024627417088/pu/vid/640x360/-dE4BrsQkAE05UsV.mp4

    https://video.twimg.com/ext_tw_video/789764842697744384/pu/vid/480x480/mcF4ry9SGi7K1Wap.mp4

  • frmdbl
    Options
    Offline / Send Message
    frmdbl polycounter
    If it's an alient plant you have a hell lot of leeway.

    I'd just make a stem, then parent some leaves to it and other stuff (or make more complex hierarchy) then just scale and keyframe everything
    so it gives an illusion of growing.

    Here's a quick example I made:


  • throttlekitty
    Options
    Offline / Send Message
    How detailed will this get? On the technical side of things, you could be using an L-System to generate the geometry. I know Unreal has it, and a quick search says there's some plugins for Unity.
  • sprunghunt
    Options
    Offline / Send Message
    sprunghunt polycounter
    One way you could do this would be to create an animated shader that 'grows' leaves based off a control texture. I worked on the art for the plants in Bioshock that did exactly this. There was a texture with various grey levels for different leaves and then we animated the contrast on the texture to progressively display parts of the plants. 

    Although I agree with throttlekitty that the best way to do this would be to create a simple L-system that's controllable through script.

    http://natureofcode.com/book/chapter-8-fractals/

  • purplekami
    Options
    Offline / Send Message
    purplekami polycounter lvl 2
    Thanks! I'll check out these workflows, animations with scaling seems like a good way to go, we haven't established an art style yet but I don't think we'll be doing anything photorealistic so I could see that working well
  • purplekami
    Options
    Offline / Send Message
    purplekami polycounter lvl 2
    One way you could do this would be to create an animated shader that 'grows' leaves based off a control texture. I worked on the art for the plants in Bioshock that did exactly this. There was a texture with various grey levels for different leaves and then we animated the contrast on the texture to progressively display parts of the plants. 

    Although I agree with throttlekitty that the best way to do this would be to create a simple L-system that's controllable through script.

    http://natureofcode.com/book/chapter-8-fractals/

    Wow that sounds like a really neat way of doing it, I'd love to explore that shader workflow. I'll have to boot up Bioshock and give it a look! If we wanted to achieve some of the type of foliage we want, L-systems would certainly be a great way of achieving both variety between plants as well as a lot of controllable artistic charm. Some research shows that there are some L-system scripts made for unity easily enough
  • monster
    Options
    Offline / Send Message
    monster polycounter
    I'd go with shaders too if you have a tech artists that is up for that challenge.
    Scaling animations is going to be way way way easier though.

    The nice thing about shaders is that you can hit different platforms pretty easy. You mentioned maybe mobile later. Honestly that's not as easy as flicking a switch. Assets need to be built for mobile, or you need to spends lots of time down converting models.

    This is a grass shader we used. It's got a bunch of options, and we can make changes without having to remodel / re-rig / reanimate, and notice how we have a couple of "Low" settings at the bottom.

Sign In or Register to comment.