一直非常想学习3D的程序写作,只是可惜得很,没有老师带,而且在工作中也没有机会去用,只能自己慢慢的摸索,有时一个问题会摸索很久,进步非常慢,特别是空间坐标和平面左边的变换,比从前好点,但是还是不清晰。
这是一个我学习作的东西:可以把模型从数据库里面读出来放到界面上,拖动模型之后能够自动保存回去,也可以在屏幕上画几个点(凸多边形),根据这几个点能够生成一个高度为10的立方体。
文件说明:
l GeoCamera.cs:镜头类,可以不渲染场景之外的物体(一个老外的代码);
l GeoCoordinate.cs:坐标类,可以在场景的 0,0,0画3个方向的坐标,演示了如何直接使用点画图;
l GeoDrawMesh.cs:画图类,获取屏幕上输入点,画图。演示了如何分解凸多边形,如何设定索引数据(IndexBuffer),如何保存Mesh文件(c:\\ddd.x),如何序列化对象并且保存在数据库中;
l GeoLayer.cs:图层类:图形分层;
l GeoMapControlManager.cs:地图操作类(一个老外的代码),能够选中和拖动物体。
l GeoMesh.cs:读取Mesh文件的类;
l GeoQuadTree.cs:四叉树分割类(一个老外的代码),还没有用上;
l GeoScene.cs:场景类。
l GeoTerrain.cs:地图类。可以根据输入的顶点数生成网格,高度可以根据位图来;
l frmGeoData.cs:显示一个物体的坐标信息;
l frmLayers.cs:显示图层;
l ClsDbBase.cs:自己瞎掰的一个数据操作的基类。
l frmMain.cs:主窗口。
*程序使用了Microsoft DirectX SDK (April 2006)的MDX2.0(beta)开发, 数据库文件的配置在App.config文件中。
操作说明:
点“视图”-〉“图层管理”可以打开一个窗体,点“house”可以加载房屋,点“Road”可以加载一个使用自己建立的多边形模型。
每个房屋可以在x-z平面移动;
A,D左右移动
O,L放大缩小;
I,K镜头上下移动。
我想做一个程序,在3D上渲染出来的样子能够到达www.edushi.com的样子就可以了,而且:
1. 可以把图形分层;
2. 数据完全使用数据库保存,这样方便网络应用;
3. 可以进行较大范围的地图的显示;
4. 可以和GPS联起来;
5. 可以做简单的导航应用;
6. 可以作简单建模;
7. 可以简单的分析。
8. …
当然愿望很多,但是以我一个人用业余的时间去学习合作,不知道要到猴年马月才能实现,不知道有没有人对这个感兴趣,大家一起做和学习。
即使没有人帮忙,不知道有没有人帮我或者指导我写几个函数:
1. 输入一个屏幕坐标和3D中的平面,返回这个屏幕坐标在这个平面上的投影。
2. 根据输入的(3D)坐标,获取当前点地面的高度。
如果有大家的帮助,下次给大家看的或许会好一些。
…要做不下去了…
…不管好还是坏,你喜欢还是讨厌,请就事论事,一定不要人身攻击….
http://files.cnblogs.com/songsgroup/ProLight.rar
Msn:Songsgroup@hotmail.com