|
@@ -27,7 +27,7 @@ jME环境(Context)为JME3游戏提供了所需的一切,包括:配置管理
|
|
|
== 几何(Geometry)
|
|
== 几何(Geometry)
|
|
|
|
|
|
|
|
=== 多边形,网格,顶点
|
|
=== 多边形,网格,顶点
|
|
|
-image:http://wiki.jmonkeyengine.org/jme3/dolphin-mesh.png[模型(例如此处的海豚)由多边形网格组成]
|
|
|
|
|
|
|
+image:http://bbs.jmecn.net/uploads/default/original/1X/bc97a93e8c8168db86c9ad50dc739f9e18969be1.png[模型(例如此处的海豚)由多边形网格组成]
|
|
|
|
|
|
|
|
3D场景里大部分的可见物体都是由多边形网格组成的——角色、地形、建筑等等。网格(Mesh)是一种可以表达复杂形状的网状结构。网格的优点是,从数学角度讲足够简单,可以实时处理形状变化,细节上也足够辨认该物体。
|
|
3D场景里大部分的可见物体都是由多边形网格组成的——角色、地形、建筑等等。网格(Mesh)是一种可以表达复杂形状的网状结构。网格的优点是,从数学角度讲足够简单,可以实时处理形状变化,细节上也足够辨认该物体。
|
|
|
|
|
|
|
@@ -79,7 +79,7 @@ image:http://wiki.jmonkeyengine.org/jme3/dolphin-mesh.png[模型(例如此处的
|
|
|
* 你可以用不同的颜色来制造特殊的反射效果,比如金属色泽或彩虹炫色。
|
|
* 你可以用不同的颜色来制造特殊的反射效果,比如金属色泽或彩虹炫色。
|
|
|
* 无光泽物体的高光颜色是黑色的。
|
|
* 无光泽物体的高光颜色是黑色的。
|
|
|
|
|
|
|
|
-image:http://wiki.jmonkeyengine.org/jme3/tanlglow2.png["tanlglow2"]
|
|
|
|
|
|
|
+image:http://bbs.jmecn.net/uploads/default/original/1X/ddc58328366226903989e4b2e3eb31391881a8e1.png["tanlglow2"]
|
|
|
|
|
|
|
|
== 材质:纹理
|
|
== 材质:纹理
|
|
|
纹理是材质的一部分。最简单的情况是,一个物体只有一种纹理,只需要从图片文件中导入颜色贴图(Color Map)就行。回想一下老式电脑游戏,你就知道做这方法做出来的东西看起来很素了。
|
|
纹理是材质的一部分。最简单的情况是,一个物体只有一种纹理,只需要从图片文件中导入颜色贴图(Color Map)就行。回想一下老式电脑游戏,你就知道做这方法做出来的东西看起来很素了。
|
|
@@ -95,7 +95,7 @@ image:http://wiki.jmonkeyengine.org/jme3/tanlglow2.png["tanlglow2"]
|
|
|
|
|
|
|
|
==== 颜色贴图/漫反色贴图
|
|
==== 颜色贴图/漫反色贴图
|
|
|
|
|
|
|
|
-image::http://jmonkeyengine.googlecode.com/svn/trunk/engine/test-data/Models/HoverTank/tank_diffuse.jpg[tank_diffuse.jpg,with="128",height="128",align="right"]
|
|
|
|
|
|
|
+image::http://bbs.jmecn.net/uploads/default/original/1X/1f42ac46d04c422c024743e9f6763eef4492c404.jpg[tank_diffuse.jpg,with="128",height="128",align="right"]
|
|
|
|
|
|
|
|
* 是一个纯图片文件或程序纹理,用来描述物体可见的表面外观。
|
|
* 是一个纯图片文件或程序纹理,用来描述物体可见的表面外观。
|
|
|
* 该图片可以有Alpha透明通道。
|
|
* 该图片可以有Alpha透明通道。
|
|
@@ -109,7 +109,7 @@ image::http://jmonkeyengine.googlecode.com/svn/trunk/engine/test-data/Models/Hov
|
|
|
* 用法线贴图(Normal Map)为细微之处塑模,比如墙壁裂纹、锈迹、皮肤纹理,或者帆布的编织纹理。(link:http://en.wikipedia.org/wiki/bump_mapping[更多关于凸凹贴图])
|
|
* 用法线贴图(Normal Map)为细微之处塑模,比如墙壁裂纹、锈迹、皮肤纹理,或者帆布的编织纹理。(link:http://en.wikipedia.org/wiki/bump_mapping[更多关于凸凹贴图])
|
|
|
* 用高度图(Height Map)为打过莫地形塑模,包括深谷和山脉。
|
|
* 用高度图(Height Map)为打过莫地形塑模,包括深谷和山脉。
|
|
|
|
|
|
|
|
-image::http://jmonkeyengine.googlecode.com/svn/trunk/engine/test-data/Textures/Terrain/splat/mountains512.png[mountains512.png,with="128",height="128",align="right"]
|
|
|
|
|
|
|
+image::http://bbs.jmecn.net/uploads/default/original/1X/ecd306264b3ab11304a4eda8f2a3b858636bf49b.png[mountains512.png,with="128",height="128",align="right"]
|
|
|
|
|
|
|
|
===== 高度图
|
|
===== 高度图
|
|
|
|
|
|
|
@@ -119,7 +119,7 @@ image::http://jmonkeyengine.googlecode.com/svn/trunk/engine/test-data/Textures/T
|
|
|
|
|
|
|
|
===== 法线贴图
|
|
===== 法线贴图
|
|
|
|
|
|
|
|
-image::http://jmonkeyengine.googlecode.com/svn/trunk/engine/test-data/Models/HoverTank/tank_normals.png[tank_normals.png,with="128",height="128",align="right"]
|
|
|
|
|
|
|
+image::http://bbs.jmecn.net/uploads/default/original/1X/1278d052ccfefed303b0da7ba8daeacbbbb8781f.png[tank_normals.png,with="128",height="128",align="right"]
|
|
|
|
|
|
|
|
* 做得好的法线贴图会让物体轮廓显得更精致——勿需再浪费精力给网格增加多边形。法线贴图里包含细微变化信息,让物体看起来更光滑,纹理更细密。
|
|
* 做得好的法线贴图会让物体轮廓显得更精致——勿需再浪费精力给网格增加多边形。法线贴图里包含细微变化信息,让物体看起来更光滑,纹理更细密。
|
|
|
* 如果在图形编辑器里打开法线图,它看起来就像上错色的颜色贴图。但是法线图不是用来上色的,它里面的颜色是用来计算表面凸凹程度和裂缝的编码位移数据的。位移数据用斜面的表面法线表示,正如它的名字。
|
|
* 如果在图形编辑器里打开法线图,它看起来就像上错色的颜色贴图。但是法线图不是用来上色的,它里面的颜色是用来计算表面凸凹程度和裂缝的编码位移数据的。位移数据用斜面的表面法线表示,正如它的名字。
|
|
@@ -127,7 +127,7 @@ image::http://jmonkeyengine.googlecode.com/svn/trunk/engine/test-data/Models/Hov
|
|
|
|
|
|
|
|
==== 高光贴图(Specular Map)
|
|
==== 高光贴图(Specular Map)
|
|
|
|
|
|
|
|
-image::http://jmonkeyengine.googlecode.com/svn/trunk/engine/test-data/Models/HoverTank/tank_specular.jpg[tank_specular.jpg,with="128",height="128",align="right"]
|
|
|
|
|
|
|
+image::http://bbs.jmecn.net/uploads/default/original/1X/1e3da68cf28bf91d018554626ca1114e0c4d427c.jpg[tank_specular.jpg,with="128",height="128",align="right"]
|
|
|
|
|
|
|
|
* 高光贴图可以进一步改善物体表面真实感:它包含亮度的额外信息,使物体光照效果看起来更加逼真。
|
|
* 高光贴图可以进一步改善物体表面真实感:它包含亮度的额外信息,使物体光照效果看起来更加逼真。
|
|
|
* 先复制一份中等灰度的漫反射贴图,所谓中等灰度是对应该材质的平均光度/钝度来说的。然后给较平滑、较闪亮、反射较强的区域增加较高亮度的灰度,或者把较暗、较粗糙、破旧的区域的灰度调暗。最后得到的图片看起来类似漫反射贴图的灰度级版本。
|
|
* 先复制一份中等灰度的漫反射贴图,所谓中等灰度是对应该材质的平均光度/钝度来说的。然后给较平滑、较闪亮、反射较强的区域增加较高亮度的灰度,或者把较暗、较粗糙、破旧的区域的灰度调暗。最后得到的图片看起来类似漫反射贴图的灰度级版本。
|
|
@@ -135,7 +135,7 @@ image::http://jmonkeyengine.googlecode.com/svn/trunk/engine/test-data/Models/Hov
|
|
|
|
|
|
|
|
=== 无缝拼接纹理
|
|
=== 无缝拼接纹理
|
|
|
|
|
|
|
|
-image::http://jmonkeyengine.googlecode.com/svn/trunk/engine/test-data/Textures/Terrain/BrickWall/BrickWall.jpg[BrickWall.jpg,with="128",height="128",align="right"]
|
|
|
|
|
|
|
+image::http://bbs.jmecn.net/uploads/default/original/1X/863786d6524c7c970971bf6a8d6a574469021018.jpg[BrickWall.jpg,with="128",height="128",align="right"]
|
|
|
|
|
|
|
|
拼接纹理(Tiles)是一种简单常用的纹理类型。为一大片区域(如墙壁、地板)构造纹理的时候,不需要做大幅的纹理图片,而是做一小片纹理然后不断拼接直到填满整个区域。
|
|
拼接纹理(Tiles)是一种简单常用的纹理类型。为一大片区域(如墙壁、地板)构造纹理的时候,不需要做大幅的纹理图片,而是做一小片纹理然后不断拼接直到填满整个区域。
|
|
|
|
|
|
|
@@ -145,7 +145,7 @@ image::http://jmonkeyengine.googlecode.com/svn/trunk/engine/test-data/Textures/T
|
|
|
|
|
|
|
|
=== UV贴图 / 纹理贴图集
|
|
=== UV贴图 / 纹理贴图集
|
|
|
|
|
|
|
|
-image::http://jmonkeyengine.googlecode.com/svn/trunk/engine/test-data/Models/Ferrari/Car.jpg[Car.jpg,with="128",height="128",align="right"]
|
|
|
|
|
|
|
+image::http://bbs.jmecn.net/uploads/default/original/1X/4036e8279eb3f3ae8c823e4bb940bf67fc00bc12.jpg[Car.jpg,with="128",height="128",align="right"]
|
|
|
|
|
|
|
|
给立方体形状贴纹理容易——但是如果是角色,有面部和肢体,怎么办呢?对形状更复杂的物体,其纹理设计参照平面缝纫模式:即一个图形文件里包含物体前面、后面和侧面轮廓信息,一个接着一个。将指定的平面纹理区域(UV坐标表示)贴到3D模型(XYZ坐标表示)的指定区域,称为UV映射。使用UV映射(也叫纹理图集)的方法,一个模型的每个面都可以有不同的纹理。你可以为每种纹理建立一个相关UV映射。
|
|
给立方体形状贴纹理容易——但是如果是角色,有面部和肢体,怎么办呢?对形状更复杂的物体,其纹理设计参照平面缝纫模式:即一个图形文件里包含物体前面、后面和侧面轮廓信息,一个接着一个。将指定的平面纹理区域(UV坐标表示)贴到3D模型(XYZ坐标表示)的指定区域,称为UV映射。使用UV映射(也叫纹理图集)的方法,一个模型的每个面都可以有不同的纹理。你可以为每种纹理建立一个相关UV映射。
|
|
|
|
|
|
|
@@ -171,7 +171,7 @@ MIP是拉丁文 "multum in parvo",英文Many in one,意为多对一。
|
|
|
|
|
|
|
|
=== 程序纹理
|
|
=== 程序纹理
|
|
|
|
|
|
|
|
-程序纹理的制作方法是不断重复一个小图片,外加一些伪随机和梯度变化(称作Perlin噪声)。程序纹理比静态矩形纹理看起来更自然,球面失真度小。对大型网格物体,这种重复纹理看起来比无缝凭借纹理更自然。程序纹理若用于不规则大面积结构物体,效果更为立项,比如草地,土壤,石块,锈迹,还有围墙。可用jMonkeyEngine的 link:http://jmonkeyengine.org/wiki/doku.php/sdk:neotexture[Neo Texture插件] 来制作程序纹理。
|
|
|
|
|
|
|
+程序纹理的制作方法是不断重复一个小图片,外加一些伪随机和梯度变化(称作Perlin噪声)。程序纹理比静态矩形纹理看起来更自然,球面失真度小。对大型网格物体,这种重复纹理看起来比无缝凭借纹理更自然。程序纹理若用于不规则大面积结构物体,效果更为立项,比如草地,土壤,石块,锈迹,还有围墙。可用jMonkeyEngine的 link:http://wiki.jmonkeyengine.org/sdk/neotexture.html[Neo Texture插件] 来制作程序纹理。
|
|
|
|
|
|
|
|
image::http://jmonkeyengine.org/wp-content/uploads/2010/10/neotexture-2.jpg[neotexture-2.jpg,with="380",height="189",align="center"]
|
|
image::http://jmonkeyengine.org/wp-content/uploads/2010/10/neotexture-2.jpg[neotexture-2.jpg,with="380",height="189",align="center"]
|
|
|
|
|
|
|
@@ -249,7 +249,7 @@ JME3游戏引擎只能加载、显示录制好的动画,因此,你必须使
|
|
|
|
|
|
|
|
== 数学
|
|
== 数学
|
|
|
|
|
|
|
|
-image::http://wiki.jmonkeyengine.org/jme3/intermediate/coordinate-system.png[coordinate-system.png,with="235",height="210",align="right"]
|
|
|
|
|
|
|
+image::http://bbs.jmecn.net/uploads/default/original/1X/7c68ac3778607127effff0592d0d5f6fdaff6ed8.png[coordinate-system.png,with="235",height="210",align="right"]
|
|
|
|
|
|
|
|
=== 坐标
|
|
=== 坐标
|
|
|
|
|
|
|
@@ -299,7 +299,7 @@ _标准化向量_是一个自定义的_单位向量_。标准化向量与_(表
|
|
|
|
|
|
|
|
==== 表面法线
|
|
==== 表面法线
|
|
|
|
|
|
|
|
-image:http://wiki.jmonkeyengine.org/jme3/300px-surface_normal.png[300px-surface_normal.png,with="",height="",align="right"]
|
|
|
|
|
|
|
+image:http://bbs.jmecn.net/uploads/default/original/1X/a869c0b6ed8a9b948867068e9dd81e7fd0a9f394.png[300px-surface_normal.png,with="",height="",align="right"]
|
|
|
|
|
|
|
|
表面法线就是垂直于(正交于)某平面的向量。要计算表面法线,可以做叉乘(向量积)运算。
|
|
表面法线就是垂直于(正交于)某平面的向量。要计算表面法线,可以做叉乘(向量积)运算。
|
|
|
|
|
|
|
@@ -318,7 +318,7 @@ image:http://wiki.jmonkeyengine.org/jme3/300px-surface_normal.png[300px-surface_
|
|
|
|
|
|
|
|
==== 球面线性插值(Slerp)
|
|
==== 球面线性插值(Slerp)
|
|
|
|
|
|
|
|
-Slerp就是球面线性插值的英文单词快读结果,写出来是 Spherical linear interpolation。一个Slerp就是一个插值变换,用来做简化的3D引擎动画。定义初始状态和结束状态,然后slerp插入中间过程,做出从一个状态到另一个状态的等速变换。你可以正常播放、暂停、回放、快进该动作。 link:http://jmonkeyengine.org/javadoc/com/jme3/math/Quaternion.html#slerp(com.jme3.math.Quaternion,%20com.jme3.math.Quaternion,%20float)[JavaDoc: slerp()]
|
|
|
|
|
|
|
+Slerp就是球面线性插值的英文单词快读结果,写出来是 Spherical linear interpolation。一个Slerp就是一个插值变换,用来做简化的3D引擎动画。定义初始状态和结束状态,然后slerp插入中间过程,做出从一个状态到另一个状态的等速变换。你可以正常播放、暂停、回放、快进该动作。 link:http://javadoc.jmonkeyengine.org/com/jme3/math/Quaternion.html#slerp-com.jme3.math.Quaternion-com.jme3.math.Quaternion-float-[JavaDoc:slerp()]
|
|
|
|
|
|
|
|
*举例:* 一个正在燃烧的陨石形状几何体,位置p1,旋转速度r2,缩放比例s1。从天空下坠到地面"p2, r2, s2",对它做球面线性插值。
|
|
*举例:* 一个正在燃烧的陨石形状几何体,位置p1,旋转速度r2,缩放比例s1。从天空下坠到地面"p2, r2, s2",对它做球面线性插值。
|
|
|
|
|
|