文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 国产软件 | 国外软件 | 汉化补丁 | 设为首页 | 加入收藏
业界资讯 | 图形图像 | 操作系统 | 网络冲浪 | 工具软件 | 办公软件 | 媒体动画 | 精文荟萃 | 认证考试 | 网站建设 | 技术开发 | 专栏
当前位置:abcdown网络学院网络编程J2EE/J2ME3D编程指南第五部分:使用M3G渲染heightmap地形
精品广告
推荐TOP10
·J2EE Web开发技术期待一次新的技术变革
·J2ME程序开发初学者快速入门的九大要点
·使用技巧:J2ME中程序优化的十个小方法
·RMS从入门到精通之一
·J2EE应用程序中SQL语句的自动构造方法
·解决J2EE系统应用性能问题常用优化项目
·J2EE实用技巧:提升JSP应用程序的绝招
·J2ME内存优
·J2ME简介
·J2EE技术
阅读TOP10
·使用platformRequest()自动更新MIDlet套件
·RMS从入门到精通之一
·J2EE基础:Weblogic服务器体系结构介绍
·J2EE Web的新变革:Apusic OperaMasks
·J2EE技术
·用J2ME在移动设备上实现动画的实例讲解
·J2EE应用程序中SQL语句的自动构造方法
·J2ME客户端中的MVC结构介绍
·.NET vs J2EE——面对SOA的荒谬与误解
·J2ME内存优

3D编程指南第五部分:使用M3G渲染heightmap地形

日期:2008年6月12日 作者: 查看:[大字体 中字体 小字体]


在“使用M3G(JSR184)进行移动3D编程”入门指南系列的前四部分的基础上,Mikael Baros,Redikod的高级程序员,现在将指导你学习heightmap和地形渲染的基础知识。

下面是指南前四部分的链接:

l         第一部分:快速进入移动JAVA 3D编程世界

l         第二部分:光的3D理论与定位

l         第三部分:粒子系统和立即模式渲染

l         第四部分:M3G内建碰撞、光照物理学和照相机视点

介绍

欢迎来到M3G指南系列的第五部份。今天我将向你展示一种简单的技术,它几乎在所有的3D游戏中都用得到(以一种或者另外一种形式),heightmap

通过使用heightmap,设计者/开发者能够容易地创建自然地形(可能相当于使用一个花边噪音生成器,但不是必须的),几乎不花费时间。Heightmap的魅力在于它有一个复杂的概念,例如一个漂亮的现实的3D地形,则把这个问题简化为一个简单的2D图像。

和以前一样,无论什么时候你感到了困惑就参考这里。

首先,或许也是最重要的,就是在索尼爱立信开发者世界上专业的移动Java 3D网络区。其次,如果你碰到困难,就去索尼爱立信移动Java 3D论坛。对于其他的任何情况,使用索尼爱立信开发者世界网络门户,在那里你可以找到你的问题的答案,并且可以了解到更多。

预备知识

在通读指南的这一部分之前你应该已经阅读过前四部分,因为我将在这里使用前面已经写过的代码。

3D地形

我们先来对地形进行定义,好吗?地形是真实世界的一个模型,有平原、山脉、河流、悬崖和丘陵等。地形的要点就是给用户如在“真实”或者“现实”世界中漫步的印象。然而,如果从一个更加抽象的观点看,我们会很快的意识到地形仅仅是在高度上的变化。例如,一个草原就是一个高度为常数的地形(除了可能有一些起伏和山丘外)。一个山区就是一个具有很大高度变化的地形,在空地间创建鸿沟,如此创建山区的幻觉。一个河流就是由一个平原和穿过它的曲线组成,这个曲线比它周围的平原高度稍低。检查这张地形图:

3D编程指南第五部分:使用M3G渲染heightmap地形(图一)

如你所见,上面的地形由三块高一些的区域描述(三个灰色的山丘),剩下的是一个深深的峡谷,里面充满了水。此外,除了高度变化没有什么。

