vega prime天气切换

    xiaoxiao2022-06-22  22

    // 天气类型 :1,晴天;2,阴天 ;3,雾天 ;4,雨天 ;5,雪天 void PublicMember::setWeather(int WeatherType) { char str[256], *cp = getenv("MPI_LOCATE_VEGA_PRIME"); vpEnv* m_env= * vpEnv::begin(); vpEnvSun* m_sun=* vpEnvSun::begin(); vpEnvSkyDome* m_skyDome=* vpEnvSkyDome::begin(); vpEnvCloudLayer* m_cloudLayer=* vpEnvCloudLayer::begin(); vpEnvWind* m_wind=* vpEnvWind::begin(); vpEnvSnow* m_snow=* vpEnvSnow::begin(); vpEnvRain* m_rain=* vpEnvRain::begin(); switch (WeatherType) { case 1: // 默认值,晴天 m_env->setVisibilityColor(1.0f, 1.0f, 1.0f, 1.0f); m_env->setVisibilityRangeOpaque(60000.0f); m_sun->setHorizonColor(1.0f, 0.545f, 0.239f, 1.0f); m_skyDome->setGroundColor(0.2117f, 0.286f, 0.15f, 1.0f); sprintf(str, "%s/config/vegaprime/vpenv/cloud_scattered.inta", cp); m_cloudLayer->setTextureFile(str); m_cloudLayer->setTextureTiling(3.0f, 3.0f); m_cloudLayer->setColor(0.96f, 0.98f, 0.98f, 1.0f); m_cloudLayer->setElevation(3000.0f, 5000.0f); m_cloudLayer->setTransitionRange(500.0f, 500.0f); m_wind->setSpeed(100.0f); m_snow->setEnable(false); m_rain->setEnable(false); break; case 2: //阴天 m_env->setVisibilityColor(1.0f, 1.0f, 1.0f, 1.0f); m_env->setVisibilityRangeOpaque(100000.0f); m_sun->setHorizonColor(1.0f, 0.6f, 0.29f, 1.0f); m_skyDome->setGroundColor(0.33f, 0.29f, 0.15f, 1.0f); sprintf(str, "%s/config/vegaprime/vpenv/cloud_few.inta", cp); m_cloudLayer->setTextureFile(str); m_cloudLayer->setTextureTiling(5.0f, 5.0f); m_cloudLayer->setColor(0.96f, 0.98f, 0.98f, 1.0f); m_cloudLayer->setElevation(3000.0f, 5000.0f); m_cloudLayer->setTransitionRange(500.0f, 500.0f); m_wind->setSpeed(15.0f); m_snow->setEnable(false); m_rain->setEnable(false); break; case 3: //雾天 m_env->setVisibilityColor(0.75f, 0.75f, 0.75f, 1.0f); m_env->setVisibilityRangeOpaque(5000.0f); m_sun->setHorizonColor(1.0f, 0.6f, 0.29f, 1.0f); m_skyDome->setGroundColor(0.8f, 0.82f, 0.83f, 1.0f); sprintf(str, "%s/config/vegaprime/vpenv/cloud_overcast.inta", cp); m_cloudLayer->setTextureFile(str); m_cloudLayer->setTextureTiling(3.0f, 3.0f); m_cloudLayer->setColor(0.69f, 0.75f, 0.77f, 1.0f); m_cloudLayer->setElevation(500.0f, 3000.0f); m_cloudLayer->setTransitionRange(500.0f, 500.0f); m_wind->setSpeed(0.0f); m_snow->setEnable(false); m_rain->setEnable(false); break; case 4: //雨天 m_env->setVisibilityColor(0.40f, 0.43f, 0.45f, 1.0f); m_env->setVisibilityRangeOpaque(50000.0f); m_sun->setHorizonColor(0.65f, 0.45f, 0.25f, 1.0f); m_skyDome->setGroundColor(0.33f, 0.29f, 0.15f, 1.0f); sprintf(str, "%s/config/vegaprime/vpenv/cloud_storm.inta", cp); m_cloudLayer->setTextureFile(str); m_cloudLayer->setTextureTiling(3.0f, 3.0f); m_cloudLayer->setColor(0.52f, 0.56f, 0.61f, 1.0f); m_cloudLayer->setElevation(1000.0f, 4000.0f); m_cloudLayer->setTransitionRange(500.0f, 500.0f); m_wind->setSpeed(5.0f); m_snow->setEnable(false); m_rain->setEnable(true); m_rain->setNumParticles( 500000 ); break; case 5: // 雪天 m_env->setVisibilityColor(0.40f, 0.43f, 0.45f, 1.0f); m_env->setVisibilityRangeOpaque(50000.0f); m_sun->setHorizonColor(0.65f, 0.45f, 0.25f, 1.0f); m_skyDome->setGroundColor(0.33f, 0.29f, 0.15f, 1.0f); sprintf(str, "%s/config/vegaprime/vpenv/cloud_storm.inta", cp); m_cloudLayer->setTextureFile(str); m_cloudLayer->setTextureTiling(3.0f, 3.0f); m_cloudLayer->setColor(0.52f, 0.56f, 0.61f, 1.0f); m_cloudLayer->setElevation(1000.0f, 4000.0f); m_cloudLayer->setTransitionRange(500.0f, 500.0f); m_wind->setSpeed(5.0f); m_snow->setEnable(true); m_snow->setNumParticles( 500000); m_rain->setEnable(false); break; default: break; } }   //注意事项,雨雪的颗粒数可以控制效果,默认值的数目太小,效果不明显。 vpEnvSnow* pEnvSnow_myEnvSnow = new vpEnvSnow(); pEnvSnow_myEnvSnow->setName( "myEnvSnow" ); pEnvSnow_myEnvSnow->setEnable( false ); pEnvSnow_myEnvSnow->setColor( 1.000000f , 1.000000f , 1.000000f , 1.000000f ); pEnvSnow_myEnvSnow->setTextureBlendColor( 1.000000f , 1.000000f , 1.000000f , 1.000000f ); pEnvSnow_myEnvSnow->setTextureBlendMode( vpEnvFx::TEXTURE_BLEND_MODE_MODULATE ); pEnvSnow_myEnvSnow->setTextureFile( "" ); pEnvSnow_myEnvSnow->setNumParticles( 50000); //颗粒数需要设置较多,效果才明显 pEnvSnow_myEnvSnow->setEmitterBoxSize( 10 ); pEnvSnow_myEnvSnow->setInternalClipBoxEnable( false ); pEnvSnow_myEnvSnow->setInternalClipBoxSize( 2 ); PublicMember::CTS_s_pInstancesToUnref->push_back( pEnvSnow_myEnvSnow ); vpEnvRain* pEnvRain_myEnvRain = new vpEnvRain(); pEnvRain_myEnvRain->setName( "myEnvRain" ); pEnvRain_myEnvRain->setEnable( false ); pEnvRain_myEnvRain->setColor( 1.000000f , 1.000000f , 1.000000f , 1.000000f ); pEnvRain_myEnvRain->setTextureBlendColor( 1.000000f , 1.000000f , 1.000000f , 1.000000f ); pEnvRain_myEnvRain->setTextureBlendMode( vpEnvFx::TEXTURE_BLEND_MODE_MODULATE ); pEnvRain_myEnvRain->setTextureFile( "" ); pEnvRain_myEnvRain->setNumParticles( 50000 ); //颗粒数需要设置较多,效果才明显 pEnvRain_myEnvRain->setEmitterBoxSize( 10 ); pEnvRain_myEnvRain->setInternalClipBoxEnable( false ); pEnvRain_myEnvRain->setInternalClipBoxSize( 2 ); PublicMember::CTS_s_pInstancesToUnref->push_back( pEnvRain_myEnvRain );

    //函数体

    转载请注明原文地址: https://ju.6miu.com/read-1122949.html

    最新回复(0)