仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 810|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网页设计手机上J2ME的3D编程-复杂创立3D立方体...

[复制链接]
小魔女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:35:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net里有这些工具吗?要简单多少?。编程|创立参考文档:JSR-184

工具:Eclipse3.0+Eclipseme

API:Mobile3DGraphicsAPI

摹拟器:SonyEriCSSon

剖析:

在实际生存中,我们所看到的是一个3维体系。透过双眼,能够看到的是一个丰厚多彩的天下。我们所用的拍照机,可以拍出良多大度的图片。拍摄每张图片时,能够依据拍摄间隔的远近能够调剂所拍摄画面上的内容。








在假造的天下里,能够摹拟实在天下。欲将假造天下展现出来,就要使用一个假造的拍照机,将假造的天下拍摄出来。








在JSR-184中,假造的天下是由World类机关的。假造的拍照机是Camera类。经由过程Camera的地位或视角的改面,将假造天下显现得手机屏幕上。Camera默许是朝向Z轴的负偏向。在假造天下中,各个物体都是由Mesh类创立的。分歧的Mesh属性对应分歧的物体。








机关物体时,先要机关物体的骨架(即外形),然后用一种质料蒙到骨架上。物体的外形,是由一组点和每一个点的法向量决意的。质料则是图片。








上面依照与下面相反的按次再一个假造的天下中构建一个立方体。步骤以下:

1机关立方体





机关一个立方体必要给出立方体的各个极点,然后划定各个极点的法向量,最初将图片帖到由极点和各点法向量组成的架子上。








各个极点的给出,是和法向量共同的。因为立方体是由6个矩形构成的,以是就要断定这6个矩形。由于由一个点和一个法向量就可以够断定一个面,那末4个极点和4个法向量就断定了4个面。假如这4个面堆叠,4个极点就组成了一个矩形的地区。用这个办法断定6个矩形,再用这6个举办构成一个立方体。








将图片帖到立方体是,就是将立方体上的极点和图片上的点举行对应。二者能够用分歧的单元。


上面构建一个立方体

给出立方体的极点们:





shortx=20;

shorty=20;

shortz=20;

shortfx=(short)-x;

shortfy=(short)-y;

shortfz=(short)-z;



short[]vert={x,y,z,fx,y,z,x,fy,z,fx,fy,z,//D

fx,y,fz,x,y,fz,fx,fy,fz,x,fy,fz,//C

fx,y,z,fx,y,fz,fx,fy,z,fx,fy,fz,//B

x,y,fz,x,y,z,x,fy,fz,x,fy,z,//F

x,y,fz,fx,y,fz,x,y,z,fx,y,z,//A

x,fy,z,fx,fy,z,x,fy,fz,fx,fy,fz};//E



VertexArrayvertArray=newVertexArray(vert.length/3,3,2);

vertArray.set(0,vert.length/3,vert);



给出立方体极点们的法向量:





byte[]norm={0,0,127,0,0,127,0,0,127,0,0,127,

0,0,-127,0,0,-127,0,0,-127,0,0,-127,

-127,0,0,-127,0,0,-127,0,0,-127,0,0,

127,0,0,127,0,0,127,0,0,127,0,0,

0,127,0,0,127,0,0,127,0,0,127,0,

0,-127,0,0,-127,0,0,-127,0,0,-127,0};








VertexArraynormArray=newVertexArray(norm.length/3,3,1);

normArray.set(0,norm.length/3,norm);








给召盘点们对应图片上的点(vert和tex数组是逐一对应的):





short[]tex={1,0,0,0,1,1,0,1,

1,0,0,0,1,1,0,1,

1,0,0,0,1,1,0,1,

1,0,0,0,1,1,0,1,

1,0,0,0,1,1,0,1,

1,0,0,0,1,1,0,1};








VertexArraytexArray=newVertexArray(tex.length/2,2,2);

texArray.set(0,tex.length/2,tex);








依据下面给出的数组,构成立方体:





//createtheVertexBufferforourobject

VertexBuffervb=boxVB=newVertexBuffer();

vb.setPositions(vertArray,1.0f,null);

vb.setNormals(normArray);

vb.setTexCoords(0,texArray,1.0f,null);















2将立方体实例化












//thelengthofeachtrianglestrip

int[]stripLen={4,4,4,4,4,4};








//createtheindexbufferforourobject(thistellshowto

//createtrianglestripsfromthecontentsofthevertexbuffer).

TriangleStripArraytsa=newTriangleStripArray(0,stripLen);








//创立多边形形式。

PolygonModepm=newPolygonMode();

pm.setShading(PolygonMode.SHADE_SMOOTH);

pm.setCulling(PolygonMode.CULL_NONE);








