Load Klasker's Procedural Trees

Post those lines of code you feel like sharing or find what you require for your project here; or simply use them as tutorials.
Post Reply
doqkhanh
Posts: 158
Joined: Sat Mar 01, 2008 3:14 am
Location: Tokyo, Japan
Contact:

Load Klasker's Procedural Trees

Post by doqkhanh »

Hope this helpful:

Code: Select all

	/*
	* Setup a oak tree
	*/
	
	video::E_MATERIAL_TYPE leafMaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL;

	//
    // Load leaf shader
    //
    //leafMaterialType = (video::E_MATERIAL_TYPE) driver->getGPUProgrammingServices()->addHighLevelShaderMaterialFromFiles(
    //    "Data/shaders/leaves.vert",
    //    "main",
    //    EVST_VS_2_0,
    //    "Data/shaders/leaves.frag",
    //    "main",
    //    EPST_PS_2_0,
    //    0,
    //    EMT_TRANSPARENT_ALPHA_CHANNEL,
    //    0);


	scene::CTreeGenerator* oakGenerator = new scene::CTreeGenerator(smgr);
	io::IXMLReader* xml = device->getFileSystem()->createXMLReader( "Data\\trees\\Oak.xml" );
	oakGenerator->loadFromXML(xml);
	xml->drop();

	scene::CTreeSceneNode* tree = new scene::CTreeSceneNode(smgr->getRootSceneNode(), smgr);
	tree->drop();

        //Make it smaller
	tree->setScale(core::vector3df(0.2f,0.5f,0.2f));

	tree->setup( oakGenerator ); 
	
	tree->getLeafNode()->getMaterial(0).TextureLayer[0].AnisotropicFilter = true;
    tree->getLeafNode()->getMaterial(0).TextureLayer[0].BilinearFilter = false;

	tree->setMaterialTexture(0, driver->getTexture("Data\\textures\\OakBark.png"));
	tree->getLeafNode()->setMaterialTexture(0, driver->getTexture("Data\\textures\\OakLeaf.png"));
	tree->getLeafNode()->setMaterialType( video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF );
	tree->getLeafNode()->setMaterialType( leafMaterialType );
Post Reply