摘要: 使用VPB进行三维地形建模主要分为如下几个步骤:一. 数据获取数据分为地形高程数据和纹理图像数据。1. 地形高程数据有个人认为几个比较好的下载地点:(1)http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp,从这里可以下载SRTM 90m数据,支持逐个Tile选取,或者拖拽鼠标一次选取多个,或者输入经纬度坐标选取某个区域。不需要注册即可下载。(2)http://gdem.ersdac.jspacesystems.or.jp/search.jsp,位于日本的ASTER GDEM v2数据,需要注册才能下载,数据的选取方式和(1)差不多,一次最多只能 阅读全文
posted @ 2013-05-28 20:43 Sylla Zhang 阅读(2334) 评论(0) 推荐(0) 编辑
摘要: 虽然说扒GE的图片不大光彩,但实在是买不起那些高昂的卫星图片服务,所以只好为之了。下面介绍下怎么去获取GE上的卫星图片:以前也有很多人讲过获取卫星图片的方法,甚至还有一些牛人编出了可以现用的程序,但是最近Google修改了其对卫片的命名方式,导致以前的方法或软件不再有效了;但是扒的原理还是一致的。我总结的获取GE卫片的新方法的步骤如下:1. 获取Google对卫片的命名方式,以及感兴趣地点附近卫片的名字:从浏览器打开Google地图,定位到感兴趣的地点,然后再切换到卫星地图模式;然后进入浏览的缓存目录,找到刚才浏览下载下来的卫星图片数据,拷贝它们的名字,我们就可以获得Google对卫片的命名方 阅读全文
posted @ 2013-01-22 10:55 Sylla Zhang 阅读(2098) 评论(0) 推荐(0) 编辑
摘要: 1. 对于找不到nvtt.dll的问题,解决办法是:把osgdb_nvtt.dll和osgdb_nvttd.dll拷贝到vpb的bin目录下,并分别改为nvtt.dll和nvttd.dll,就不再出现找不到的提示,可以正常工作,这个具体原因暂时不知道;2. 至于运行osgdem不能添加纹理的问题,我的解决办法是取消对纹理使用mipmap,因为默认是开启mipmap的, 即 osgdem -t ps_texture_4k.tif -d ps_height_4k.tif -l 8 -v 0.1 -o puget.ive--no-mip-mapping测试数据来自http://www.cc.gat. 阅读全文
posted @ 2013-01-16 16:59 Sylla Zhang 阅读(855) 评论(0) 推荐(0) 编辑
摘要: 开始在64位Win7系统上编译生成不成功,换成32位的,还是VS2010,并且也不用什么特定的对应版本,我用的是VPB-0.9.11和OSG-3.0.1。并且很多人说的那个libsquish的依赖也是没必要的。在编译生成过程中,可能会出现下面的错误:osgDB.lib(osg80-osgDB.dll) : error LNK2005: "public: void __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::`vbase destructor'(void)&qu 阅读全文
posted @ 2013-01-16 16:57 Sylla Zhang 阅读(1602) 评论(1) 推荐(0) 编辑
摘要: 至于OSG的编译过程在osgChina论坛中有详细的资料,就不说了。这里说下我使用OSG预编译的二进制包遇到的问题及解决办法。问题:从osgwiki下载链接中下载了OpenSceneGraph-3.0.1-VS10.0.30319-x86-release-12741.7z,解压后进行相应的环境变量配置,然后再vs2010中创建控制台程序,并正确设置了引用目录,库目录,附加依赖项等,然后运行一个简单的OSG程序,如下所示: 1 #include <osgDB\readFile> 2 #include <osgViewer\Viewer> 3 4 int main( int 阅读全文
posted @ 2012-12-16 16:26 Sylla Zhang 阅读(1698) 评论(0) 推荐(0) 编辑
摘要: 对于简单的一维数组动态内存分配和释放,相信大家都是知道的,不过还是举个例子吧:1 int *array1D;2 //假定数组长度为m3 //动态分配空间4 array1D = new int [m];5 //释放6 delete [] array1D;但是,对于多维数组动态分配,大家可能不太熟悉。下面以常见的二维和三维数组为例来说明:1. 二维数组的动态分配和释放 1 int **array2D; 2 //假定数组第一维长度为m, 第二维长度为n 3 //动态分配空间 4 array2D = new int *[m]; 5 for( int i=0; i<m; i++ ) 6 { 7 . 阅读全文
posted @ 2012-10-08 15:06 Sylla Zhang 阅读(27933) 评论(4) 推荐(1) 编辑
摘要: 现在UI对新兴应用或是传统意义上的网站页面似乎变得越来越重要了,UI也的确直接决定了UE,一个好的UI设计对一款应用程序或是网站的成功具有重要作用。这并不是说功能不重要,而是说对一般人而言,可能对一个应用或网页也就只会用到某几个功能,其它的他根本不会用到,甚至都不会知道还有那个功能。这对UI设计的一点启示是:第一,专业化,专注于某一个或不多的几个功能和服务;第二,对想要提供较多功能和服务的应用和网页,在头版页面上只显示某几个功能选项,不要满屏一大堆,对不太常用的放在可以由用户轻易访问到的地方。最后借用苹果的一句话:至繁归于至简! 阅读全文
posted @ 2012-07-13 17:34 Sylla Zhang 阅读(1371) 评论(0) 推荐(0) 编辑
摘要: 在《OpenGL编程指南》中谈到了全局固定坐标系和局部移动坐标系。看到这两个名词,我们可能会问:“那么什么时候使用全局固定坐标系,什么时候使用局部移动坐标系?又如何设定当前使用的坐标系呢?”。事实上,(本人觉得)这两个表面上有所区别的概念只是我们在绘制图形时的不同思考方式而已,根本不存在有个函数可以让我们选择使用的是全局坐标系或局部坐标系。1.全局固定坐标系:在我们按全局固定坐标系去考虑场景中几个图形的绘制时,我们把对几个图形的模型视图变换操作都认为是相对于固定坐标系的原点的。例如,若我们要绘制一个太阳与其八大行星的场景,我们可以把太阳绘制在固定坐标系的原点,然后依次绘制八大行星。对每一个行星 阅读全文
posted @ 2012-06-24 16:05 Sylla Zhang 阅读(2319) 评论(1) 推荐(0) 编辑
摘要: 网上很多文章都谈过窗口,视口,裁剪区域这些概念,但感觉看了还是不很明白。下面是我个人实践过后的一些看法:1.窗口:这就不用解释了吧2.视口:就是窗口中用来显示图形的一块矩形区域,它可以和窗口等大,也可以比窗口大或者小。只有绘制在视口区域中的图形才能被显示,如果图形有一部分超出了视口区域,那么那一部分是看不到的。通过glViewport()函数设置。如下图所示: 图1. 不同大小的视口3.裁剪区域(平行投影):就是视口矩形区域的最小最大x坐标(left,right)和最小最大y坐标(bottom,top),而不是窗口的最小最大x坐标和y坐标。通过glOrtho()函数设置,... 阅读全文
posted @ 2012-06-19 21:48 Sylla Zhang 阅读(4887) 评论(3) 推荐(0) 编辑