⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 viewerview.cpp

📁 天空绘制
💻 CPP
字号:
//-----------------------------------------------------------------------------
//
// @doc
//
// @module	ViewerView.cpp - View main view support |
//
// This module contains the support for the main view.
//
// Copyright (c) 1999 - Descartes Systems Sciences, Inc.
//
// @end
//
// $History: DcComEngGenConfigurePage.h $
//
//-----------------------------------------------------------------------------

#include "stdafx.h"
#include "Viewer.h"
#include "ViewerView.h"
#include "../_CoreLib/Script.h"
#include "../_CoreLib/Exception.h"
#include "../_CoreLib/Matrix.h"
#include "../_CoreLib/Utility.h"
#include "../_CoreLib/PerformanceTimer.h"
#include "../_MeshLib/MeshObj.h"
#include "../_MeshLib/Hull.h"
#include "../_RenderLib/Landscape.h"
#include "../_RenderLib/RenderGlobals.h"
#include "SelectDlg.h"

//
// Debug new
//

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

//-----------------------------------------------------------------------------
//
// @mfunc <c CViewerView> constructor.
//
// @rdesc None.
//
//-----------------------------------------------------------------------------

CViewerView::CViewerView ()
{

	//
	// Initialize the sun
	//

	m_sSkySun .Create (
		CSkyBody::Type_Sun,						// type
		"env/sun",								// texture
		0.0f,									// longitude of the ascending node
		23.4393f,								// Incliation to the ecliptic
		282.9404f,								// Argument of perihelion
		149600000.0f,							// Mean distance
		0.016709f,								// Eccentricity
		356.0470f,								// Mean anomaly
		0.9856002585f,							// Mean anomaly adjust
		695000.0f,								// Radius of body
		CVector3 (.7f, .7f, .5f),				// Daytime color
		CVector3 (.7f, .5f, .5f)				// Nighttime color
		);

	//
	// Initialize the sun flare
	//

	m_sSkySunFlare .Create (
		CSkyBody::Type_Flare,					// type
		"effects/flare1",						// texture
		0.0f,									// longitude of the ascending node
		23.4393f,								// Incliation to the ecliptic
		282.9404f,								// Argument of perihelion
		149600000.0f,							// Mean distance
		0.016709f,								// Eccentricity
		356.0470f,								// Mean anomaly
		0.9856002585f,							// Mean anomaly adjust
		8 * 695000.0f,							// Radius of body
		CVector3 (.4f, .4f, .0f),				// Daytime color
		CVector3 (.4f, .2f, .0f)				// Nighttime color
		);

	//
	// Initialize the moon
	//

	m_sSkyMoon .Create (
		CSkyBody::Type_Moon, 					// type
		"env/moon", 							// texture
		125.1228f, 								// longitude of the ascending node
		5.1454f, 								// Incliation to the ecliptic
		318.0634f, 								// Argument of perihelion
		384000.0f,								// Mean distance
		0.054900f,								// Eccentricity
		115.3654f, 								// Mean anomaly
		13.0649929509f, 						// Mean anomaly adjust
		1738.0f,								// Radius of body
		CVector3 (.1f, .1f, .1f), 				// Daytime color
		CVector3 (.4f, .4f, .4f)				// Nighttime color
		);

	//
	// Initialize the clouds
	//

	m_sSkyClouds1 .Create (
		CSkyClouds::Type_Clouds,				// type
		"env/clouds",							// texture
		CVector2 (0.0, 1.0),					// texture speed
		1.0f,									// texture scale
		CVector3 (0.5f, 0.5f, 0.5f),			// daytime color
		CVector3 (0.11f, 0.10f, 0.09f),			// nighttime color
		1.0f									// transition gamma
		);

	m_sSkyClouds2 .Create (
		CSkyClouds::Type_Clouds, 				// type
		"env/clouds", 							// texture
		CVector2 (1.0, 5.0), 					// texture speed
		0.25f, 									// texture scale
		CVector3 (0.3f, 0.3f, 0.3f),			// daytime color
		CVector3 (0.11f, 0.10f, 0.09f),			// nighttime color
		1.0f									// transition gamma
		);

	m_sSkyStars .Create (
		CSkyClouds::Type_Stars, 				// type
		"env/stars", 							// texture
		CVector2 (7.0f, 0.0), 					// texture speed
		1.0f / 24.0f,							// texture scale 
		CVector3 (0.0f, 0.0f, 0.0f),			// daytime color
		CVector3 (0.2f, 0.2f, 0.2f),			// nighttime color
		0.3f									// transition gamma
		);

	//
	// Initialize the sky dome
	//

	g_sSkyDome .Create (
		8,										// resolution
		55,										// sweep in degrees
		1024 * 12,								// size at horizon
		1.0f,									// height scale factor
		CVector3 (0, 0, -512 * 10),				// offset
		CVector3 (1.0f, 1.0f, 1.0f),			// day ambient
		CVector3 (0.4f, 0.4f, 0.4f),			// night ambient
		CVector3 (0.25f, 0.31f, .63f),			// day sky color
		CVector3 (0.1f, 0.1f, 0.11f)			// night sky color 
		);
	
	//
	// Add the bodies and clouds to the sky dome
	//

	g_sSkyDome .AddBody (&m_sSkyMoon);
	g_sSkyDome .AddBody (&m_sSkySunFlare);
	g_sSkyDome .AddBody (&m_sSkySun);
	g_sSkyDome .AddClouds (&m_sSkyStars);
	g_sSkyDome .AddClouds (&m_sSkyClouds1);
	g_sSkyDome .AddClouds (&m_sSkyClouds2);

	//
	// Compute starting values for the sky
	// (Must be done at start of every frame)
	//

	g_sSkyDome .ComputePositions (0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -