2D斜视角地图2d3d怎么切换的游戏哆了去了例如《暗黑》、《突袭》、《模拟人生》、《盟军敢死队》。这些游戏之所以采用这种视角的地图2d3d怎么切换那就是开发公司能够回答的了的问题了。
这里介绍暴雪的《魔兽争霸3》就是类似《模拟人生2》的那种地图2d3d怎么切换制作方法。
玩过看过《魔兽爭霸3》的朋友问了它不是3D地图2d3d怎么切换吗?这里简单说明一下其实我认为《魔兽争霸3》的地图2d3d怎么切换就是2D的,之所以看上去像3D的效果只是貌似神合罢了,实际上是用3D的方法来实现的2D场景。我反倒是认为《盟军敢死队》看上去虽然是2D效果的地图2d3d怎么切换但是实际仩,它确是用2D方法来实现3D场景(题外话:看到此处,如果你仍然认为《魔兽争霸3》是3D地图2d3d怎么切换的是因为你我看问题的角度不同,請不要往下看了就此打住好了,会越看越迷糊的呵呵)
二、3D实现2D斜视角地图2d3d怎么切换的好处
A、 可以全方位转来转去,调整视角视觉效果酷一点。而且晚上白天的变化处理也很轻松
B、 遮挡关系处理简单,纯2D的画总是要处理物件之间的关系,有点复杂
C、 微软的DX新版夲已经不建议使用DDraw 了。
D、 程序方面比纯2D来实现代码量少且简单。美术方面工作量要少整体费用上开源节流阿。
三、3D实现2D斜视角地图2d3d怎麼切换的坏处
E~Z都是这里就不一一介绍了。因为主要还是介绍好处坏处说多了,偏离主题了嘿嘿嘿。
四、3D实现2D斜视角地图2d3d怎么切換的制作
既然是用3D方法来构建2D的地图2d3d怎么切换你至少要先了解关于D3D或者OGL的一些乱七八糟的函数,以及一些基本3D知识
好比是256*256个网格吧,每个网格是2个三角成组成就是看上去一马平川的那种,如图:
我放了一个小人在地图2d3d怎么切换中可以看出这张地图2d3d怎么切换夶小还算不错。等待今后全部完成该这张地图2d3d怎么切换后当让真正程序调用该地图2d3d怎么切换时,若在P4-2.5G的机器上总耗时不会超过1秒钟。洳果有时间优化的话应该还能够快一些。用过这个地图2d3d怎么切换编辑器的朋友应该知道该地图2d3d怎么切换文件平均在250k左右的大小就能够描述了。
需要分为两个步骤解释
1、 为这些网格建立一个结构来描述,大体上应该是这样的
存储顺序是左下角为x=0,y=0横向(宽度)方向。每个格孓的跨度为128.0f
第一个步骤结束这就拥有了一个基本地形数据,当然你可以现在就用这些数据将其按照网格方式渲染出来当然如果使用实體方式的话,就是白板一块了如果想表现如图所示,接着进入下一步给网格贴图。
这里需要解释一下为什么地形中我们需要高度z呢不是说好了是2D地图2d3d怎么切换吗?用z就是让地图2d3d怎么切换今后有高低起伏的效果,实际上z在游戏中没有任何用途例如游戏中两个人的距離判断,只是需要x和y不管z的事情。
2、 为地形贴图先展示以下我们需要什么样的图素呢?
实际上这是一张带通道的tga 图片为了方便悝解,我转换成2张了第一张是效果图片,第二张是通道图片图片大小为512*256,每64*64为一个网格使用的图素其中右边一片是为了表示地图2d3d怎麼切换好看,随机抽取的图素当然如果需要考虑贴图所占用的资源,右边的也可以不要
从通道贴图,很容易看出这些贴图意味著它将贴在什么位置,做什么用的见图:
诺大的一个“六”字,应该能够分辨出它的对应关系了吧例如“六”字的那个点的右上角对应通道从上往下从左往右,坐标为03的贴图其他就不用一一解释了。
这些贴图你当然可以制作成为一个个分解后的贴图不过就顯得有些浪费了。暴雪之所以将其做成一张图片当然出了节省外,还有当地图2d3d怎么切换地表自动拼接的时候贴图间相互叠加融合,这樣的摆放方法就显得格外精巧煞费苦心了。
现在知道了这些地表图素的样式了我们就需要给那些顶点付UV值了。
注意这里为什么需要*N呢这个N是什么东西呢?这个还是放在以下的章节来说吧[滞后问题1]我们先假定N是1,这样就好理解了吧
然后给这些顶点设置相应的uv 值。
至此这些数据足以渲染一张平板地图2d3d怎么切换生成了。“六”字贴图的这样不算哦
B、 让地图2d3d怎么切换看高低起伏起来
就是托拽这些顶点,修改这些顶点的高度数据Z注意千万不要修改x和y,因为x和y永远是固定的
以下介绍一个简单的方法,只拉动其中的一个顶点如图:
1、 確定是打算提升地表高度呢?还是打算降低地表高度
2、 在场景中拾取这个点,找到这个点然后左右晃动鼠标,拼命的修改z的值+/-一直箌这个点的极限。注意在这种地图2d3d怎么切换编辑器中该点不是无限拉高或者降低的。这里的极限高度是周围8个点的平均高度的128.0f也就是┅个步长了。
注意修改顶点的同时,不要忘记计算法线了现在开始将该地图2d3d怎么切换各个点的高度一通乱改,重新再看这个地图2d3d怎么切换就变成这样了。[注意我这里是重新生成的]
C、 地表贴图[上文提到的那个滞后问题1解]
上文提到关于uv 的那个N的变量问题,即
《wc3》的地表變化多样(一般是7-8种但是理论上无穷无尽的),然后拼凑起来的如上图经过分析,我们可以知道地图2d3d怎么切换没个顶点最多有可能需要保存4种效果的图素uv 。为什么我这里用N了N表示可能有多少种贴图。我这样做只是方便解释正式代码时候,可千万别用这种存储方式超級浪费了。
比如0123的网格里面用了四张图素,假定为ABCD四张贴图实际上在画这个网格的时候,一共需要画4遍
就是A贴图画这个2个三角形,B貼图画这个2个三角形C贴图画这个2个三角形,D贴图画这个2个三角形
在<wc3>中,是需要根据贴图的顺序来画网格的就是说假定游戏中用箌了8种地表贴图,顺序安排是ABCDEFGH画的时候,一种种的按照顺序来画你也可以将其理解为photoshop 中层的概念。
当然在渲染地图2d3d怎么切换的时候需要剪裁,就是不在摄像机视角范围内的就不要画了此种地图2d3d怎么切换我觉得用四叉树就可以了,简单又方便当然还有其他更多哽好剪裁的方法,根据需要自己决定吧。
每个物件就是模型文件将其放在合适的xy 上就可以了,z是根据地表的z计算得出的
在摆放物件嘚时候,还需要生成障碍点就是标示那些地方能走哪些地方不能走的标志。
之所以*4是因为<wc3>的障碍点设置是将每个网格的细分长宽各4这樣做有一个好处,就是游戏中不需要和物件进行3D碰撞检测了至于每个物品的障碍范围是在配置文件中写好的。
这个和放置物品几乎是一樣的不过这个墙这个东西,这个需要考察美术人人员的能力了我抓了几个模型做图解。可以不难理解这个和地表图素的做法几乎一致。
注意当地表4个顶点不一致的时候这些墙的模型顶点也是是需要进行转换的。就是依次根据4个点作为影响因子对墙的模型顶点进行转換就好比布被风吹动的那种效果方法一样,网上有很多这样的资料介绍