一个简单场景编辑器若干问题求教。
一个简单的场景编辑器。需求大概是这样的:用一个列表框保存一系列3D模型,然后用户点击模型后可以在旁边的显示区显示出来。用户移动鼠标,刚刚点选的模型跟着移动,当用户点击某个按键(例如鼠标左键)就把模型定位到鼠标所在的位置。
现在有几个问题想请教一下,按照上述的需求,由于涉及三维坐标,如何判断模型与模型之间距离的问题,例如房子刚刚好贴合在地面模型上,我暂时只想到用D3DXIntersect射线来着手。另外一个问题就是如何将设置好的模型(整个场景设计好后)将数据导出到程序使用这点有何思路?
没有设计过场景编辑器,希望有经验没经验的人共同讨论一下。
地形是平的
房子如何刚刚好的放在地图上呢?
[解决办法]
关于房子如何刚好在地图上,你可以初始先把房子放在鼠标所在的地形的那个高度上,然后再用鼠标人工控制高低。也有的编辑器可以根据房子来修改下面的地形,使得正好房子放在地形上。
第二个问题就是你可以用程序保存到你自己定义好格式的文件里纪录各个模型的位置,这样游戏读这个文件在解析就可以了。
[解决办法]
1.如果地面是平的,那直接房子的y坐标就是地面的y坐标就可以了。
2.文件中只要记录房子中心在地图上的坐标和房子所朝向的方向就好了
[解决办法]
第一个问题,地形编辑器一般都会提供四个视角,分别是自由视角、XY平面视角、XZ平面视角、YZ平面视角,如果你放入一个房屋的资源,可以很直观的从三个平面视角上观察到目前房屋和地形在三个轴上的相对位置,你可以单独在一个视角内对房子两个轴的坐标进行调整,最终达到贴合。
也有更方便的方法,先确定需要的XZ坐标,然后取得这一个点上的地形Y坐标,然后跟房屋的碰撞盒信息进行计算,使碰撞盒下沿略低于Y坐标,房屋就能够大致与地形切合了。实际游戏中地形有起伏,所以仍需要4个视角进行微调。
第二问题不是很明白,多个房子也可以存成为一个模型文件,和一个房子没有区别吧。