01 2008 档案
摘要:Open-JWeb(Java Web)快速开发平台用户操作手册王保政Msn:baozhengw999@hotmail.comQQ:29803446声明:从即日2008年1月31日起,原名为CZTZ-JavaEE快速开发平台更名为Open-JWeb (RAD)快速开发平台,本平台是基于著名开源框架技术Spring,struts,webwork,hibernate,acegi,dwr编写的Java Web应用快速开发工具,为个人原创产品,基础平台1.0版着重解决增删改查的快速定制,应用此平台开发产品可以不写或者编写非常少量的代码就能实现一个增删改查的功能,另外基于acegi技术实现了全面的权限管理
阅读全文
摘要:继续前一次所介绍的人物名称显示,再来仔细地深入分析字体渲染,到底怎么样设置OpenGL函数才能显示出来呢?先来看下面一段代码:#001void LLFontGL::renderQuad(const LLRectf& screen_rect, const LLRectf& uv_rect, F32 slant_amt) const#002{#003 glTexCoord2f(uv_rect.mRight, uv_rect.mTop);#004 glVertex2f(llfont_round_x(screen_rect.mRight), #005 llfont_round_y(sc
阅读全文
摘要:基于Spring+Hibernate的通用增删改查的实现方法王保政Msn:baozhengw999@hotmail.comQQ:29803446一、设计方案1.1 名词解释:业务服务层:业务服务层引用了数据访问层接口DAO,业务服务层的类名一般是按Service作为后缀,业务服务层具体实现类可以按ServiceImpl命名。业务服务层类都可以在Spring配置文件中进行配置。服务定位器:ServiceLocator是一个服务定位器,也可以说是业务服务层的门面类,此服务定位器提供了静态的方法,通过静态的方法可调用所有的业务服务层接口,ServiceLocator封装了读取Spring配置文件的方
阅读全文
摘要:前面已经介绍了显示人物名称的基本框架,但是使用OpenGL显示这个名称出来是需要很复杂的步骤。由于OpenGL是图形引擎显示,也就是说所有字符的显示都是基于图形来显示,而图形的显示,就需要获取字体的图片,即是获取字体的字模。由于不能使用Windows的标准GDI来显示,那么就需要实现GDI所做的所有功能,比如从字体里读取每个字符的轮廓,然后生成合适大小的位图,再把这幅位图当作纹理贴到3D的平面上去,这样才可以在OpenGL显示字符串出来。在第二人生里的代码流程如下:1、LLFontGL::addChar() 添加一个字符纹理图片2、mImageGLp->bind() 绑定纹理图片。3、L
阅读全文
摘要:在第二人生里,每个人物显示都有一个名称,那么这个名称又是怎么样显示出来的呢?怎么样实现的呢?带着这两个问题,下面就去分析第二人生里面的实现代码。它的人物名称显示如下:蔡军生2008/01/24 QQ:9073204 深圳从上面的图片上,可以看到人物的头上有一个名称显示,用来标识人物角色。要显示这个人物名称,肯定是在二维的空间里显示的。每个人都有一个名称显示,很多人在一起时,就需要显示多名称。因此,在第二人生里把名称的显示和角色的显示是分离的。调用下面的代码来显示名称:1、LLPipeline::renderGeom()2、render_hud_elements()3、LLHUDObject::
阅读全文
摘要:在第二人生里,人物的显示是比较复杂的,因为同一个网格模型可以显示为不同的人物出来,也就是人物每个部位的纹理不一样,比如不同的女孩子就有可能选择不同的头发,还可以穿着不同的衣服,不同的裤子等等。要实现这些功能,也就是说要把头、上身、下身、脚分开来显示。如下图所示:蔡军生2008/01/22 QQ:9073204 深圳现在就来仔细地分析一下第二人生里是怎么样分别显示不同身体部份的,它的代码如下:#001U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)#002{#003 U32 num_indices = 0;#004#005 if (!mI
阅读全文
摘要:上面已经介绍怎么样显示Mesh数据,也就是人物模型已经显示出来,那么同样的模型怎么样构造出各种各样的人物来呢?在第二人生里是使用各种各样的纹理图片来实现的。下面就来仔细地分析这段代码,如下:#001 U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass)#002 {#003 if (!mValid || !mMesh || !mFace || !mVisible || #004 mFace->mVertexBuffer.isNull() ||#005 mMesh->getNumFaces() == 0) #
阅读全文
摘要:前面介绍了怎么样读取人物的Mesh数据,那么你也许会想到,读取数据之后是怎么样显示出来的呢?并且显示出活生活现的人物来。现在就来分析第二生里怎么样显示人物Mesh数据,它的显示流程如下:1、 LLAppViewer::mainLoop() 主线程的消息循环函数。2、 display() 主要渲染函数。3、 LLPipeline::renderGeom() 渲染管道显示函数。4、 LLDrawPoolAvatar::render() 人物缓冲池渲染函数。5、 LLDrawPoolAvatar::renderAvatars() 渲染所有人物。6、 LLVOAvatar::renderSkinned
阅读全文
摘要:前面介绍怎么样从文件里读取Mesh数据,那么怎么样知道数据从那里读取回来呢?这些信息又是记录在那里呢?现在就来分析这方面的问题。其实在第二人生里把这些信息保存在XML文件里的,可以在第二人生的目录character里找到文件avatar_lad.xml,这个文件就记录了人物角色组成信息。比如每个部位的组成文件名称,就可以通过下面XML片段可以找到: <mesh type="hairMesh" lod="1" file_name="avatar_hair_1.llm" min_pixel_width="160"
阅读全文
摘要:无需编写Java代码就能生成增删改查功能的CZTZ-JavaEE平台介绍王保政QQ:29803446Msn:baozhengw999@hotmail.com也许大家不会相信会有不用写Java代码就能生成增删改查功能的Java应用开发平台,但CZTZ-JavaEE Web快速开发平台的确实现了这一点。如果说中国应用软件的开发水平仍停留在手工作坊的时代,那么本平台的问世将至少可以否认这个观点。也许,中国应用软件的开发模式会因为此类平台的出现而有很大的变化----不懂编程的人员也可以通过平台定制自己的应用。项目的研发、实施周期大大缩短。不再有低水平的重复开发,软件组件的复用将会被发挥到极致。从我个人
阅读全文
摘要:从前面可以看到人物角色显示是比较重要的,也是比较复杂的。现在就来仔细地分析一下第二人生里的Mesh文件是怎么样读取的呢?可以显示出来如此逼真优秀的画面。如下图所示:蔡军生 2008/01/15 QQ:9073204 深圳在Mesh文件保存的格式里,最常用的有两种格式:文本格式和二进制格式。文本格式就是占用空间比较大,并且读取文件的数据也比较慢,但它便于查看。二进制格式是刚好相反的,在第二人生里使用的是二进制的文件格式。它的读取代码如下:#001 BOOL LLPolyMeshSharedData::loadMesh( const char *fileName )#002 {#003 //--.
阅读全文
摘要:在第二人生里,最重要的实现就是人物角色的实现,它不是基于第一视角实现的,而是第三视角的方式实现,因此每个居民在第二人生里是有一个虚拟人物角色代表的。这样构造出来的社会是多姿多彩,先来看看下面人物角色的图片:蔡军生 2008/01/14 QQ:9073204 深圳蔡军生 2008/01/14 QQ:9073204 深圳从上面看到各种各样的人物角色,穿着不同的衣服,摆出不同的姿势,形态各异。要实现这样的人物角色显示,是需要比较多的代码来实现的。首先是它的网格就比较复杂,有很多三角形才构造这样复杂的人物,刚刚头部构造的三角形网格大小,就有1.6M大小。其次它的骨骼动画也比较复杂,这些都需要大量的变换
阅读全文
摘要:在室外场境的实现中,有很多植物是需要显示出来的,比如树和花草是最常见的植物。下面就来看看第二人生里树显示的实现,如下图所示:蔡军生 2008/01/13 QQ:9073204 深圳看到如此优美的画面,让人感觉就是身临其境,快活如神仙一般。这样才提供给人们快乐的环境,度过美好的人生。那么这么优美的树是怎么样实现的呢?现在就来分析一下第二人生里树显示的实现,跟前面地面和天空一样,都是先创建网格,然再加上合适的纹理来实现的,代码如下:#001 BOOL LLVOTree::updateGeometry(LLDrawable *drawable)#002 {#003 LLFastTimer ftm(.
阅读全文
摘要:下面的代码是从jfreechart的Demo中复制后做了修改,demo中的代码存储pdf时,中文文字不能显示,解决的办法是将 DefaultFontMapper mapper = new DefaultFontMapper();语句替换为AsianFontMapper mapper = new AsianFontMapper("STSong-Light","UniGB-UCS2-H");另外,在工程中要有iTextAsian.jar包,下面是能生成中文PDF的demo代码:package com.example;import java.awt.Font;
阅读全文
摘要:在虚拟世界里,自然现象的实现是最需要实现的,比如天空的实现,以便反映是白天还是晚上,这样才逼真反映现实世界。在第二人生里实现的天空,还是比较好的,如下图所示:蔡军生2008/01/10 QQ:9073204 深圳从上面的图片里,可以看到太阳在远处,并具有雾化的效果,这是早上太阳升起的效果。看到远处是浅蓝色的天空,与海边连接成一体。在室外场境的模拟中,最重要的就是天空体的实现。目前实现天空体有两种不同的实现方式:天体盒和天空穹。而第二人生里是采用天空盒的实现方式,这种方式是渲染的速度比较快,但纹理需要特别处理,才让人们看到的所有地方一样远的感觉。跟实现地面是一样的,都是使用网格和纹理来实现。下面
阅读全文
摘要:本周在项目中解决的问题真是不少,因此大发感慨,如果工资的增长速度能跟技术的增长速度就好了.本周主要完成的工作如下:(1) 上周末在同一机器上实现了Cas服务器和两个基于Acegi的Web应用的单点登录,本周一在生产环境上部署Cas和一个Acegi的Web应用,并在另一台机器上部署另一个Acegi的Web应用,两个Acegi Web应用之间实现单点登录,登录成功后能从数据库中获得Acegi权限集合.要点:Cas所在主机生成的server.crt和.keystore需要在另一台机器上使用.(2)acegi应用的 URL的授权不用再配置文件中改了,可以存储到数据库中了.(3)周二开始研究JFreec
阅读全文
摘要:通过所有验证之后,第二人生就会连接到GRID服务器,从服务器上获取很多信息,比如角色的位置,虚拟世界的时间等等。接着就会根据这些信息去构造一帧帧的图片显示出来,在这里先看看下面的图片:蔡军生2008/1/8 QQ:9073204 深圳从这幅图片上,就可以看到有天空,有地面,还有房子,人和树等等。这么多东西都是一样一样实时渲染出来的,现在就来看看地面是怎么构造出来的。目前的3D技术都是使用网格和纹理来构造实时渲染,因此第二人生里的渲染也是一样的。那么地面的网格数据从那里来呢?地面的纹理图片又是从那里来呢?在第二人生里,地面的网格数据是比较简单的,只有一个平面,直接在程序里构造就可以了。纹理图片是
阅读全文
摘要:转眼之间07年就完了 时间真的是不饶人啊 也许转眼之间就是30的老年人了 女人是越老越害怕啊 现在真的有点开始害怕了 今年真的很失败,什么都很失败,家庭,朋友,爱人 也许不能抱怨什么,只是自己的不该 今天想了很多 自己真的是有点自私,可是人都是自私的 但我表现的太明显了 就好像喜怒哀乐什么都表现在脸上一样 这真的不好,别人也提醒过,自己也想改,可是老忘了 人无完人啊 首先来说说我这学期失败的地方吧 1。四级考了2次,没过 2。软件设计师考试下午的成绩相当之一个...
阅读全文
摘要:在信息的社会里,越来越多东西实现了数字化,带给大家方便的同时,也面临着严重的信息安全挑战。特别是个人帐号信息的安全性,或者判别一个人是否合法登录服务器的问题,都极其艰难。特别像第二人生这样的系统,它的交易系统是跟实现生活里的金钱联系在一起的,这样对它的验证要求就更加严格了。下面的图片,就是显示正在验证登录过程。蔡军生2008/1/8 QQ:9073204 深圳在第二人生里,第一次验证是通过帐号和密码验证,也就是前面介绍的Web验证,这样就返回一串web_login_key,如下:web_login_key=80947d38-d91b-4a34-8c78-6a822aa95974第二次验证就是连
阅读全文
摘要:登录状态界面之后,就是登录界面出现了,这时需要用户输入用户名称和密码,然后再连接到第二人生的WEB服务器,并且把用户名称和密码发送过去进行验证。当验证成功后,就会返回合适的数据给客户端,让客户端进行下一步的工作。登录界面的图片如下:蔡军生2008/1/7 QQ:9073204 深圳在登录界面里是怎么样把用户名称和密码传送给浏览器的呢?其实,这个界面也是由网页构成,因此它就是通过URL内容传送内置的浏览器,然后再从服务器返回这个网页,最后通过解释网页的脚本向服务器发送。登录界面的具体流程如下:1、 调用函数LLPumpIO::processChain。2、 调用函数LLIOPipe::proce
阅读全文
摘要:ASP的SEssion就是启用的,需要使用,直接赋值就可以了! 但是:PHP一定要自己先用session_start()启动,才能赋值。(php.ini设置更改过的除外!) 在过期时间设置上,ASP设置比较灵活一些,默认是20分钟,要自定义,直接用session.timeout=时间间隔就可以了! 但是,PHP中,默认是24分钟,而且这个时间需要改变PHP.INI设置才行,但并不是每个人都能控制 今天看到一篇关于php的SESSION会话使用入门到文章,看到了一个函数:session_set_cookie_params();他必须在session_start()之前使用! 例子: <?p
阅读全文
摘要:登录服务器是一个基本的功能,下面就来了解一下第二人生的登录界面设计与实现,先来分析一下登录状态界面的显示。它的界面如下图:从上面的界面,就可以看到界面的基本组成有窗口、菜单和状态显示,由于登录时需要从服务器下载数据,这是一个比较漫长的过程,因此需要提示这个下载过程正在进行中。在第二人生里要显示上面一个界面,也是比较复杂的事情,因为它所有界面的显示都是基本OPENGL的显示实现,也就是说每个界面的显示与更新都需要通过OPENGL的渲染通道进行。基本窗口是由Windows系统窗口组成,菜单是由类LLViewerMenuHolderGL创建,状态显示窗口是由类LLWebBrowserCtrl创建。类
阅读全文
摘要:一、Subversion for Eclipse3.2插件下载地址:http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240下载site-1.2.4.zip。 下载后,将此文件中plugins目录和features目录中的jar包分别复制到eclipse中的对应的目录下。然后重新启动eclipse。二、Subversion服务端版本库的安装老版本的Sunversion需要事先安装apache,并在apache中配置帐号和不同帐号对subversion项目的读写权限,安装过程很烦琐,如果配置通过SSL访问SVN的
阅读全文