关于Java3D游戏的个人探索一小结

转载 2012年03月25日 18:14:30

转载地址:http://blog.sina.com.cn/s/blog_560eea89010005rm.html

 http://www.amazon.cn/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6-%E8%B5%AB%E6%81%A9/dp/product-description/B003XKCWHS/ref=dp_proddesc_0?ie=UTF8&s=books

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计算模块制作,多线程优化等。(三十天)
任务九:完成基于本引擎的一个游戏案例,包括角色和游戏逻辑。
(五一之前完成所有测试和完整案例(单机版)。)
任务十:加入服务器,构建网络模块。完成网络版(支持语音和视频)(六十天)
附加任务:加入地图改造编辑器。(六十天)
呵呵,前几个月,现在,后几个月的任务都列在这里了,看看紧张的时间表,每一天都是充实的,每一天,都向成功迈进一步!
愿天下所有本本分分付出努力的人们,幸福,快乐!

Java 3D 开发

用到的 下载的工具:  Java3D 1.5.2.rar     eclipse中配置Java3D过程    注意:这是转载他人的文章、 网址:http://www.cnblogs.com/duanz...

Java3D

分类: java2012-07-25 22:40 649人阅读 评论(0) 收藏 举报 javaprimitive图形behavior编程api 本教程是为没有...

java 3D学习笔记

Java3D 运行及开发环境的安装运行Java 3D for Windows (OpenGL Version) SDK for the JDK (includes Runtime) (java3d-1...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

JAVA 3D开发工具包(3个版本安装包 + 一个用例)

AVA 3D开发工具包(3个版本),java3d-1_3、java3d-1_4、java3d-1_5,加一个例子。例子代码如下: import java.awt.GraphicsConfigura...

Java3D环境配置

首先到http://www.oracle.com/technetwork/java/javase/downloads/index.html

基于Java的开源3D游戏引擎jMonkeyEngine

jMonkeyEngine是一款纯Java语言编写的游戏引擎,继承了Java应用跨平台的特性,而且是开放源代码的,遵循BSD开源协议,BSD开源协议用一句简单的话概括就是你可以用它做任何你想做的事情而...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Java3D导入obj和3ds模型整理

最近由于项目的原因,需要使用Java进行3D建模。Java3D是Java自带的技术,没什么配置难度,拿来入门再适合不过了。Java3d入门学习可以参考这位博主大神——苏若年,关于Java3D学习的文章...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于Java3D游戏的个人探索一小结
举报原因:
原因补充:

(最多只允许输入30个字)