Unity3d 与 jmonkeyengine 游戏各自的优缺点有哪些

jMonkeyEngine之Camera全攻略 - 博客频道 - CSDN.NET
游戏开发者
专注手机游戏 网页游戏开发 Unity Java
分类:jMonkeyEngine3D
昨天弄Camera,本来还以为不难,谁知道却被这个问题困扰了一个晚上。不知怎么地,早上突然一个猜想,然后测试,通过!因此写下本文,供大家一起学习交流。本文所用图片都是本人亲手PS的,所以转载文章、图片请注明出处。谢谢!
想自定义jMonkeyEngine中的Camera一般需要做2件事:
1、设置摄像机视锥(ViewFrustum)的大小
2、设置摄像机的位置和朝向
设置视锥(ViewFrustum)一般有以下2个方法:
setFrustum(float near, float far, float left, float right, float top, float bottom)
float near& &&&&&&&& : 最近那个面(屏幕)离摄像机位置(你眼睛)的距离。
float far&&&& &&&&&&&& : 相当于摄像机最远那个面和你眼睛的距离。
float left&&& &&&&&&&& : 最近那个面向左偏离你眼睛的值。
float right &&&&&&&& : 最近那个面向右偏离你眼睛的值。
float top&&& &&&&&&&& : 最近那个面向上偏离你眼睛的值。
float bottom&&&&& : 最近那个面向下偏离你眼睛的值。
该方法比较直观,也就是当你设置了一个锥体的2个截面和你距离,以及第一个截面的大小。那么你就能确定这个锥体(如下图,省略了right和bottom,原理和top、left一样)。
另一种设置视锥的方法是下面这种:
setFrustumPerspective(float fovY, float aspect, float near, float far)
float fovY&&&&&&&&&&& : 如果一个摄像机固定,一个物体从被正视到往上移动直到看不到的角度。
float aspect&&&&&& : 屏幕的宽高比。
float near& &&&&&&&& : 最近那个面(屏幕)离摄像机位置(你眼睛)的距离。
float far&&&& &&&&&&&& : 相当于摄像机最远那个面和你眼睛的距离。
这个方法也比较容易理解,看下面的图:
一般float fovY如果你不知道设置什么好,就设置45f,该值应该在0-90之间。你想想,如果你设置了91,那么表示摄像机上下的角度加起来将超过182,也就是你能看到自己后面的东西?而如果设置太小将形成隧道效应。
总体来说,设置视锥还是比较容易。接下来是设置位置和朝向。这很重要,决定了你能不能看到东西,就看这一步了。
设置帧(setFrame)
1、通过setLocation(Vector3f loc)和lookAt(Vector3f pos, Vector3f worldUp)组合设置
2、通过setFrame(Vector3f loc, Quaternion axes)
3、通过setFrame(Vector3f loc, Vector3f left, Vector3f up, Vector3f dir)
第一种方法比较简单。大家可以试一下,就是设置Camera的位置和它看向的方向。这个我就不说了。
第二种方法我还没试过。当应该和第三种方法原理一样。
我现在就讲讲第三种,正是这种方法困扰了我一天。
setFrame(Vector3f loc, Vector3f left, Vector3f up, Vector3f dir)
其中 loc为摄像机的位置,即视锥的顶点的在世界中的位置。而left和up则定义了camera自己的坐标系。dir为camera指向的方向。
//想在图中位置正视box,如下代码
Vector3f loc&&&&&& = new Vector3f(0,0,100);
Vector3f left&&&&& = new Vector3f(-1,0,0);
Vector3f up &&&& = new Vector3f(0,1,0);
Vector3f dir &&&& = new Vector3f(0,0,-1);
cam.setFrame(loc, left, up, dir);
up定义了camera的上轴,由于现在该轴和世界坐标系的Y轴一样,因此为(0,1,0),由于我们想让camera在Z轴正向往Z轴负向看。因此dir应该为(0,0,-1),而由于jME中使用右手坐标系统,因此X轴此时就只能是往左。即(-1,0,0)。Z轴可以看成是视锥顶点到各个截面中心的连线所指的方向,这个很重要记住!。
注意:很多人(包括我)一开始可能会想到将Camera移动到X轴正向,然后设置dir来从右边观察位于原点的Box。如下代码:
Vector3f loc&&&&&& = new Vector3f(100,0,0);
Vector3f left&&&&& = new Vector3f(-1,0,0);&&
Vector3f up &&&& = new Vector3f(0,1,0);
Vector3f dir &&&& = new Vector3f(-1,0,0);
cam.setFrame(loc, left, up, dir);
因为camera的坐标轴并没有改变,改变的只是dir。在坐标轴不变的情况下改变dir相当于将camera进行变形操作。而当dir和x轴或y轴为同一方向时,整个视锥相当于被压扁。它此时近似已经没有可视范围了,因此不管怎样都看不到东西了。
你还可以试试:
&&&&&&&& &&&&&&&& //想从Y轴往下看,也看不到Camera
Vector3f loc&&&&&& = new Vector3f(0, 100,0);
Vector3f left&&&&& = new Vector3f(-1,0,0);&&
Vector3f up &&&& = new Vector3f(0,1,0);
Vector3f dir &&&& = new Vector3f(0, -1,0);
cam.setFrame(loc, left, up, dir);
那么怎样才能在Vector3f loc = new Vector3f(100,0,0);的情况下从右侧观察box能。很简单。确定Y轴,确定dir,让它指向世界坐标X轴负向,最后确定Camera的X轴(由右手坐标规则)。
Vector3f loc&&&&&& = new Vector3f(100,0, 0);
Vector3f left&&&&& = new Vector3f(0,0,1);&&&&
Vector3f up &&&& = new Vector3f(0,1,0);
Vector3f dir &&&& = new Vector3f(-1,0, 0);
cam.setFrame(loc, left, up, dir);
&&&&&&&& OK了吧。
不知道怎样会不会让你更好理解一点:想要确定摄像机的朝向,那么先确定它的dir,然后确定up(因为一般都是(0,1,0)),然后把dir看成是Z轴,UP则是Y轴,这样就可以确定X轴,就是left。
注意:上面的(0,0,1)和(0,0,4)指向的是同一个方向,但是使用(0,0,4)你会发现box变形了。在这里,left、up、dir的数值除了用于计算方向,还代表单位向量的长度。因此,需要计算好。
kakashi8841
排名:第1769名
投资与合作
二次创业中
喜欢火影、喜欢Java、喜欢Unity3D、喜欢游戏开发的都可以加入木叶村Q群:
(1)(39)(1)(2)(4)(17)(15)(20)(1)(3)(3)(39)(9)(2)(9)(2)(43)(2)(2)(2)(1)(4)(2)jMonkeyEngine 3.0 | jMonkey | Book eBook PDFJmonkeyEngine解释_jmonkeyengine吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:282贴子:
JmonkeyEngine解释收藏
JmonkeyEngine是一个基于java的先进的3d游戏引擎。以下我会对其简短做些介绍。
创维OLED-S9D
JMonkeyEngine是一个开源的,遵循新BSD许可发布的项目。它被数个商业游戏工作室以及教育机构使用。JMonkeyEngine本质上是Java的库的集合。结合官方的基于NetBeans Ide的SDK,它是有多重图形组件的,可插件扩展的3D游戏开发引擎。JMonkeyEngine支持opengl2.0到4.0。其是一个完全基于Java的,具有完整的图形功能的引擎。默认使用LWJGL(Light Weight Java Gaming Library)进行图形渲染。JMonkeyEngine3 SDK是一个易于上手、功能丰富的游戏开发环境。具有Java语言经验的人可以高效的使用它开发游戏,甚至一个人完成较大的项目。
使用JMonkeyEngine开发的游戏项目有:Hostile Sector,一个基于网页的全3d回合制战略游戏。3079,一个类似Minecraft的沙盒、未来风fps游戏,全随机生成的地形、建筑、道具、角色、任务等等。Nord,一个可在facebook上游玩的3d社交游戏。更多基于此引擎的项目:
很想学,可惜没时间,先关注吧
很不错,已关注  —— 与你晨钟 暮鼓,安之若素
青铜星玩家
百度移动游戏玩家均可认证(限百度账号),
想学,没有机会也一窍不通。                                              。 你⃣非⃣我⃣良⃣人⃣                   怎⃣知⃣我⃣情⃣深⃣。⃣ ㊙
看起来不错,学会了去装逼学无止境仰如山挖地千尺水向东掘尽沧海千帆济机变无双心向南哪有名师何处找家翁只道胜于蓝强似鲲鹏九天翔
又不能做安卓平台的游戏
古人云:”此层之主乃彼楼之楼主,可谓楼主乃层主呼?”
顶学无止境仰如山挖地千尺水向东掘尽沧海千帆济机变无双心向南哪有名师何处找家翁只道胜于蓝强似鲲鹏九天翔
求吧主栽培,我很想做游戏
,呃呃 ue4 ce3党路过
顶  —— 与你晨钟 暮鼓,安之若素
顶一个话说群号码是不是应该交出来   —楼主我预订的十五字呢?我要退货!我要给差评!
围观~机智的无颜没有慌。。搬起了石头砸碎了缸
我点一丝烛火,一时泛滥了思念。?
能和 libgdx
对比说明一下么,那个引擎感觉最近挺火的。
顶一个 走起
楼主,我前几天刚学,跟着入门教程写,设置一个材料纹理,settextures(&m_colormap&,ass......)这句每次报错,说m_colormap没有定义,我该怎么改
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或jmonkeyengine吧_百度贴吧
签到排名:今日本吧第个签到,
本吧因你更精彩,明天继续来努力!
本吧排名:
本吧签到人数:38
可签7级以上的吧50个
本月漏签0次!
成为超级会员,赠送8张补签卡
连续签到:天&&累计签到:天
超级会员单次开通12个月以上,赠送连续签到卡3张
易于上手的强大Java游戏开发平台!
如图是jme3的视野示意图,在视野范围外的东西是看不见的。现在我做的场景很大,默认的视野不能看完,
JMonkeyEngine 游戏开发QQ群:
得力官方旗舰店「双11」满199立减80,办公设备低至5折,保险柜直降600元。
rt 不是很懂( 弄了两天了没弄好(
其實我英文不太好,用了google翻譯輔助 /jMonkeyEngine/wiki/compare/master...mrsmallbe
有没有那种像eclipse的方法,比如输入system.就弹出一系列方法辅助程序员输入的功能啊。。。 JME方法好长,还不好背。。。
有人翻译吗?
看到那么多jME开发者居然没有一个讨论的地方,我在得到官方支持后建立了一个中文社区,为所有国内的jM
求jmonkey执着简单3d跑酷游戏源码
这几天想学jme,但是官网进不去,哪里还能下载
处于对3d的游戏的喜爱,我来到了这吧以后共同努力。
得力双11欢乐办公季,官方旗舰店满99立减50元,立即参与
这有api手册吗。。。。
RT,搞了一天了没弄好
水B们,官方水楼已经开启,水楼请来这里。本水楼已经获得吧主同意,二楼执照。
大家好! 我是 walker 很高兴你们能加入 jMonkeyEngine中国 这段时间比较忙,处理游戏框架和游戏设计。 因为我也是才学习jmonkeyengine群里面有几个资
想先从简单的练手,直接上3D还是太麻烦了
貌似大吧发火了,我来发点福利好了 。。。。。
听说小吧没有炸,看来是真的
RT,顺路水水
相比许多新人进本吧是想要做属于自己的游戏吧,其他详细的什么,大吧已经在置顶帖说明了@timehekery ,也有许多童鞋是喜欢用手机的,于是乎,我们需要
用引擎做一个3d贪吃蛇………有人有现成的吗??
柴静你是在恐吓我们中国人吗?镇楼
。。。    --万紫千红终去,手痒怎耐心寒。    霞光祥云瑞霭,不过飘渺云烟 
一楼不给看! ( ̄&x2207; ̄) ( ̄&x2207; ̄) ( ̄∇ ̄)
我是一个火影忍者的粉丝,在几个月之前火影忍者的漫画完结了。只要想起火影忍者结束 我的心情就像有针插进来了,今天我终於下定决心要学懂写程式 为我
@timehekery 话说,,,,游戏里面的模型是怎么懂的,不一定全都是贴图吧,,,,我从某游戏中挖出模型文件。。。。可惜不知道接下来怎么办了
首签咋没人和我抢了
1.首先,吧主,我不会死吧 2.这次iOS开发采用Codea,只限于有iPad的童鞋学习(不要怪我) 3.本教程可能更新奇慢,但不会弃坑 4.本教程非常容易,但真
-_我只是个水萝卜,我可是要进化成红萝卜的。(&﹏&)
发贴红色标题
签到六倍经验
兑换本吧会员
赠送补签卡1张,获得
助攻总额: 43W
贴吧热议榜
使用签名档&}

我要回帖

更多关于 jmonkeyengine 教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信