heres the function i use for creating trees:
Code: Select all
//! The AddTree() function to add trees to scenes
void CGamePlayState::AddTree(CGameManager* pManager, E_TREE_PROFILE treeProfile,
ITexture* TLeafTex, ITexture* TTreeTex, s32 Tseed, s32 Tlod, f32 trunkRadius,
f32 treeSize, vector3df pos)
{
STree* tree = new STree;
// TREES
// MAIN
tree->generator = new CTreeGenerator();
if (treeProfile == ETP_STANDARD)
{
tree->profile = tree->stdProfile = new CStandardTreeProfile();
tree->stdProfile->setMaxLOD( Tlod );
tree->stdProfile->setTrunkRadius( trunkRadius );
tree->stdProfile->setTreeSize( treeSize );
}
else if (treeProfile == ETP_PINE)
{
tree->profile = tree->pineProfile = new CPineTreeProfile();
tree->pineProfile->setMaxLOD( Tlod );
tree->pineProfile->setTrunkRadius( trunkRadius );
tree->pineProfile->setTreeSize( treeSize );
}
tree->seed = Tseed;
tree->lod = Tlod;
tree->leafTex = TLeafTex;
tree->treeNode = new CLODMeshSceneNode( pManager->getSceneManager()->getRootSceneNode(),
pManager->getSceneManager());
tree->treeNode->setMaterialFlag( EMF_LIGHTING, false );
tree->treeNode->setMaterialTexture( 0, TTreeTex);
tree->treeNode->drop();
tree->wind = createWindGenerator();
tree->leafNode = new CTreeLeafSceneNode( pManager->getSceneManager()->getRootSceneNode(),
pManager->getSceneManager() );
tree->leafNode->setWindGenerator( tree->wind );
tree->leafNode->setMaterialFlag( EMF_LIGHTING, false );
tree->leafNode->setMaterialType( EMT_TRANSPARENT_ALPHA_CHANNEL );
tree->leafNode->setMaterialTexture( 0, tree->leafTex );
tree->leafNode->drop();
tree->wind->drop();
// generateTree()-------------
ILODMesh* treeMesh = tree->generator->generateTree(
tree->profile, tree->seed, 10 );
ILODMesh* leafMesh = tree->generator->generateLeaves();
tree->treeNode->setMesh( treeMesh );
tree->leafNode->setMesh( leafMesh );
treeMesh->drop();
leafMesh->drop();
tree->treeNode->setCurrentLOD( tree->lod );
tree->leafNode->setCurrentLOD( tree->lod );
//----------------------------
tree->treeNode->setPosition( pos );
tree->leafNode->setPosition( tree->treeNode->getPosition() );
delete tree;
}
And I create the tree like this:
Code: Select all
// add tree
ITexture* LT = pManager->getDriver()->getTexture("media/leaf.tga");
ITexture* TT = pManager->getDriver()->getTexture("media/tree.jpg");
AddTree(pManager, ETP_STANDARD, LT, TT,
20, 5, 40, 200, vector3df(1000,930,2150));
AddTree(pManager, ETP_STANDARD, LT, TT,
50, 5, 50, 200, vector3df(1000,930,2150));
The first tree is fine, the second doesn.t have any leaves.