#ifndef _LBBCKDTREECLUSTERGENERATOR_H #define _LBBCKDTREECLUSTERGENERATOR_H #include #include #include #include #include namespace LBBC { class _BBCExport KdTreeClusterGenerator : public BBC::BillboardCloudGenerator { public: void generate(); void init(); void setAlpha(float value); float getAlpha(); void initializeBillboardCloud(); BBC::Billboard* createBillboard(); void initializeBillboardClusterData(BBC::Billboard *billboard); void initializeRandomBillboard(BBC::Billboard *billboard); void splitLeafDistribution(); void assignLeafBillboard(Leaf *leaf, BBC::Billboard *billboard); void recomputeBillboardCloud(); void recomputeBillboard(BBC::Billboard *billboard); void iterativeRecomputeBillboardCloud(); unsigned int findBestBillboard(Leaf *leaf); void generateBillboardCloudBounds(); void setNumIterations(unsigned int value); unsigned int getNumIterations(); KdTreeClusterGenerator(); ~KdTreeClusterGenerator(); protected: float mAlpha; float mEpsilonYN; float mNumIterations; }; } #endif