//天生表面。

Appearanceapp=newAppearance();

app.setPolygonMode(pm);








ImagetexImg=null;

try{

texImg=Image.createImage(this.imageUrl);

}catch(Exceptione){

StringstrErr="LoadImage(path=";

strErr+=this.imageUrl;

strErr+=")Fail!";

System.err.println(strErr);

}





Texture2Dtexture=null;

try{

//createtexturefromloadedimage.

texture=newTexture2D(newImage2D(Image2D.RGB,texImg));

}catch(Exceptione){

e.printStackTrace();

StringstrErr="FailedtocreatetextureUseFormat---Image2D.RGB";

System.out.println(strErr);

}



try{

//repeattextureonsurface

texture.setWrapping(Texture2D.WRAP_REPEAT,Texture2D.WRAP_REPEAT);



}catch(Exceptione){

e.printStackTrace();

System.out.println("Failedtocreatetexture3");

}



try{

//Blendmodetouse.

texture.setBlending(Texture2D.FUNC_DECAL);

}catch(Exceptione){

System.out.println("Failedtocreatetexture4");

}



try{

//Usenearestforperformance,linearforquality

texture.setFiltering(Texture2D.FILTER_NEAREST,Texture2D.FILTER_NEAREST);

}catch(Exceptione){

System.out.println("Failedtocreatetexture5");

}



try{

app.setTexture(0,texture);

}catch(Exceptione){

System.out.println("Failedtocreatetexture6");

}








//创立网格。

mesh=newMesh(vb,tsa,app);

mesh.setAppearance(0,app);















3创立World





//createacamera

camera=newCamera();

camera.setPerspective(60.0f,//fieldofview

(float)getWidth()/(float)getHeight(),//aspectRatio

1.0f,//nearclippingplane

1000.0f);//farclippingplane

camera.setTranslation(0,0,50);








world=newWorld();

world.addChild(camera);



world.addChild(mesh);

world.setActiveCamera(camera);















4绘制World





//privateGraphics3Dg3d=null;








protectedvoidpaint(Graphicsg){

//TODOAuto-generatedmethodstub

Draw(g);

}

privatevoidDraw(Graphicsg){

try{

g3d.bindTarget(g);

g3d.render(world);

}catch(Exceptione){



}finally{

g3d.releaseTarget();

}

}















5扭转立方体












mesh.postRotate(1.0f,1.0f,0f,0f);

认识是以向量为(1,0,0)的偏向(就是x轴)为轴将立方体扭转1度。















至此,就是制作一个假造的天下,并安排一个立方体的步骤。下面的代码是从一个完全的程序中截取的,有的中央大概不便利了解。前面将附上完全的代码。





你说是sun公司对她研究的透还是微软?针对自己工具开发的.net性能上肯定会站上风的。
活着的死人 该用户已被删除
沙发
发表于 2015-1-21 10:38:50 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
若天明 该用户已被删除
板凳
发表于 2015-1-24 06:30:46 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
老尸 该用户已被删除
地板
发表于 2015-1-31 21:35:16 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
不帅 该用户已被删除
5#
发表于 2015-2-4 06:39:51 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
深爱那片海 该用户已被删除
6#
发表于 2015-2-4 21:02:33 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
简单生活 该用户已被删除
7#
发表于 2015-2-8 07:33:47 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
冷月葬花魂 该用户已被删除
8#
发表于 2015-2-16 23:49:47 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
兰色精灵 该用户已被删除
9#
发表于 2015-2-23 09:02:09 | 只看该作者
是一种为 Internet发展的计算机语言
飘飘悠悠 该用户已被删除
10#
发表于 2015-3-7 06:14:58 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
柔情似水 该用户已被删除
11#
发表于 2015-3-14 12:13:51 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
小女巫 该用户已被删除
12#
发表于 2015-3-15 12:53:56 | 只看该作者
是一种使用者不需花费很多时间学习的语言
第二个灵魂 该用户已被删除
13#
发表于 2015-3-17 09:00:14 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
海妖 该用户已被删除
14#
发表于 2015-3-24 03:49:47 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
分手快乐 该用户已被删除
15#
发表于 2015-3-27 08:09:18 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
若相依 该用户已被删除
16#
发表于 2015-4-3 20:36:21 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
爱飞 该用户已被删除
17#
发表于 2015-4-4 22:35:10 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
愤怒的大鸟 该用户已被删除
18#
发表于 2015-4-15 07:06:54 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
飘灵儿 该用户已被删除
19#
发表于 2015-4-16 08:11:11 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
精灵巫婆 该用户已被删除
20#
发表于 2015-4-21 18:08:21 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 20:36

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表