Ok, so I created a single mesh to enclose the "well" instead of 6, but now I've run into 2 other problems. The first one seems expected, the other does not.
[Problem #1]:
I'm not getting the "hill" effect that I was with the previous "6 mesh" method (I was using "addHillPlaneMesh" to create meshes for the water nodes). It's one flat surface that bounces up and down which you can't see in the image. It looks more like an icy surface.
[Problem #2]:
At certain angles, the water mesh is disappearing altogether. I don't have any other clues as to why, but here is the pic and the code I use to create it below:
Code: Select all
// create animated water mesh...
scene::IAnimatedMesh *meshNewWater = ptrClient->ptrVideo->dvWindow->getSceneManager()->getMeshManipulator()->createAnimatedMesh(
ptrClient->avatar->room->meshWater);
// create "top-down" / "over-water" water node...
scene::ISceneNode *nodeWaterOver = ptrClient->ptrVideo->dvWindow->getSceneManager()->addWaterSurfaceSceneNode(
meshNewWater, 2.0f, 200.0f, 20.0f, ptrClient->avatar->room->nodeRoom, -1,
ptrClient->avatar->room->meshWater->getBoundingBox().getCenter(),
core::vector3df(0, 0, 0),
core::vector3df(1.0f, 1.0f, 1.0f));
nodeWaterOver->setMaterialTexture(0, ptrClient->ptrVideo->irrVDriver->getTexture("./media/textures/water/water01.jpg"));
nodeWaterOver->setMaterialTexture(1, ptrClient->ptrVideo->irrVDriver->getTexture("./media/textures/water/water01.jpg"));
nodeWaterOver->setMaterialType(video::EMT_TRANSPARENT_REFLECTION_2_LAYER);
nodeWaterOver->setMaterialFlag(video::EMF_LIGHTING, false);
//nodeWaterOver->setMaterialFlag(video::EMF_TEXTURE_WRAP, true);
// create "bottom-up" / "under-water" water node...
scene::ISceneNode *nodeWaterUnder = ptrClient->ptrVideo->dvWindow->getSceneManager()->addWaterSurfaceSceneNode(
meshNewWater, 2.0f, 200.0f, 20.0f, ptrClient->avatar->room->nodeRoom, -1,
ptrClient->avatar->room->meshWater->getBoundingBox().getCenter(),
core::vector3df(180, 0, 0),
core::vector3df(1.0f, 1.0f, 1.0f));
nodeWaterUnder->setMaterialTexture(0, ptrClient->ptrVideo->irrVDriver->getTexture("./media/textures/water/water01.jpg"));
nodeWaterUnder->setMaterialTexture(1, ptrClient->ptrVideo->irrVDriver->getTexture("./media/textures/water/water01.jpg"));
nodeWaterUnder->setMaterialType(video::EMT_TRANSPARENT_REFLECTION_2_LAYER);
nodeWaterUnder->setMaterialFlag(video::EMF_LIGHTING, false);
//nodeWaterUnder->setMaterialFlag(video::EMF_TEXTURE_WRAP, true);
// drop the reference...
meshNewWater->drop();