There's a crush on using MotionBlur.material

Problems building or running the engine, queries about how to use features etc.
Post Reply
icy7247
Gnoblar
Posts: 1
Joined: Wed May 14, 2014 3:41 pm

There's a crush on using MotionBlur.material

Post by icy7247 »

I don't know how to use compositor, there'r a error when I combine bloom and motion blur.Something wrong I marked with many '/'.My English isn't good.thx for hearing my nonsense.

Code: Select all

#include "ExampleApplication.h"
#include "ogrecompositormanager.h"

#include <deque>
using namespace std;

class MoveDemoListener : public ExampleFrameListener
{
public:

	MoveDemoListener(RenderWindow* win, Camera* cam, SceneNode *sn,
		Entity *ent, std::deque<Vector3> &walk)
		: ExampleFrameListener(win, cam, false, false), mNode(sn), mEntity(ent), mWalkList( walk )
	{
		// Set idle animation
		// Set default values for variables
		mWalkSpeed = 1000.0f;
		mDirection = Vector3::ZERO;

	} // MoveDemoListener

	/* This function is called to start the object moving to the next position
	in mWalkList.
	*/
	bool nextLocation( )
	{
		return true;
	} // nextLocation( )

	bool frameStarted(const FrameEvent &evt)
	{
		if (mDirection == Vector3::ZERO) 
		{
			if (nextLocation()) 
			{
				// Set walking animation
				mAnimationState = mEntity->getAnimationState("Walk");
				mAnimationState->setLoop(true);
				mAnimationState->setEnabled(true);
			}
		}


		mAnimationState->addTime(evt.timeSinceLastFrame);
		return ExampleFrameListener::frameStarted(evt);
	}
protected:
	Real mDistance;                  // The distance the object has left to travel
	Vector3 mDirection;              // The direction the object is moving
	Vector3 mDestination;            // The destination the object is moving towards

	AnimationState *mAnimationState; // The current animation state of the object

	Entity *mEntity;                 // The Entity we are animating
	SceneNode *mNode;                // The SceneNode that the Entity is attached to
	std::deque<Vector3> mWalkList;   // The list of points we are walking to

	Real mWalkSpeed;                 // The speed at which the object is moving
};



class MoveDemoApplication : public ExampleApplication
{
protected:
public:
	MoveDemoApplication()
	{
	}

	~MoveDemoApplication() 
	{
	}
protected:
	Entity *mEntity;                // The entity of the object we are animating
	SceneNode *mNode;               // The SceneNode of the object we are moving
	std::deque<Vector3> mWalkList;  // A deque containing the waypoints

	void createScene(void)
	{
		mSceneMgr->setAmbientLight( ColourValue( 1.0f, 1.0f, 1.0f ) );
		// Create the entity
		mEntity = mSceneMgr->createEntity( "ninja", "ninja.mesh" );

		// Create the scene node
		mNode = mSceneMgr->getRootSceneNode( )->
			createChildSceneNode( "RobotNode", Vector3( 0.0f, 0.0f, 25.0f ) );
		mNode->attachObject( mEntity );
		// Create the walking list
		mWalkList.push_back( Vector3( 550.0f,  0.0f,  50.0f  ) );
		mWalkList.push_back( Vector3(-100.0f,  0.0f, -200.0f ) );

		// Create objects so we can see movement
		Entity *ent;
	
		Plane plane(Vector3::UNIT_Y, 0);
		MeshManager::getSingleton().createPlane("ground",
			ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, plane,
			1500,1500,20,20,true,1,5,5,Vector3::UNIT_Z);
		ent = mSceneMgr->createEntity("GroundEntity", "ground");
		mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(ent);
		ent->setMaterialName("Examples/Rockwall");
		ent->setCastShadows(false);

		mSceneMgr->setSkyDome( true, "Examples/CloudySky", 5, 8 );
/////////////////////////////////////////////////////////////////////////////////
		Viewport* vp = mCamera->getViewport();

		CompositorManager* cMgr = CompositorManager::getSingletonPtr();

		cMgr->addCompositor(vp, "Bloom", -1);
		cMgr->setCompositorEnabled(vp, "Bloom", true);

		CompositorInstance* ci = cMgr->addCompositor(vp, "Motion Blur", -1);
		cMgr->setCompositorEnabled(vp, "Motion Blur", true);
		

		ci->getTechnique()->getTargetPass(0)->setInputMode(CompositionTargetPass::IM_PREVIOUS);
///////////////////////////////////////////////////////////////////////////////

	}

	void createFrameListener(void)
	{
		mFrameListener= new MoveDemoListener(mWindow, mCamera, mNode, mEntity, mWalkList);
		mFrameListener->showDebugOverlay(true);
		mRoot->addFrameListener(mFrameListener);
	}

};


#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
#include "windows.h"


INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
#else
int main(int argc, char **argv)
#endif
{
	// Create application object
	MoveDemoApplication app;

	try {
		app.go();
	} catch( Exception& e ) {
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
		MessageBox( NULL, e.getFullDescription().c_str(), "An exception has occured!",
			MB_OK | MB_ICONERROR | MB_TASKMODAL);
#else
		fprintf(stderr, "An exception has occured: %s\n",
			e.getFullDescription().c_str());
#endif
	}


	return 0;
}
Post Reply