WAP之家:为您提供最全最新的WAP技术,CP.SP.3G等行业资讯。 WAP之家交流论坛全新开放 点击进入>>
WAP资讯 | 3G动态 | SP动态 | 运营商动态 | 内容商动态 | 制造商动态 | 论坛讨论>> 每次自动访问
WAP技术 | WAP源码 | 手机编程 | 手机源码 | 无线技术 | J2ME技术 | 手机软件 添加到收藏夹
IVR技术 | SP资料 | SMS MMS技术 | 商业方案 | IVR下载 | 书籍教程 | 工具软件 语言:繁體中文

WAP之家技术文章J2ME技术J2ME基础J2ME Mobile 3D入门教程(一)

J2ME Mobile 3D入门教程(一)
作者:魏祖英  来源:J2MEDEV.COM  发布时间:2005-10-31 17:01:07
aterial(material);

mesh=new Mesh(vb,tsa,appearnce);
mesh.setAppearance(0,appearnce);

我个人感觉Appearance类有些类似VertexBuffer类,同样是多种属性的持有者;在这里要强调一点,就是Appearance类的设置远远不止上述给出的东西,还有很多的设置(例如FOG也就是雾的设置)。Texture2D是帖图类,用它来设置帖图的信息,例如帖图的方式是平铺等方式。Material物名斯意就是指材质,这里你可是设置“反光度”、“颜色”等等信息。另外这里我还要介绍一种设置渲染参数的方法

//设置poly模式设置
PolygonMode polygonMode=new PolygonMode();
polygonMode.setShading(PolygonMode.SHADE_SMOOTH);
polygonMode.setCulling(PolygonMode.CULL_NONE);

//生成外貌
appearnce=new Appearance();
appearnce.setPolygonMode(polygonMode);
看刚刚给出的代码,似乎比上面的更简单是吧?其实在PolygonMode中已经替我们做了很多工作。该的设置很类似3D MAX中的Poly的使用。

刚才的代码中还给出了一个Mesh类,该类材质最后我们要的模型。

建立模型后,我们要建立Camera。在Camera中我在这里只简单介绍两个方法setParallel(float, float, float, float)和setPerspective(float, float, float, float)。我们首先来看setParallel(float, float, float, float)该方法是设置Camera的视图方法为平视图;第一个参数是设置视角的高度,注意是高度,不是角度,因为这里是平视图;第二个参数是Camera的宽高比例,例如我们的电视是4:3、宽银幕电影是16:9;第三、四参数分别是最近和最远渲染的范围。同样的setPerspective是设置Camera为透视图,这种视图比较接近我们日常生活中的观察的角度,而该方法的后三个参数和setParallel的后三个参数是一样的,而第一个参数是可是角度,这里你可不要忽视这个角度问题,这个角度是在透视图中计算投影的一个重要参数。

似乎一切都设置好了,其实不然,到目前为止我们仅仅是把我们所需要的素材都准备好了。下面我们来看看Mobile 3D的管理机制,熟悉3D制图的人都清楚大部分3D软件,3D API都是通过树状结构来管理素材的,这样的好处是每个模型、模型组、摄像机等元素作为节点都可以设置自己的旋转轴等等属性,并可以按照自己所设定好的动画信息进行运动。在Mobile 3D中为我们规定了该树状结构的根节点必须是World类的实例对象,其中摄影机和光线比较特殊,可以不被放置在这个树中,而是通过Graphics3D类的对象来设置(只是可以不被放到树中,而不是必须不放到树中)。
world=new World();
//world.addChild(camera);
world.addChild(mesh);
//world.setActiveCamera(camera);
//world.addChild(light);

记得在前面我们提到过模型可以从外部文件导入,这里要介绍了,你可以通过*.m3g文件导入,导入后你就可以直接获得World的实例对象,这里有可能包括各种模型、摄像机、灯光、环境、材质以及三角面的各种信息。也就是说通过*.m3g文件,我们可以直接获得World的实力化对象。
Object3D[] roots = Loader.load(“http://www.example.com/m3g/samples/simple.m3g”);
myWorld = (World)roots[0];

最后在我们建立这棵“参天大树”后我们终于可以绘制了,这也是最激动人心的时刻喽……^-^……前看代码 g.setClip(0,0,getWidth(),getHeight());
g.drawString("3D demo",2,100,Graphics.LEFT|Graphics.TOP);
g3d.bindTarget(g,true,Graphics3D.DITHER|Graphics3D.TRUE_COLOR);
g3d.setViewport(0,0,getWidth(),getHeight());
g3d.resetLights();
g3d.clear(background);
g3d.addLight(light,transform_light);



transForm.postRotate(angle,1,1,1);
//transForm.postTranslate(0,0,0);
transform_camera.postTranslate(0,0,0.02f);
g3d.setCamera(camera,transform_camera);
g3d.render(world,transForm);
//g3d.render(vb,tsa,appearnce,transForm);
g3d.releaseTarget();

这个简单吧~不用再说什么了吧?嘿嘿

希望上述的内容对你学习有帮助,有什么问题发邮件到我的信箱zuyingwei@hotmail.commerlin_wei@hotmail.com,当然更欢迎大家一起来探讨Moblie 3D

PS:最后把全部代码给大家吧~别嫌我罗嗦,还有一点要强调一下的,帖图的长宽都要为2的指数例如我这里用到的帖图是64*64的

程序代码

上一页  [1] [2] 

[] [返回上一页] [打 印]
文章评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码