From 701a7b3cfd8b73d71da2bc3513e46bee7efcd2d0 Mon Sep 17 00:00:00 2001 From: Corentin LEROY Date: Wed, 20 Nov 2024 18:05:02 +0100 Subject: [PATCH] feat [weberpenntree]: Add the possibility to tilt the tree trunks and make them crooked --- plugins/weberpenntree/include/WeberPennTree.h | 7 ++++ plugins/weberpenntree/src/WeberPennTree.cpp | 39 ++++++++++++++++++- samples/weberpenntree_orchard/config/tree.xml | 3 ++ 3 files changed, 47 insertions(+), 2 deletions(-) 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