`
daojin
  • 浏览: 696006 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

关于Fast Terrain Rendering Using Geometrical MipMapp

阅读更多

在3D中,LOST OF DETAIL 是一种避免过多渲染细节的方法。
使用一些列的级别细节图来模拟LOST OF DETAIL;
但是如何选择合适的距离来使用不同的细节图呢?
下面一个方法。
[img]

 



 [/img]

 

在以上图中:

    errorH表示图块失去细节后所失去的高度。

因此根据三角形相似可以求出d.

   CB 为errorH的投影。

当CB为一个阀值的时候,errorH可以被忽略。

errorH越远,CB越短,当短到人的肉眼可以忽略的时候,说明errorH从错误变成了可以忽略的误差。这个时候,细节图可以被更高级别模糊度的图块所取代。

 

 

公式就是三角形相似外加坐标转换,像素坐标转换为自定义坐标。

 

 

代码如下:

 

//earlier in the file:
inline int PINDEX( int x, int z ) { return x * 33 + z; }


void CScape::CalcErrors( float MaxError, int Vres, float FoV, float NearClip )
{
	//vars for de Boer's equations
	float C, A, T;

	T = 2 * MaxError / Vres;
	//convert FoV to radians
	FoV *= PI / 180.0f;
	A = 1.0f / (float) tan( FoV / 2.0f );
	C = A / T;

	//go through all of the vertices that will be removed and calc errors
	/*
	*-----*-----*-----*-----*
	|     |     |     |     |
	|     |     |     |     |
	|     |     |     |     |
	|     |     |     |     |
	*-----*-----*-----*-----*
	|     |     |     |     |
	|     |     |     |     |
	|     |     |     |     |
	|     |     |     |     |
	*-----*-----*-----*-----*
	|     |     |     |     |
	|     |     |     |     |
	|     |     |     |     |
	|     |     |     |     |
	*-----*-----*-----*-----*
	|     |     |     |     |
	|     |     |     |     |
	|     |     |     |     |
	|     |     |     |     |
	*-----*-----*-----*-----*	
	*/

	int x, z, l, p;
	ScapePatch* Patch;
	float Delta;
	ScapeVertex* Vert;

	for( p = 0; p < m_NumPatches; ++p )
	{
		Patch = &m_Patches[p];
		Delta = 0.0f;

		for( l = 0; l < 4; l++ )
		{
			int start = (int)fastpow( 2.0f, l );
			int inc = start*2;
			//first set of removed vertices
			for( x = start; x < 33; x+=inc )
			{
				for( z = start; z < 33; z+=inc )
				{
					Vert = &Patch->Vertices[PINDEX(x,z)];
					Delta = Max( Delta, fabsf(Vert->y-(Patch->Vertices[PINDEX(x-start,z-start)].y + Patch->Vertices[PINDEX(x+start,z+start)].y) / 2.0f) );
					Delta = Max( Delta, fabsf(Vert->y-(Patch->Vertices[PINDEX(x+start,z-start)].y + Patch->Vertices[PINDEX(x-start,z+start)].y) / 2.0f) );
				}
			}

			Patch->D[l] = Delta * C;
		}
	}
}

 
完毕。

 

 

 

 

 

 

 

 

  • 大小: 4.3 KB
分享到:
评论

相关推荐

    Terrain Rendering Using GPU-Based Geometry Clipmaps

    ### 地形渲染使用基于GPU的几何剪贴图 #### 1. 引言与背景 地形渲染一直是计算机图形学中的一个重要课题,特别是在大规模户外场景的实时渲染中尤为重要。随着硬件技术的发展,尤其是GPU(图形处理器)的强大计算...

    地形渲染的论文(Terrain Rendering Using Geometry Clipmaps)

    ### 地形渲染中的几何剪贴图技术 #### 引言 地形渲染是计算机图形学领域的一个重要课题,尤其在游戏开发、虚拟现实以及地理信息系统等应用中扮演着至关重要的角色。随着硬件性能的不断提升,如何高效地在实时帧率下...

    《Real-Time 3D Terrain Engines Using C++ And DirectX 9 》 .

    《Real-Time 3D Terrain Engines Using C++ And DirectX 9 》.rar《Real-Time 3D Terrain Engines Using C++ And DirectX 9 》.rar《Real-Time 3D Terrain Engines Using C++ And DirectX 9 》.rar《Real-Time 3D ...

    [JSR-184][3D编程指南]Part V: Heightmap terrain rendering using M3G

    【JSR-184】是Java Micro Edition (Java ME) 中的一项标准,它定义了Mobile 3D Graphics API,也称为M3G。M3G是为了在移动设备上实现高性能的3D图形渲染而设计的,使得开发者可以创建丰富的3D游戏和应用。...

    《Real-Time 3D Terrain Engines using C++ and DirectX9》中、英文电子书和官方完整源代码更新V1.6

    《Real-Time 3D Terrain Engines using C++ and DirectX9》中、英文电子书和官方完整源代码更新V1.6。英文电子书为原书图片扫描,中文电子书为承天一的翻译文字版。

    Real Time 3D Terrain Engines Using C++ And Dx9.src.(full)

    《实时3D地形引擎使用C++与DirectX 9》是一个深入探讨3D游戏开发的资源,特别是关于地形渲染技术的实现。这个压缩包包含了完整的源代码,对于学习和研究实时3D图形编程的开发者来说非常宝贵。由于书中涉及的技术基于...

    [翻译]Real-Time 3D Terrain Engines Using C++ And DirectX9(1-6章)

    《实时3D地形引擎使用C++与DirectX9》是一本深入探讨三维地形渲染技术的专业书籍,由clayman大牛推荐并进行了部分章节的中文翻译。本书主要针对使用C++编程语言和DirectX9图形库来实现高效、实时的3D地形渲染引擎。...

    [翻译]Real-Time 3D Terrain Engines Using C++ And DirectX9(1-9章)

    《实时地形引擎》是关于利用C++和DirectX9开发实时3D地形渲染引擎的一份技术文档,由clayman大牛推荐并进行了中文翻译。本文将深入探讨这个主题,覆盖了从第一章到第九章的主要内容,旨在为读者提供一个全面的理解,...

    real-time 3D terrain engine using C++ and directX

    《实时3D地形引擎》是Greg Snook撰写的一本经典技术书籍,专注于使用C++和DirectX开发3D地形渲染引擎。这本书对于那些希望深入理解3D图形编程,特别是涉及地形渲染的开发者来说,是一份宝贵的资源。...

    Real Time 3D Terrain Engines Using C++ And Dx9

    《实时3D地形引擎使用C++和DirectX9》是一本深入探讨3D游戏开发技术的专业书籍,主要针对使用C++编程语言和DirectX 9图形库创建实时三维地形渲染引擎的主题。书中详细阐述了如何利用这两种强大的工具来构建高效、高...

    Terrain+Rendering+Using+GPU-Based+Geometry+Clipmaps

    地形渲染是一项在图形学领域中极为重要的技术,它在游戏、虚拟现实、飞行模拟等场景中有着广泛的应用。随着计算机图形硬件的发展,如GPU的进步,对于渲染技术的需求也越来越高。GPU-Based Geometry Clipmaps是近年来...

    Andersson-Terrain_Rendering_in_Frostbite

    这是一本介绍战地3地形技术的书籍,很使用的书籍

    GPU TERRAIN RENDERING

    ### GPU地形渲染技术详解 #### 概述 随着图形处理单元(GPU)能力的不断提升,游戏和模拟应用中的地形渲染技术也在不断进步。传统的地形渲染方法通常涉及在每一帧或每当相机移动时更新地形缓冲区中的所有顶点,...

    terrain-rendering.rar_opengl terrain_terrain

    使用OpenGL进行地形的绘制,可以在程序外部自行修改样貌,并在程序中进行渲染

    Real Time 3D Terrain Engines Using C++ And DirectX 9源代码

    《C++与DirectX 9实现实时3D地形引擎》是一个深入探讨3D图形编程的项目,主要聚焦于使用这两种技术构建高效的实时地形渲染引擎。这个项目的核心是通过C++编程语言和DirectX 9图形库来实现,旨在提供一个交互式的、...

    [翻译]Real-Time 3D Terrain Engines Using C++ And DirectX9

    《实时3D地形引擎开发:基于C++与DirectX9》是一本专注于3D游戏开发技术的专业书籍,主要探讨如何利用这两种技术构建高效、实时的3D地形渲染系统。书中详细讲解了C++编程语言和DirectX9图形库在3D引擎开发中的应用,...

    Terrain To Mesh 2021 v2021.5

    Terrain To Mesh 2021 is new rebuild, upgraded and improved version of Terrain ...• Holes in mesh are supported as Alpha Cutout effect using shaders – the same way as it is done by Unity terrain system.

Global site tag (gtag.js) - Google Analytics