6.light

来源:互联网 发布:神话崔文子 知乎 编辑:程序博客网 时间:2024/05/17 03:35

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));
平行光,想成太阳光就是了。