【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 2960|回复: 1

[OGRE引擎] OGRE新手教程---(3)

[复制链接]
发表于 2008-12-1 14:10:40 | 显示全部楼层 |阅读模式

#include "ExampleApplication.h"

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

 ~TutorialApplication()
 {
 }
protected:
 //virtual void createCamera(void)
 //{
 // mCamera = mSceneMgr->createCamera("PlayerCam");
 //}

 //virtual void createViewports(void)
 //{
 // Viewport* vp = mWindow->addViewport(mCamera);
 // vp->setBackgroundColour(ColourValue(255,0,0));
 //  mCamera->setAspectRatio(Real(vp->getActualWidth()) / Real(vp->getActualHeight()));   
 //}

 void createScene(void)
 {

  
  Entity *ent;
  Light *light;

  //设置电光源
  //light = mSceneMgr->createLight("Light1");
  //light->setType(Light:T_POINT);
  //light->setPosition(Vector3(20, 550, 450));
  //light->setDiffuseColour(1.0, 0.0, 0.0);
  //light->setSpecularColour(1.0, 0.0, 0.0);

  //设置一个方向光
  light = mSceneMgr->createLight("Light3");
  light->setType(Light:T_DIRECTIONAL);
  light->setDiffuseColour(ColourValue(.25, .25, 0));
  light->setSpecularColour(ColourValue(.25, .25, 0));
  light->setDirection(Vector3( 0, -1, 1 ));

  //设置一个聚光灯
  //light = mSceneMgr->createLight("Light2"
  //light->setType(Light:T_SPOTLIGHT);
  //light->setDiffuseColour(0, 0, 1.0);
  //light->setSpecularColour(0, 0, 1.0);
  //light->setDirection(-1, -1, 0);
  //light->setPosition(Vector3(300, 300, 0));
  //light->setSpotlightRange(Degree(35), Degree(50));

  //设置环境光
  mSceneMgr->setAmbientLight( ColourValue( 1, 1, 1 ) );
  Entity *ent1 = mSceneMgr->createEntity( "Robot", "robot.mesh" );
  SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode" );
  node1->attachObject( ent1 );
  node1->translate( Vector3( 50, 0, 200 ) );

  //Entity *ent2 = mSceneMgr->createEntity( "Robot2", "robot.mesh" );
  //SceneNode *node2 = mSceneMgr->getRootSceneNode()->createChildSceneNode("RobotNode2", Vector3( 50, 0, 0 ) );
  //SceneNode *node2 = node1->createChildSceneNode( "RobotNode2", Vector3( 50, 0, 0 ) );

  //node2->attachObject( ent2 );
  //node2->scale( .5, .5, .5 );
  //node2->yaw( Degree( 90 ) );
  //node1->translate( Vector3( 10, 0, 10 ) );

  //设置阴影模式
  mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_MODULATIVE);
  ent = mSceneMgr->createEntity("Ninja", "ninja.mesh");  //创建忍者模型
  SceneNode *node2 = mSceneMgr->getRootSceneNode()->createChildSceneNode("RobotNode2", Vector3( 50, 0, 0 ) );//把忍者模型放在了场景节点中
  node2->yaw(Degree( 60 ));
  node2->attachObject( ent );
  ent->setCastShadows(true);
  //mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(ent);

  
  //创建地面模型
  lane plane(Vector3::UNIT_Y, 0);
  MeshManager::getSingleton().createPlane("ground",ResourceGroupManager:EFAULT_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);

 }
};

#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
 TutorialApplication 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;
}

发表于 2009-7-28 09:25:03 | 显示全部楼层

继续期待中....[em52]

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2025-2-6 09:51

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表