Heightmap

下面就是heightmap了。它们是存储高度变化的和使表面平滑的上好解决方案。在我开始讲解有启发的东西之前,现在我们观察这个图片。

3D编程指南第五部分:使用M3G渲染heightmap地形(图二)

这个一个灰度等比变化的图像。没有任何奇特的。它看起来像一个中间有个白色斑点的圆环。如此看来什么是一个灰色等比变化的图像呢?那么,简单来看,它是一个像素的集合,每个像素都是在灰度上从0到255上等比变化,0是黑色,255是全白。对吗?听起来很熟悉吧?那么如果你使用像素确定高度,如何?如果黑色的像素(值0)是最小的高度,白色的像素(值255)是最大的高度,如此你就有了一个描述高度的地图,heightmap!对此另外一个重要的事情就是,如果你只想模糊图像,因为像素是从0到255,所以你要对地形自动插补。

那么,你所有需要做的就是打开最中意的图像程序,使用画笔画一些白色素材,然后建立一个heightmap。这听起来很容易,当然,但是我们怎么样将它转化为可以渲染的网面呢?

Quad

将一个heightmap转化为可以渲染的网面一点都不难。我们需要读取heightmap的像素,然后创建由高度变化反应出的平面。在这个问题上一个非常易用的平面当然是Quad(四边形)。因为所有图像都是规则的矩形,四方形能够很好地适合他们。那么Quad是什么呢?很简单,一个Quad就是两个三角形放在一起形成一个矩形平面。

3D编程指南第五部分:使用M3G渲染heightmap地形(图三)

上面的图像代表了由两个三角形组成的一个四边形。如你所见,这个四边形有四个脱节的端点,因为我们使用了两个三角形描述它。四个角都被给予不同的高度,如此我们就开始了在3D世界中描述高度。然而一个四边形描述整个地形还是远远不够的,如果想要地形看起来有一点真实的感觉,需要很多四边形。我们稍后再来讲解这些,首先来看如何使用代码创建一个四边形。我们将在xz平面上创建一个有y变量的四边形,因而有变化的高度。我们为前篇指南中创建的MeshFactory类引入一个新的方法,叫做createQuad。这个方法需要知道的就是在这个四边形不同的角上有不同的高度,和选择标志。下面是这个方法的第一个片段:

public static Mesh createQuad(short[] heights, int cullFlags)

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] 下一页 

上一篇:EJB 3.0简介

下一篇:Spring中的持久性


相关软件: 相关文章:
·渲染传奇三剑客vray教程
·商业Photoshop渲染
·APPZ AUTODESK.MAYA.UNLIMITED.V8.0.OSX 三维建模、动画与渲染
·APPZ AUTODESK.MAYA.UNLIMITED.V8.0.LINUX 三维建模动画与渲染
·BTTEAM appz 08.30.06.AUTODESK.MAYA.UNLIMITED.V8.0.OSX 三维建模、动画与渲染
·BTTEAM appz 08.30.06.AUTODESK.MAYA.UNLIMITED.V8.0.LINUX 三维建模动画与渲染
·渲染巨匠(lightscape)V3.2 SP1 汉化版
·新手必看《 3dmax渲染部分的精彩问答》
·3DS Max 7 Mental Ray渲染器全攻略: Mental Ray专用材质
·3DS Max 7 Mental Ray渲染器全攻略:使用天光
·3DS Max 7 Mental Ray渲染器全攻略:光线跟踪折射
·3DS Max 7 Mental Ray渲染器全攻略:反射焦散
·3DS Max 7 Mental Ray渲染器全攻略:命令参数详解
·3DS Max 7 Mental Ray渲染器全攻略:光线跟踪渲染

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.abcdown.net
首页 | 本站声明 | 下载帮助 | 发布软件 |
中文版权所有:ABC学院 浙ICP备05000717号