• Ogre 学习笔记 (二) 环境:阴影 、雾效、灯光


    1. 雾效

    雾的类型:线性和指数,线性雾呈线性增长厚度,指数雾呈指数增长厚度。每个单位距离的雾,后者增长的快。

    ColourValue fadeColour(0.9,0.9,0.9);

    mWindow->getViewport(0)->setBackgroundColour(fadeColour); //如果有多个视口,用getNumViewports来获取视口数

    mSceneMgr->setFog(FOG_LINEAR,fadeColour,0.0,50,500); //第一个参数是雾的类型,第二个参数是雾的颜色,第三个参数对于线性雾是没用的,第四个参数和第五个参数表示雾的厚度范围。

    mSceneMgr->setFog(FOG_EXP,fadeColour,0.005); //指数雾不需要指定起始和结束,而需要指定密度

    雾是曲化的形式存在,因此在和其他平面相交的地方会出问题,解决方案是用曲面和它接触。

    2.阴影

    全面支持多种阴影技术,包括模版阴影(stencil),纹理阴影(texture),叠加阴影(additive),调制阴影(modulative)。

    先创建环境光,再设定shadow的类型。

    mSceneMgr->setAmbientLight(ColourValue(0,0,0));

    mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE); //阴影类型为叠加阴影

    ent=mSceneMgr->createEntity("Robot","robot.mesh");

    ent->setCastShadows(true);

    3.灯光

    光类型:点光源,聚光灯,方向光

    光特征:漫反射,镜面反射

    light=mSceneMgr->createLight("light1");

    light->setType(Light::LT_POINT);   //光类型为点光源

    light->setPosition(Vector3(0,150,250)); //灯光本身只有2个函数setPosition和setDirection

    light->setDiffuseColour(1.0,0.0,0.0);   //漫反射

    light->setSpecularColour(1.0,0.0,0.0);   //镜面反射

    light=mSceneMgr->CreateLight("light2");   //加一个黄色的方向光照到Robot的前面

    light->setType(Light::LT_DIRECTIONAL);

    light->setDiffuseColour(ColourValue(.25,.25,0));

    light->setSpecularColour(ColourValue(.25,.25,0));

    light->setDirection(Vector3(0,-1,1)); //方向光是从无限远的发出的点光源,所以是平行光,不需要指定位置,仅仅需要用向量来表示它的方向

    light=mSceneMgr->createLight("light3"); //加一个蓝色的聚光灯

    light->setType(Light::LT_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)); //聚光灯光束有宽度,包括两个部分,核心光束和周边光束。

  • 相关阅读:
    student
    super
    java 浮点数
    视图
    日期转换函数
    左外连接,右外连接,全外连接,自然连接,自连接区别
    Python中sys.argv[ ]的用法
    0 Scala
    统计字符串字符个数
    3个链表排序整合到一起
  • 原文地址:https://www.cnblogs.com/easyfrog/p/2849775.html
Copyright © 2020-2023  润新知