理论教育 雨雪天气控制,如何应对恶劣天气条件?

雨雪天气控制,如何应对恶劣天气条件?

时间:2023-11-25 理论教育 版权反馈
【摘要】:图6.24.1环境特效控制本节只讨论环境、太阳、天幕、云层、风、雪和雨,其他特效读者可自行查询相关资料。图6.24.2环境控制实现代码整个设计大体分为两类:晴天、阴天和雾天基本是依靠纹理进行设计;雨天和下雪天依靠粒子特效完成。如图6.24.3所示,分别调用函数,实现功能:PublicMember::setWeather;//晴天PublicMember::setWeather;//阴天PublicMember::setWeather;//雾天PublicMember::setWeather;//雨天PublicMember::setWeather;//雪天读者可以对其中的参数进行修改设置,以达到用户的需求。图6.24.3环境特效控制

雨雪天气控制,如何应对恶劣天气条件?

环境的控制,主要是对环境及其特效的控制,主要包含环境(vpEnv)、太阳(EnvSun)、月亮(EnvMoon)、天幕(EnvSkyDome)、云层(EnvCloudLayer)、星星(EnvStars)、云柱体(EnvCloudVolume)、雪(EnvSnow)、雨(EnvRain)、风(EnvWind)、风层(EnvWindLayer)和风柱体(EnvWindVolume),如图6.24.1所示,这些特效都可以在LynX Prime 界面中完成,然后再导出相关代码即可。

图6.24.1 环境特效控制

本节只讨论环境、太阳、天幕、云层、风、雪和雨,其他特效读者可自行查询相关资料。

在导出的cpp 代码中,主要涉及环境及其相关特效的声明:

vpEnv* pEnv_myEnv=new vpEnv();

vpEnvSun* pEnvSun_myEnvSun=new vpEnvSun();

vpEnvSkyDome* pEnvSkyDome_myEnvSkyDome=new vpEnvSkyDome();

vpEnvCloudLayer* pEnvCloudLayer_myEnvCloudLayer=new vpEnvCloudLayer();

vpEnvWind* pEnvWind_myEnvWind=new vpEnvWind();

vpEnvSnow* pEnvSnow_myEnvSnow=new vpEnvSnow();

vpEnvRain* pEnvRain_myEnvRain=new vpEnvRain();

另外,包含把以下特效添加进环境的代码:

pEnv_myEnv->addEnvFx(pEnvSun_myEnvSun);

pEnv_myEnv->addEnvFx(pEnvMoon_myEnvMoon);

pEnv_myEnv->addEnvFx(pEnvSkyDome_myEnvSkyDome);

pEnv_myEnv->addEnvFx(pEnvCloudLayer_myEnvCloudLayer);

pEnv_myEnv->addEnvFx(pEnvWind_myEnvWind);

pEnv_myEnv->addEnvFx(pEnvRain_myEnvRain);

pEnv_myEnv->addEnvFx(pEnvSnow_myEnvSnow);

把这些特效的相关代码放进define()函数即可。

以下是下雪特效的相关代码:

其中,使能开关的代码为:

pEnvSnow_myEnvSnow->setEnable(false);

为了能够控制其使能,开始设置为关闭,也就是设置其使能值为false。

设置特效颗粒数的代码:

pEnvSnow_myEnvSnow->setNumParticles(50000);

默认值为50,其值太小,效果不明显。读者也可以根据需要调整数字。(www.daowen.com)

以下是下雨特效的相关代码:

其中,使能开关的代码为:

pEnvRain_myEnvRain->setEnable(false);;

为了能够控制其使能,开始设置为关闭,也就是设置其使能值为false。

设置特效颗粒数的代码:

pEnvRain_myEnvRain->setNumParticles(50000);

默认值为50,其值太小,效果不明显。读者也可以根据需要调整数字。

把相关环境特效加入到define 函数后,就可以通过代码来控制其状态和效果。设计了一个PublicMember的静态成员函数:

void setWeather(int WeatherType);

便于设置天气状况,其中的参数WeatherType 为整数类型:其值为1时,设置天气为晴天;其值为2时,设置天气为阴天;其值为3时,设置天气为雾天;其值为4时,设置天气为雨天;其值为5时,设置天气为雪天。

整个详细代码如图6.24.2所示。其中,声明函数:

static void setWeather(int WeatherType=1);

首先设置为静态成员,然后让WeatherType的默认值为1,即为晴天。

图6.24.2 环境控制实现代码

整个设计大体分为两类:晴天、阴天和雾天基本是依靠纹理进行设计;雨天和下雪天依靠粒子特效完成。

如图6.24.3所示,分别调用函数,实现功能:

PublicMember::setWeather(1);//晴天

PublicMember::setWeather(2);//阴天

PublicMember::setWeather(3);//雾天

PublicMember::setWeather(4);//雨天

PublicMember::setWeather(5);//雪天

读者可以对其中的参数进行修改设置,以达到用户的需求。

图6.24.3 环境特效控制

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