diff --git a/plugins/weberpenntree/include/WeberPennTree.h b/plugins/weberpenntree/include/WeberPennTree.h index 5a79bf298..d3bff8f2a 100755 --- a/plugins/weberpenntree/include/WeberPennTree.h +++ b/plugins/weberpenntree/include/WeberPennTree.h @@ -33,6 +33,13 @@ struct WeberPennTreeParameters{ // Fractional height of split (if BaseSplits>0) float BaseSplitSize, BaseSplitSizeV; + // Tilt of the trunk + helios::vec2 BaseTilt, BaseTiltV; + + // x and y spread values for the positions of the nodes along the trunk + // If 0, the base will be perfectly straight. Otherwise it will be more winding or crooked. + helios::vec2 BaseAlignmentV; + // Size and scaling of tree float Scale, ScaleV, ZScale, ZScaleV; diff --git a/plugins/weberpenntree/src/WeberPennTree.cpp b/plugins/weberpenntree/src/WeberPennTree.cpp index d487d6c35..b4c17fa03 100755 --- a/plugins/weberpenntree/src/WeberPennTree.cpp +++ b/plugins/weberpenntree/src/WeberPennTree.cpp @@ -173,6 +173,10 @@ uint WeberPennTree::buildTree( const char* treename, helios::vec3 origin, float if( base_size > 0 && parameters.BaseSizeV > 0 ) base_size += getVariation(parameters.BaseSizeV); + helios::vec2 base_tilt = parameters.BaseTilt; + base_tilt.x += getVariation(parameters.BaseTiltV.x); + base_tilt.y += getVariation(parameters.BaseTiltV.y); + //Region above trunk base if( base_splits > 0 ){ //trunk splits at base @@ -190,7 +194,16 @@ uint WeberPennTree::buildTree( const char* treename, helios::vec3 origin, float for( uint i=1; i 2 0.4 0.1 + 0 0 + 0.05 0.05 + 0.05 0.05 2 0.5 2