Curvy Generator

The generator is an ecosystem of it's own, bound to Curvy by the fact that it uses splines as the preferable input. But that's just the regular use case, and we have some great plans for the future.

Unless otherwise explicitly stated Curvy Generator treats all Input and Output as local to the CurvyGenerator GameObject!

Preface

In short, the Curvy Generator takes some input (usually spline data), processes it and spits out the results. Some default use cases are

  • extrude a shape along a path (i.e. create a volume)
  • clone other geometry along a path or volume
  • general path manipulation (mix, transform, scale, rotate etc…)
  • more to come…

We thought and created sketches to find a proper design for months! Here are just a few problems we had to consider:

  • Should divide tons of features into “chewable” chunks
  • Must be highly extendable
  • Must be fast and should be able to use threading
  • Should be fun to work with

To make a long story short, a modular design is the only way to handle such a beast. Having modules plugged in a graph tree is a popular way to manage complex setups, done by lots of software tools like Substance Designer or Shader Tree. So we went that road, and the Curvy Generator is the result.

Key concepts

  • Modules can be connected by using slots, each requiring a certain data type
  • Data Types can be subtyped. E.g. Path inherits from Shape, so you can plugin a Path when a Shape is required
  • Smart Caching: if a module's input is unchanged, it returns the cached output instead of recalculating again

Topics

Reference

Min Distance
Show Debug
AutoRefresh
Refresh Delay
Refresh Delay Editor

Events

You can react to certain spline related events by adding a handler to the following UnityEvents:

OnRefresh

CurvyCGEventArgs

Called each time after the generator has refreshed

Last modified: 2015/09/21 14:31 by Jake