学习3D地图引擎开发技术心得
来源:互联网 发布:手机网游推荐 知乎 编辑:程序博客网 时间:2024/06/05 04:17
现在市场上关于学习3D技术的书籍很多,有很多写的确实很好。个人认为好书的话一本就够了,书太多看的头晕眼花的也消化不了。我从开始学习到现在开了不下百本的相关资料,但主要还是围绕着基本学习资料在看。重要的是把一本书上的东西吃透就行。先说说我是怎么学的,各位也帮着我指导一下。
<!--[if !supportLists]-->1, <!--[endif]-->由于从没接触过3D之类的开发(不过以前就是做软件的,还好有这个基础),什么D3D啊,OpengGL啊,一概不知。所以就先从最简单的开始。先了解3D引擎的软件实现原理,也就是软件3D图形引擎。这里推荐一本好书《3D游戏编程大师技巧》,这本是完全将的是软件实现方法,为啥都不懂的我做了一下启蒙教育。
<!--[if !supportLists]-->2, <!--[endif]-->在熟悉、了解、掌握了以上的知识之后,开始自己动手用软件的方式实现了一个3D地图引擎。很粗糙,但廖胜于无。同时在实现的过程中又重新学习了一下书中的内容,俗话说的温故而知新确实很对。特别是象软件开发这种技术一定要在实践中才能真正掌握的。网上有一份《地形制作全攻略》的文档将的很不错,在这一阶段帮了我不少。
<!--[if !supportLists]-->3, <!--[endif]-->这样我了解了一些3D图形引擎的概念、算法的含义、处理的流程。于是下一步打算使用目前通用的3D图形库实现我的第一个3D图形引擎。目前来说比较流行的是D3D和OpenGL,由于主要的目标是想做一个下位机的3D地图引擎,所以把重点放在了OpenGL上。当然D3D我也尝试了一下。第一步便是在D3D上把我之前做的软件引擎进行了移植。效果还算不错。
<!--[if !supportLists]-->4, <!--[endif]-->这个是重点。针对OpenGL图形库的3D地图引擎实现,目前还在学习中,已经把软件3D引擎移植到了OpenGL的平台上,这里有本书对我帮助很大,《OpenGL三维图形设计》,这本书完全从实际触发,源码解释都很详尽,好书啊。下一步是调用OpenGL本身的库函数进行相关实现,敬请期待吧。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
OpenGL的函数库应用操作(有一本书《OpenGL编程指南》,对于想深入学习OpenGL的童鞋来说很不错):
1,调用gluPerspective和gluLookAt函数实现投影坐标变换。
2,使用z-Buffer方式实现三维图形的面消隐。
3,采用Gouraud方法实现渲染绘图,但光照处理在没有纹理的条件下效果不好
4,实现了纹理贴图的方法,这下可以使用光照模型对纹理贴图进行渲染了。
5,光照对纹理贴图的渲染效果并不理想,加上之后会有不平滑的现象产生(就是能很明显的看到渲染出的一块一块的三角形)。
一开始以为是计算了每个三角形的顶点法线向量造成的不兼容,改成只计算每个三角形的面法线向量,但是结果依旧。
不清楚是什么原因,先放一下吧,有哪位看客了解的,交流一下。
6,简单的地形跟踪算法实现。原来小小的地形跟踪也有很大的学问,深入下去估计能够写一篇论文。
。
。
。
2011-02-11:
经过以上的初步实践,再重新回过来看书。《OpenGL 2.0 精髓》这本书正在消化。
看来目前的水平差的还很远那!
关于glTexEnvi函数中的一些参数解释:
GL_REPLACE:将Texture color完全替换当前帧中的颜色
GL_MODULATE:默认方式。将当前帧中的颜色替换成Texture Color和incoming primary color的混合。该选项能与光照模型相连,能保留下环境光(Ambient)和散射光(diffuse)的光照效果。但对镜反射(specular)影响较大,所以需要用其他方式解决。
GL_ADD:在当前帧的颜色中添加Texture Color的效果。该选项可以处理镜反射(只在Opengl 1.3或以上版本中才有)。
- 学习3D地图引擎开发技术心得
- 学习3D地图引擎开发技术心得
- 3D游戏引擎开发心得(3)
- 3D游戏引擎开发心得
- 3D开发技术学习网站
- 3D引擎开发思考
- J2ME 3D引擎开发
- PORTAL 3D引擎 渲染技术
- 3D游戏引擎技术剖析
- 3D游戏引擎技术剖析
- 3D游戏引擎技术架构设计
- Android游戏开发视频教程下载(Android4.3、Cocos2d-x、Untity2D/3D、跨平台引擎技术)
- google地图开发心得
- 学习3D开发技术的优秀网站
- 学习3D开发技术的优秀网站
- 学习3D开发技术的优秀网站
- 学习3D开发技术的优秀网站
- 学习3D开发技术的优秀网站
- Android之事件传递机制
- 【hdu 1011】Starship Troopers 树形dp
- 软件实现三维地图引擎的研究
- 关于安卓手机微信访问https链接白屏的问题
- git 忽略 IntelliJ .idea文件
- 学习3D地图引擎开发技术心得
- java操纵spark遇到的问题
- android 自定义View(一) View的事件分发与绘制
- 集群和负载均衡的简单介绍
- ROSCon 2016视频和幻灯片发布 ROS机器人操作系统重要参考资料
- 单调递增最长子序列
- IOS关于UIWebView简单用法
- 【C++心路历程10】1222顺序分数 便于以后打表
- Codeforce_732