1.point light
Ogre::Light* light1 = mSceneMgr ->createLight("Light1");
light1 ->setType(Ogre::Light::LT_POINT);
light1 ->setPosition(0, 20, 0);
light1 ->setDiffuseColour(1.0f, 1.0f, 1.0f);
上面是创建light的主要代码,light没有可视实体。
2.spotlight
Ogre::SceneNode* node2 = node ->createChildSceneNode("node2");
node2 ->setPosition(0, 100, 0);
Ogre::Light* light = mSceneMgr ->createLight("Light1");
light ->setType(Ogre::Light::LT_SPOTLIGHT);
light ->setDirection(Ogre::Vector3(-20, -1, 0));
light ->setSpotlightInnerAngle(Ogre::Degree(10.0f));
light ->setSpotlightOuterAngle(Ogre::Degree(45.0f));
light ->setSpotlightFalloff(0.1f);
light ->setDiffuseColour(Ogre::ColourValue(0.0f, 1.0f, 0.0f));
node2 ->attachObject(light);
接下来是聚光源。只是多了几个属性而已。这里用到了ColourValue,并且将light绑到node2上。
设置聚光源的主要属性也可以用下面句子实现:
light ->setSpotlightRange(innerAngle, outerAngle, falloff);
这样明显简洁多了。
3.directional light
Ogre::Light* light = mSceneMgr ->createLight("Light1");
light ->setType(Ogre::Light::LT_DIRECTIONAL);
light ->setDiffuseColour(Ogre::ColourValue(1.0f, 1.0f, 1.0f));
light ->setDirection(Ogre::Vector3(1, -1, 0));
平行光,想成太阳光就是了。