- 浏览: 153222 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
hardPass:
貌似二分法,没有一个合并的过程
简单_分治算法 -
zhufeng1981:
讲解的不错,支持一下。
简单_分治算法 -
a346063587:
嗯。。的确,基础很重要!
关于递归和尾递归的原理 -
zhufeng1981:
huoyj 写道基础很重要,这是永远不变的真理。 很赞同这句话 ...
关于递归和尾递归的原理 -
huoyj:
基础很重要,这是永远不变的真理。 很赞同这句话
关于递归和尾递归的原理
2006年8月,我们终于决定用计算机三维视觉游戏机制制作自己的产品。那制作了半年,约七千余行代码的二维游戏引擎被彻底放弃了。
总结原因,是我这名技术员和做为客户代表角色的大哥沟通不够,没有明确项目需求,导致最后成形的产品完全不能满足客户,我们甚至没有让客户看到它。这期间虽然积累了很多知识,但却对产品的整个开发周期产生了很不好的影响。
转眼两个多月过去了,从零开始学习的三维游戏技术渐渐入门,趁着现在思路还清晰,做一小小结,也算是给自己一些鼓励,为过去的那些亦苦亦甜的日子留一小念。如果哪位打算学习3维游戏,尤其是Java3D游戏的朋友不小心看到这篇文章,希望可以对你小有启示:)
先给我手边的书籍来个列表吧,是这些书籍的作者、译者给予我极大的帮助,没有这些资料,一生还要在黑暗中摸索极长的时间!
书籍列表:
书名
出版社
主要作者
Java游戏编程
希望电子
David Brackeen著
Java游戏高级编程 清华大学 David Wallace Croft
Java多媒体技术 清华大学 彭波 孙一林著
Java图形与动画编程实例 清华大学 李敏 丁友东 著
Java Network Programming(3rd Edition) O'REILLY Elliotte Rusty Harold
Java Threads O'REILLY Scott Oaks & Henry Wong
3D游戏编程大师技巧 人民邮电 Andre LaMothe
游戏编程中的数理应用 希望电子 Wendy Stahler
游戏核心算法编程内幕 中国环境科学 Daniel Sanchez
游戏编程全接触 人民邮电 Mike McShaffry
使用VRML与Java创建网络虚拟环境 陆昌辉
创造游戏中的艺术 希望电子 Matthew Omernick
水晶石教材系列-建筑表现技法II建模篇 中国青年 水晶石数字科技著
OpenGL三维图形系统开发与实用系统 清华&重庆 和平鸽工作室
OpenGL编程指南(五版) 机械工业 Dave Shreiner
OpenGL游戏程序设计 科学出版社 霍金 阿斯特
3D数学基础:图形与游戏开发 清华大学 Fletcher Dunn
还有许多探讨Java语言的书籍没有罗列在此。以上很多书籍的内容知识点是重复的,但是不同的作者从自身的观点出发,通过不同的例程阐述着技术的精髓,所以虽然有所重叠,却可以帮助我更好的把握和理解作者真正要表达的内容。
我并不是一个购书狂,只是在一本书看到卡壳的地方,就会去网络上寻找专题文章,如果找不到就再买一本书,看看其它的作者怎么说,或者索性弄一本专著来。
做三维游戏首先要解决绘图问题,其实在了解计算机图形学专业课程之前,有更重要的一件事情要做,那就是决定谁来绘图!
如果是用Java或C++等程序来自己制作整个绘制过程,那么需要找一本计算机图形学的典籍来,很认真的从三维坐标空间开始学起,包括各种投影算法,优化算法,贴图算法等等,期间大概还要补习一下代数,几何,高等数学的知识。如果决定由硬件绘图,那么只要选择OpenGL或者D3D其中之一便可以,这样可以跳过95%的计算机图形学知识!只要花费一点时间来学习OpenGL的用法。
产品开发周期和用Java语言实现迫使我只能选择OpenGL做为底层绘图实现。那么Java语言如何调用OpenGL绘图呢?我找到了几个方法,JOGL,LWJGL,Java3D,Xith3D.
JOGL和LWJGL都是Java的OpenGL绑定,Java程序调用JOGL或者LWJGL库,JOGL或者LWJGL再去调OpenGL.几乎是原班照搬,所以是Java实现最接近OpenGL语言的一层。
Java3D建立在OpenGL和D3D实现之上,屏蔽了底层绘图的实现,可以非常方便的制作三维场景,程序人员不必花心思去学习OpenGL,只要学习Java3D的库结构即可。但是我在学习的过程中发现Java3D的入门文章多而高深文章极少,而且我没有找到Java3D的源程序,遇到Bug和许多不知名的问题,我对这个高层建筑很不放心。
Xith3D是专为Java量身制作的Java3D游戏引擎,包括了常用的模型载入器,绘图层采用JOGL或LWJGL,是类似于Java3D但更注重游戏开发的库,虽然名声响亮,但我对其很失望。Xith3D并不是一个容易安装,并且安装之后可以便捷地投入使用的游戏开发工具包。其中的一些小Bug直接让你的游戏Crash.
想偷懒的我花了一段时间在Java3D和Xith3D上,遗憾的是碰的满头包,他们并没有想的那么好,反而让我有种深受打击之感。
万念俱灰之下,终于痛下决心,从LWJGL这样的底层调用开始入手,自己动手解决一切问题!
所以我的游戏引擎的绘图是基于LWJGL的OpenGL调用,3维空间的类型是自己一一定义的。如此一来,虽然不见得有最好的解决方案,起码一切都在我的掌握中,发现Bug不用去学习别人的源代码(尤其是在源代码都找不到的情况下,好汗!)
LWJGL几乎是照搬了全部的OpenGL函数,因此学会了OpenGL,也就会以用LWJGL。这样学习内容进入到OpenGL领域,由于OpenGL是语言独立的,所以不论以后用C/C++, .net, Delphi...什么计算机语言,都可以用到其中的知识。这是非常有益的知识积累。
在不求甚的解明白了OpenGL的基本用法后,绘图模块就可以告一段落了。
我们解决了谁来绘的问题,那么怎么绘的问题就由OpenGL去做了。
后面就都是游戏引擎的软件任务,再没有OpenGL那样既免费又极好吃的午餐肉了。绘三维物体,三维物体的原始模型数据怎么得到,如何更快速度的绘制场景,三维物体之间的关系如何,两个物体的碰撞,逼真的再现物理关系,玩家与场景的互动,声音模块,都是一串很棘手的问题。
制造物体模型的原始数据,当然离不开Maya,3D Studio Max这样的专业三维模型制作软件,如何制作好看逼真的模型是3D建模师的事情(也是我的事情),把模型在游戏中还原是游戏引擎的事情,所以决定先用比较简单的一种方法:用3DSMAX制作模型,并导出为OBJ文件和MTL文件,分别还原模型和材质,游戏引擎再从文件系统中载入这两个文件,用OpenGL在游戏中还原这些模型,并配以指定的材质。如此,模型数据的来源和再现问题便告一小捷。当然,在产品正式推出之前还需要对原始模型进行加密转换,一来加入自己的版权信息,维护模型尽量不被盗用,二来过滤掉其它软件的版权信息。
这就是整个产品目前的状况,在学习了OpenGL,LWJGL,3DSMAX建模技术之后,我将步入游戏引擎的开发。
任务一:要学习合理组织场景中物体的数据结构,如BSP,八叉树等等。这些结构往往不仅仅要有利于物体的绘制,游戏的运行速度,还要有利于路径探测,碰撞检测等算法。(三十天)
任务二:将物理运算模块加入引擎。要深入应用牛顿关于力学的部分和热学部分。(三十天)
任务三:在任务一和二的基础上,完成整个引擎的物体间关系运算,使玩家受应该有的空间约束和正常的地心引力。(十五天)
任务四:完成一个角色建模,动作动画(争取实现前向和反向动力学混合技术)。(三十天)
任务五:完成声音系统,基于JOAL或者Java Sound技术。(七天)
任务六:完成游戏规则脚本规划(三天)
任务七:完成游戏规则脚本流程编辑器,让用户自定义游戏逻辑和故事内涵。(四十天)
任务八:终极优化,本地DLL计算模块制作,多线程优化等。(三十天)
任务九:完成基于本引擎的一个游戏案例,包括角色和游戏逻辑。
(五一之前完成所有测试和完整案例(单机版)。)
任务十:加入服务器,构建网络模块。完成网络版(支持语音和视频)(六十天)
附加任务:加入地图改造编辑器。(六十天)
呵呵,前几个月,现在,后几个月的任务都列在这里了,看看紧张的时间表,每一天都是充实的,每一天,都向成功迈进一步!
愿天下所有本本分分付出努力的人们,幸福,快乐!
来源:
http://blog.sina.com.cn/s/blog_560eea89010005rm.html
总结原因,是我这名技术员和做为客户代表角色的大哥沟通不够,没有明确项目需求,导致最后成形的产品完全不能满足客户,我们甚至没有让客户看到它。这期间虽然积累了很多知识,但却对产品的整个开发周期产生了很不好的影响。
转眼两个多月过去了,从零开始学习的三维游戏技术渐渐入门,趁着现在思路还清晰,做一小小结,也算是给自己一些鼓励,为过去的那些亦苦亦甜的日子留一小念。如果哪位打算学习3维游戏,尤其是Java3D游戏的朋友不小心看到这篇文章,希望可以对你小有启示:)
先给我手边的书籍来个列表吧,是这些书籍的作者、译者给予我极大的帮助,没有这些资料,一生还要在黑暗中摸索极长的时间!
书籍列表:
书名
出版社
主要作者
Java游戏编程
希望电子
David Brackeen著
Java游戏高级编程 清华大学 David Wallace Croft
Java多媒体技术 清华大学 彭波 孙一林著
Java图形与动画编程实例 清华大学 李敏 丁友东 著
Java Network Programming(3rd Edition) O'REILLY Elliotte Rusty Harold
Java Threads O'REILLY Scott Oaks & Henry Wong
3D游戏编程大师技巧 人民邮电 Andre LaMothe
游戏编程中的数理应用 希望电子 Wendy Stahler
游戏核心算法编程内幕 中国环境科学 Daniel Sanchez
游戏编程全接触 人民邮电 Mike McShaffry
使用VRML与Java创建网络虚拟环境 陆昌辉
创造游戏中的艺术 希望电子 Matthew Omernick
水晶石教材系列-建筑表现技法II建模篇 中国青年 水晶石数字科技著
OpenGL三维图形系统开发与实用系统 清华&重庆 和平鸽工作室
OpenGL编程指南(五版) 机械工业 Dave Shreiner
OpenGL游戏程序设计 科学出版社 霍金 阿斯特
3D数学基础:图形与游戏开发 清华大学 Fletcher Dunn
还有许多探讨Java语言的书籍没有罗列在此。以上很多书籍的内容知识点是重复的,但是不同的作者从自身的观点出发,通过不同的例程阐述着技术的精髓,所以虽然有所重叠,却可以帮助我更好的把握和理解作者真正要表达的内容。
我并不是一个购书狂,只是在一本书看到卡壳的地方,就会去网络上寻找专题文章,如果找不到就再买一本书,看看其它的作者怎么说,或者索性弄一本专著来。
做三维游戏首先要解决绘图问题,其实在了解计算机图形学专业课程之前,有更重要的一件事情要做,那就是决定谁来绘图!
如果是用Java或C++等程序来自己制作整个绘制过程,那么需要找一本计算机图形学的典籍来,很认真的从三维坐标空间开始学起,包括各种投影算法,优化算法,贴图算法等等,期间大概还要补习一下代数,几何,高等数学的知识。如果决定由硬件绘图,那么只要选择OpenGL或者D3D其中之一便可以,这样可以跳过95%的计算机图形学知识!只要花费一点时间来学习OpenGL的用法。
产品开发周期和用Java语言实现迫使我只能选择OpenGL做为底层绘图实现。那么Java语言如何调用OpenGL绘图呢?我找到了几个方法,JOGL,LWJGL,Java3D,Xith3D.
JOGL和LWJGL都是Java的OpenGL绑定,Java程序调用JOGL或者LWJGL库,JOGL或者LWJGL再去调OpenGL.几乎是原班照搬,所以是Java实现最接近OpenGL语言的一层。
Java3D建立在OpenGL和D3D实现之上,屏蔽了底层绘图的实现,可以非常方便的制作三维场景,程序人员不必花心思去学习OpenGL,只要学习Java3D的库结构即可。但是我在学习的过程中发现Java3D的入门文章多而高深文章极少,而且我没有找到Java3D的源程序,遇到Bug和许多不知名的问题,我对这个高层建筑很不放心。
Xith3D是专为Java量身制作的Java3D游戏引擎,包括了常用的模型载入器,绘图层采用JOGL或LWJGL,是类似于Java3D但更注重游戏开发的库,虽然名声响亮,但我对其很失望。Xith3D并不是一个容易安装,并且安装之后可以便捷地投入使用的游戏开发工具包。其中的一些小Bug直接让你的游戏Crash.
想偷懒的我花了一段时间在Java3D和Xith3D上,遗憾的是碰的满头包,他们并没有想的那么好,反而让我有种深受打击之感。
万念俱灰之下,终于痛下决心,从LWJGL这样的底层调用开始入手,自己动手解决一切问题!
所以我的游戏引擎的绘图是基于LWJGL的OpenGL调用,3维空间的类型是自己一一定义的。如此一来,虽然不见得有最好的解决方案,起码一切都在我的掌握中,发现Bug不用去学习别人的源代码(尤其是在源代码都找不到的情况下,好汗!)
LWJGL几乎是照搬了全部的OpenGL函数,因此学会了OpenGL,也就会以用LWJGL。这样学习内容进入到OpenGL领域,由于OpenGL是语言独立的,所以不论以后用C/C++, .net, Delphi...什么计算机语言,都可以用到其中的知识。这是非常有益的知识积累。
在不求甚的解明白了OpenGL的基本用法后,绘图模块就可以告一段落了。
我们解决了谁来绘的问题,那么怎么绘的问题就由OpenGL去做了。
后面就都是游戏引擎的软件任务,再没有OpenGL那样既免费又极好吃的午餐肉了。绘三维物体,三维物体的原始模型数据怎么得到,如何更快速度的绘制场景,三维物体之间的关系如何,两个物体的碰撞,逼真的再现物理关系,玩家与场景的互动,声音模块,都是一串很棘手的问题。
制造物体模型的原始数据,当然离不开Maya,3D Studio Max这样的专业三维模型制作软件,如何制作好看逼真的模型是3D建模师的事情(也是我的事情),把模型在游戏中还原是游戏引擎的事情,所以决定先用比较简单的一种方法:用3DSMAX制作模型,并导出为OBJ文件和MTL文件,分别还原模型和材质,游戏引擎再从文件系统中载入这两个文件,用OpenGL在游戏中还原这些模型,并配以指定的材质。如此,模型数据的来源和再现问题便告一小捷。当然,在产品正式推出之前还需要对原始模型进行加密转换,一来加入自己的版权信息,维护模型尽量不被盗用,二来过滤掉其它软件的版权信息。
这就是整个产品目前的状况,在学习了OpenGL,LWJGL,3DSMAX建模技术之后,我将步入游戏引擎的开发。
任务一:要学习合理组织场景中物体的数据结构,如BSP,八叉树等等。这些结构往往不仅仅要有利于物体的绘制,游戏的运行速度,还要有利于路径探测,碰撞检测等算法。(三十天)
任务二:将物理运算模块加入引擎。要深入应用牛顿关于力学的部分和热学部分。(三十天)
任务三:在任务一和二的基础上,完成整个引擎的物体间关系运算,使玩家受应该有的空间约束和正常的地心引力。(十五天)
任务四:完成一个角色建模,动作动画(争取实现前向和反向动力学混合技术)。(三十天)
任务五:完成声音系统,基于JOAL或者Java Sound技术。(七天)
任务六:完成游戏规则脚本规划(三天)
任务七:完成游戏规则脚本流程编辑器,让用户自定义游戏逻辑和故事内涵。(四十天)
任务八:终极优化,本地DLL计算模块制作,多线程优化等。(三十天)
任务九:完成基于本引擎的一个游戏案例,包括角色和游戏逻辑。
(五一之前完成所有测试和完整案例(单机版)。)
任务十:加入服务器,构建网络模块。完成网络版(支持语音和视频)(六十天)
附加任务:加入地图改造编辑器。(六十天)
呵呵,前几个月,现在,后几个月的任务都列在这里了,看看紧张的时间表,每一天都是充实的,每一天,都向成功迈进一步!
愿天下所有本本分分付出努力的人们,幸福,快乐!
来源:
http://blog.sina.com.cn/s/blog_560eea89010005rm.html
发表评论
-
高效编写JAVA代码的几条建议(转)
2011-11-23 20:34 1369(1) 类名首字母应该大写 ... -
java正则表达式及java.util.regex包的学习
2011-11-16 22:34 24777没有事做,就会堕落。。 这个世界有太多的浮躁,要耐得住诱惑; ... -
quartz的配置(转自网络)
2011-11-16 20:18 1207周允许的是1-7 其中1 ... -
[转自网络]freeMarker的常用语法(以后可能会用到)
2011-11-16 09:48 1215常用语法 EG.一个对象BOOK 1.输出 $…{book ... -
开源定时器quartz入门
2011-11-15 20:03 4879闲来无事学习了下quartz框架,其实JAVA下的定时器框架还 ... -
freeMarker入门
2011-11-14 22:26 1548freeMarker是一个 JAVA开源模版引擎 下面以创建 ... -
java.util.logging包的学习
2011-11-11 22:07 1346package sunfa.lx; import jav ... -
mybatis中的一个OOXX
2011-11-08 15:11 1245mybatis : mybatis XML中执行多条语句: ... -
Timer和ScheduledExecutorService区别
2011-10-09 23:59 3222Timer里面的任务如果执行时间太长,会独占Timer对象,使 ... -
java io流之 装饰模式
2011-10-05 21:41 1156初学java.io的时候容易被众多的IO类搞晕头,其实java ... -
java nio学习笔记<一>
2011-10-05 21:04 1094package nio; import java.i ... -
java.util.concurrent.atomic.*包的体会
2011-10-01 18:10 1471java.util.concurrent.atomic.*包的 ... -
计算很大数组中List的和
2011-09-30 19:45 1080原帖地址: http://www.iteye.com/topi ... -
CountDownLatch、CyclicBarrier让多线程变得更简单
2011-09-29 16:54 1108CountDownLatch 一个同步辅助类,在完成一组正在其 ... -
山寨同步队列 VS 官方BT的ArrayBlockingQueue ,结果官方落马!!!
2011-09-29 15:30 1034官方的java.util.concurrent.ArrayBl ... -
突然发现自己的JAVA基础很差
2011-09-25 11:50 1168今天因为一个问题上网搜索却牵扯出了另一个问题。。。纠结。、、还 ... -
java_Comparable & Comparator
2011-09-21 23:21 1444java有2个非常重要的排序接口:java.lang.Comp ... -
tomcat,jboss部署方式(热部署)
2011-06-26 16:08 2840tomcat: 1、直接把项目web文件夹放在webapps里 ... -
JAVA书籍(IO多线程等)
2011-05-29 15:47 1016留下这些书,纪念我曾经走过的路。 -
java IO的学习总结
2011-05-29 15:31 10521、JAVA中的IO流分字节流和字符流 2、InputStre ...
相关推荐
9. **网络通信**:Java的网络编程能力使得Java3D可以轻松实现多人在线游戏,提供客户端-服务器架构或对等网络模式。 10. **优化性能**:尽管Java可能在某些情况下性能略逊于原生代码,但Java3D通过缓存、批处理和...
Java3D游戏编程是利用Java语言开发三维游戏的技术,它基于Java平台的Java Media Framework (JMF) 和Java 2D API,为开发者提供了构建3D图形应用的强大工具。本项目提供的源代码可以帮助我们理解并学习如何在Java环境...
Java 3D游戏开发是一种利用Java编程语言创建三维图形和交互式体验的技术。在Java平台上,3D游戏的实现主要依赖于Java 3D API,这是一个由Sun Microsystems开发的开源库,专门用于构建复杂的三维图形应用程序。这个...
《Java 3D 游戏开发》是一本专注于利用Java技术进行三维游戏开发的专业书籍,由Apress出版社在2007年4月出版。这本书是面向那些希望通过Java语言实现复杂3D游戏的开发者,旨在深入浅出地介绍如何利用Java的3D图形库...
Java 3D游戏编程教程是面向想要学习如何利用Java技术创建三维游戏的开发者们的一份宝贵资源。这个教程可能包含了从基础知识到高级概念的全面讲解,帮助初学者和有一定经验的程序员掌握Java 3D API的使用,以及游戏...
Java3D游戏模块代码是基于Java 3D API开发的游戏编程相关代码库,它提供了用于构建三维图形游戏的工具和接口。Java 3D是一种基于OpenGL标准的Java库,允许开发者在Java应用程序中创建和展示复杂的3D场景。这个代码...
为处理运行在嵌入式设备上的3D游戏的底层技术平台的嵌入式3D游戏引擎的开 发就有了很大的发展空间。它为游戏开发者提供了一套核心的,可复用的代码和 系列工具。目前,3D游戏通常运行的嵌入式设备主要包括:高性能...
Java 3D游戏开发是Java技术在游戏领域中的一个重要应用,它允许开发者创建具有高度交互性和视觉吸引力的三维游戏。随着计算机硬件性能的提升和玩家对游戏体验需求的增长,3D游戏已经成为游戏行业的主流,而Java以其...
【JAVA3D魔方游戏】是一款使用Java 3D API开发的模拟魔方游戏,它为初学者提供了学习Java 3D编程的实践平台。Java 3D是Oracle公司提供的一个开源库,用于构建高性能、跨平台的三维图形应用程序。这款游戏通过Java 3D...
这个标题"JAVA3D游戏人物模块代码原带吗"暗示我们讨论的是关于使用Java3D进行游戏开发时,人物模型或角色控制模块的代码实现。 Java3D通过OpenGL库提供了对硬件加速3D图形的支持,使得开发者能够利用Java语言的强大...
《Java 3D编程实践——网络上的三维动画》是一本深入探讨如何利用Java 3D技术创建网络上交互式三维动画的书籍。源代码提供了书中示例程序的详细实现,帮助读者更好地理解和学习Java 3D编程的核心概念和技术。本文将...
java毕业设计——基于Java3D的网络三维技术的设计与实现(论文+源代码).zip java毕业设计——基于Java3D的网络三维技术的设计与实现(论文+源代码).zip java毕业设计——基于Java3D的网络三维技术的设计与实现(论文+源...
Java 3D坦克游戏是一种基于Java编程语言和Java 3D API开发的三维游戏,它为玩家提供了一个立体的游戏环境,让玩家能够体验到真实的坦克战斗。Java 3D API是Java平台上的一个强大工具,它允许开发者创建复杂的三维...
JAVA3D,全称为Java 3D API,是Oracle公司推出的一种基于Java语言的三维图形编程接口。这个技术为开发者提供了强大的工具,用于创建复杂的、交互式的三维图形应用程序。JAVA3D官方实例对于初学者来说是一份宝贵的...
基于Java3D的网络三维GIS技术研究,基于Java3D的网络三维GIS技术研究
通过使用Java的RMI(远程方法调用)或其他网络协议,开发者可以构建分布式3D应用程序,如虚拟现实环境或多人在线游戏。 7. **动画和交互性**:Java 3D还支持动画和用户交互,使得场景中的对象能够响应用户的输入...
【标题】"java3D贪吃蛇" 是一个基于Java3D技术开发的贪吃蛇游戏,它将经典的2D游戏体验提升到了三维空间。Java3D是Java平台的一个扩展,用于创建和显示复杂的3D图形,使得游戏设计更加生动且具有深度感。 【描述】...
java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java...
这些知识点组合在一起,说明这个项目可能是关于如何在Java 3D环境中实现3D文字特效,包括从HTML获取信息,使用特定的字体和样式,以及通过多线程来处理动态效果。开发者可能已经编写了代码,实现了这些功能,并且将...
Java 3D不仅适用于桌面系统,还能够在各种不同的软硬件平台上运行,包括移动设备和网络环境。 Java 3D将Java编程语言与三维图形处理相结合,提高了开发者的编程效率。作为Java的扩展,它继承了Java的易用性、安全性...