导航:首页 > 操作系统 > android3d

android3d

发布时间:2022-04-16 08:34:19

A. 在android上开发一个3D游戏需要用到哪些技术

Android开源游戏引擎是Android游戏开发的基础,选择一个好的Android游戏开发的引擎能让我们更好的来开发游戏,下面就为大家简绍几个Android开源游戏引擎。
1、Angle
Angle是一款专为Android平台设计的,敏捷且适合快速开发的2D游戏引擎,基于OpenGL ES技术开发。该引擎全部用java代码编写,并且可以根据自己的需要替换里面的实现,缺陷在于文档不足,而且下载的代码中仅仅包含有少量的示例教程。
2、Rokon
rokon是一款Android 2D游戏引擎,基于OpenGL ES技术开发,物理引擎为Box2D,因此能够实现一些较为复杂的物理效果,该项目最新版本为 2.0.3 (09/07/10)。总体来说,此引擎最大的优点在于其开发文档相当之完备,并且项目作者对反馈Bug的修正非常之神速,所以该框架的使用在目前也最为 广泛,有人干脆将它称为Cocos2d-iPhone引擎的Android版(业务逻辑和编码风格上也确实很像)。附带一提,国内某个需要注册会员才能下 载的Android游戏框架衍生于此框架,所以大家也不要刻板的认为收费便一定是好的,免费就一定不好,最低运行环境要求为Android 1.5。
3、LGame
LGame是一款国人开发的Java游戏引擎,有Android及PC(J2SE)两个开发版本,目前最高版本同为0.2.6(31/07/10)。其底 层绘图器LGrpaphics封装有J2SE以及J2ME提供的全部Graphics API(PC版采用Graphics2D封装,Android版采用Canvas模拟实现),所以能够将J2SE或J2ME开发经验直接套用其中,两版本 间主要代码能够相互移植。Android版内置有Admob接口,可以不必配置XML直接硬编码Admob广告信息。
该引擎除了基本的音效、图形、物理、精灵等常用组件以外,也内置有Ioc、xml、http等常用Java组件的封装,代价是jar体积较为庞大,PC版 已突破1.2MB,Android版有所简化也在500KB左右。此外,该引擎还内置有按照1:1实现的J2ME精灵类及相关组件,可以将绝大多数 J2ME游戏平移到Android或PC版中。唯一遗憾的是,该项目作者是个极其懒惰的家伙,开发文档从去年说到今年依旧没有提供,只有游戏示例可供下 载。
4、jPCT
jPCT是一款基于OpenGL技术开发的3D图形引擎(PC环境为标准OpenGL,Android为OpenGL ES), 以Java语言为基础的,拥有功能强大的Java 3D解决方案。该引擎与LGame(此为2D游戏引擎)相类似,目前拥有PC(J2SE)以及Android两个开发版本。
jPCT的最大优势之一,就在于它惊人的向下兼容性。在PC环境中,jPCT甚至可以运行在JVM1.1环境之中,因为jPCT内部提供的图形渲染接口完 全符合所有的Java 1.1规范(就连已经消失的Microsoft VM乃至更古老的Netscape 4 VM也不例外)。
5、Catcake
Catcake是一款跨平台的Java 3D图形引擎,目前支持PC(J2SE)及Android环境运行(已有iPhone版规划)。该引擎在易用性和运行性能上皆有出色的表现,支持常见的游戏开发功能,诸如精灵动画,音频处理和视频播放等。
转网络知道

B. 安卓支持3D Touch吗安卓3D Touch功能详解

iPhone
6S上最重要的一个功能要数3D
Touch了吧,其被称作是多点触控后,又一重大触控方式。
虽说有安卓厂商已经推出了具备压力屏的智能手机,但整体感觉跟iPhone
6S相比,还是稍逊一筹,不过现在好消息来了。
美国媒体报道称,密歇根大学开发出一种超级暴力的软件,其可以把苹果上的3D
Touch带到所有的智能手机上,其会在下个月开始测试。
对于苹果来说,这绝对是悲惨的消息,之前他们曾强调,为了研发压力屏花费了好几年的时间,而现在一个小小的软件就能破解这个技术,或许是他们没有想到的。
实现3D
Touch的安卓会怎样
先来看看视频中的实际效果,当手指在屏幕上重压时所显示的物体被放大,松开手指物体则恢复成原样,基本上与3D
Touch异曲同工。这就是开发者Marco
Chiappetta想到的方案,利用手机自带的气压计来识别屏幕上所受到的压力,这是从硬件层面上实现的。
据了解,视频中使用的设备为索尼Xperia
Z3,是一款防水手机,气压计在其中用于检测手机的气密性。具体来说,在防水盖盖紧的情况下,当屏幕或机身感受到压力时若气压计数值变化在10点以上,则手机密封程度处于正常状态;若数值变化很小,则说明气密性不佳。
Marco
Chiappetta已经将他的想法和源码分享到了GitHub开源社区,对这套方案感兴趣的其它开发者将能从中受到启发,未来或许会出一些与“3D
Touch”有关的应用或游戏,但此举是否会损坏气压计有待观察。Android手机还可以这样实现“3D
Touch”
好机智!

C. 求助,怎么用android实现控件的3D立体旋转效果

packagecom.example.rotation3dview;
importandroid.content.Context;
importandroid.graphics.Camera;
importandroid.graphics.Canvas;
importandroid.graphics.Matrix;
importandroid.util.AttributeSet;
importandroid.view.MotionEvent;
importandroid.view.VelocityTracker;
importandroid.view.View;
importandroid.view.ViewDebug.HierarchyTraceType;
importandroid.view.ViewGroup;
importandroid.widget.ImageView;
importandroid.widget.Scroller;

{
privateintmCurScreen=1;
//滑动的速度
privatestaticfinalintSNAP_VELOCITY=500;
;
privateintmWidth;
privateScrollermScroller;
privateCameramCamera;
privateMatrixmMatrix;
//旋转的角度,可以进行修改来观察效果
privatefloatangle=90;
publicRote3DView(Contextcontext,AttributeSetattrs){
super(context,attrs);
mScroller=newScroller(context);
mCamera=newCamera();
mMatrix=newMatrix();
initScreens();
}

publicvoidinitScreens(){
ViewGroup.LayoutParamsp=newViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
for(inti=0;i<3;i++){
this.addView(newImageView(this.getContext()),i,p);
}
((ImageView)this.getChildAt(0)).setImageResource(R.drawable.page1);
((ImageView)this.getChildAt(1)).setImageResource(R.drawable.page2);
((ImageView)this.getChildAt(2)).setImageResource(R.drawable.page3);
}

@Override
protectedvoidonLayout(booleanchanged,intl,intt,intr,intb){
intchildLeft=0;
finalintchildCount=getChildCount();
for(inti=0;i<childCount;i++){
finalViewchildView=getChildAt(i);
if(childView.getVisibility()!=View.GONE){
finalintchildWidth=childView.getMeasuredWidth();
childView.layout(childLeft,0,childLeft+childWidth,childView.getMeasuredHeight());
childLeft+=childWidth;
}
}
}

@Override
protectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){
super.onMeasure(widthMeasureSpec,heightMeasureSpec);
finalintwidth=MeasureSpec.getSize(widthMeasureSpec);
finalintwidthMode=MeasureSpec.getMode(widthMeasureSpec);
if(widthMode!=MeasureSpec.EXACTLY){
thrownewIllegalStateException("仅支持精确尺寸");
}
finalintheightMode=MeasureSpec.getMode(heightMeasureSpec);
if(heightMode!=MeasureSpec.EXACTLY){
thrownewIllegalStateException("仅支持精确尺寸");
}
finalintcount=getChildCount();
for(inti=0;i<count;i++){
getChildAt(i).measure(widthMeasureSpec,heightMeasureSpec);
}
scrollTo(mCurScreen*width,0);
}

privatefloatmDownX;
@Override
publicbooleanonTouchEvent(MotionEventevent){
if(mVelocityTracker==null){
mVelocityTracker=VelocityTracker.obtain();
}
//将当前的触摸事件传递给VelocityTracker对象
mVelocityTracker.addMovement(event);
floatx=event.getX();
switch(event.getAction()){
caseMotionEvent.ACTION_DOWN:
if(!mScroller.isFinished()){
mScroller.abortAnimation();
}
mDownX=x;
break;
caseMotionEvent.ACTION_MOVE:
intdisX=(int)(mDownX-x);
mDownX=x;
scrollBy(disX,0);
break;
caseMotionEvent.ACTION_UP:
=mVelocityTracker;
velocityTracker.computeCurrentVelocity(1000);
intvelocityX=(int)velocityTracker.getXVelocity();
if(velocityX>SNAP_VELOCITY&&mCurScreen>0){
snapToScreen(mCurScreen-1);
}elseif(velocityX<-SNAP_VELOCITY&&mCurScreen<getChildCount()-1){
snapToScreen(mCurScreen+1);
}else{
snapToDestination();
}
if(mVelocityTracker!=null){
mVelocityTracker.recycle();
mVelocityTracker=null;
}
break;
}
returntrue;
}

@Override
publicvoidcomputeScroll(){
if(mScroller.computeScrollOffset()){
scrollTo(mScroller.getCurrX(),mScroller.getCurrY());
postInvalidate();
}
}

publicvoidsnapToDestination(){
setMWidth();
finalintdestScreen=(getScrollX()+mWidth/2)/mWidth;
snapToScreen(destScreen);
}

publicvoidsnapToScreen(intwhichScreen){
whichScreen=Math.max(0,Math.min(whichScreen,getChildCount()-1));
setMWidth();
intscrollX=getScrollX();
intstartWidth=whichScreen*mWidth;
if(scrollX!=startWidth){
intdelta=0;
intstartX=0;
if(whichScreen>mCurScreen){
setPre();
delta=startWidth-scrollX;
startX=mWidth-startWidth+scrollX;
}elseif(whichScreen<mCurScreen){
setNext();
delta=-scrollX;
startX=scrollX+mWidth;
}else{
startX=scrollX;
delta=startWidth-scrollX;
}
mScroller.startScroll(startX,0,delta,0,Math.abs(delta)*2);
invalidate();
}
}

privatevoidsetNext(){
intcount=this.getChildCount();
Viewview=getChildAt(count-1);
removeViewAt(count-1);
addView(view,0);
}

privatevoidsetPre(){
intcount=this.getChildCount();
Viewview=getChildAt(0);
removeViewAt(0);
addView(view,count-1);
}

privatevoidsetMWidth(){
if(mWidth==0){
mWidth=getWidth();
}
}
}
/*
*当进行View滑动时,会导致当前的View无效,该函数的作用是对View进行重新绘制调用drawScreen函数
*/
@Override
protectedvoiddispatchDraw(Canvascanvas){
finallongdrawingTime=getDrawingTime();
finalintcount=getChildCount();
for(inti=0;i<count;i++){
drawScreen(canvas,i,drawingTime);
}
}

publicvoiddrawScreen(Canvascanvas,intscreen,longdrawingTime){
//得到当前子View的宽度
finalintwidth=getWidth();
finalintscrollWidth=screen*width;
finalintscrollX=this.getScrollX();
//偏移量不足的时
if(scrollWidth>scrollX+width||scrollWidth+width<scrollX){
return;
}
finalViewchild=getChildAt(screen);
finalintfaceIndex=screen;
finalfloatcurrentDegree=getScrollX()*(angle/getMeasuredWidth());
finalfloatfaceDegree=currentDegree-faceIndex*angle;
if(faceDegree>90||faceDegree<-90){
return;
}
finalfloatcenterX=(scrollWidth<scrollX)?scrollWidth+width
:scrollWidth;
finalfloatcenterY=getHeight()/2;
finalCameracamera=mCamera;
finalMatrixmatrix=mMatrix;
canvas.save();
camera.save();
camera.rotateY(-faceDegree);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-centerX,-centerY);
matrix.postTranslate(centerX,centerY);
canvas.concat(matrix);
drawChild(canvas,child,drawingTime);
canvas.restore();
}

D. Android 3D游戏开发技术详解与典型案例的本书作者

吴亚峰,本科毕业于北京邮电大学,后留学澳大利亚卧龙岗大学取得硕士学位,1998年开始从事Java应用的开发,有10多年的Java开发与培训经验。主要的研究方向为Open GL ES、手机游戏、Java EE、搜索引擎,同时为手机游戏、Java EE独立软件开发工程师,并兼任百纳科技Java培训中心首席培训师。从2000年来为数十家着名企业培养了上千名软件开发人员,曾编写过《Java SE6.0编程指南》、《Java程序员职场全攻略——从小工到专家》、《Android2.0游戏开发实战宝典》、《Android核心技术与实例详解》等多本畅销技术书籍。2008年初开始关注Android平台下的应用开发,并开发出一系列优秀的Android应用程序与游戏。
苏亚光,哈尔滨理工大学硕士,有软件领域8年的从业经历,在软件开发和计算机教学方面有着丰富的经验。早期主要从事底层软件的设计与开发工作,现主要从事ARM平台下嵌入式程序的设计、开发等方面的工作。同时,在SOA领域也做了很多有益的工作。
另外,昊燃、方振宇、陈冠佐、傅奎、陈勤、梁洋洋、毕梦飞、陈庆、柴相花、陈非凡、陈华、陈嵩、承卓也参与了本书的编写。在此表示感谢!
致谢
本书在编写过程中得到了唐山百纳科技有限公司Java培训中心的大力支持,同时孙佳佳、李光正、蒋召志、郑安、田永宏、李建宝、王海峰及作者的家人为本书的编写提供了很多帮助,在此表示衷心的感谢!
由于编者的水平和学识有限,且书中涉及的知识较多,难免有疏漏之处,敬请广大读者朋友批评指正,并多多提出宝贵意见。
编者

E. 安卓手机有没有能做3d模型的软件

手机端实现的建模技术已经支持3D扫描、数字雕刻、3D打印等高端技术,指尖触摸和拖动创很精确,对用户来说,触摸界面更加友好,适合随时随地发挥创意。以下是手机上的3D建模软件总结:

PhotoSynth for iPhone

一款微软开发的全景拍摄应用,该应用会判断出照片和照片之间的共同点,快速建构将各种不同角度和来源照片的360度平面全景照片。

F. 谁推荐几款比较好玩的安卓3D游戏,谢谢啦!

3D赛车类的《都市赛车6》《极限方程式》《3D极限摩托》《雷霆极速2》《终极跑车》
3D射击类的《黑帮时代》《太平洋飞虎队完整版 》《星际闪电战》《3D坦克1944 》《热血机甲》
3D大作《永恒勇士》《不朽的神迹》《斯巴达英雄》《芒刺在身高清版》《地牢猎人2》
建议到爱扒啦下载,还有视频解说呢....这个网站更新也快,游戏应用都很多。

G. 用Android能不能绘制3D人物模型

android不能绘制3D人物模型。需要使用用建模软件(3D MAX)画然后在程序中读出来渲染出来,先画出人物模型,然后可以在android中加载出来。android是加载的人物模型的文件。
更多关于android 3D的知识请来参考android学习手册,android学习手册包含9个章节,108个例子,源码文档随便看,例子都是可交互,可运行,源码采用android studio目录结构,高亮显示代码,文档都采用文档结构图显示,可以快速定位。360手机助手中下载,图标上有贝壳。

H. 安卓手机3D桌面怎么弄

安卓桌面美化软件推荐: Regina美化3D桌面汉化版 想让自己的手机桌面变成3D酷炫的样式吗?还在为SPB Shell 3D对手机的破解不完美而遗憾吗?今天这款新的3D美化桌面将弥补你的遗憾,让你感受到毫不示弱的极致3D酷炫桌面效果。 主题美化 aHome Lite Console是一款集更改图标,添加桌面插件,更换手机主题的强大应用软件。 下载地址: http://anzhuoyuan.com/?s=%E7%BE%8E%E5%8C%96

I. Android上怎么建3D模型有什么3D建模软件么

做3d设计的软件很多,像AutoCAD、Solidworks、3DS MAX、Maya、Softimage
XSI、Xara3D等等,一般室内模型、展览模型设计最常用的是3dmax、CAD,另外,动画设计会用maya、3DMAX,机械设计一般用UG、Solidworks、CAD等。如果想学3d模型设计,建议去模型云上多看看,里面有很多设计师的作品,对制作的软件也有相应的说明。

J. android里面3d动画怎么做啊,求大神指导

是单纯说动画怎么做还是说安卓里面有交互功能的动画怎么做?
单纯做3D动画,你懂得MAYA 3DMAX等软件的操作即可,熟悉建模、贴图、绑定、动画、灯光渲染等模块,懂得动画的运动规律。
如果是带交互的动画,这就涉及更广了,像游戏的话,首先你必须得会写代码,会使用类似Angle 2D engine 、Rokon、Catcake、jPCT、U3D等等一些游戏引擎。然后当然,你会做3D动画。

阅读全文

与android3d相关的资料

热点内容
cocos2dluapdf 浏览:491
假的加密锁靠谱吗 浏览:176
经营圣手服务器怎么调 浏览:749
arduino手机编程 浏览:481
西医pdf下载 浏览:29
后浪电影学院pdf 浏览:813
程序员怎么做到不被人嫉妒 浏览:669
cmd新建文件夹md命令 浏览:570
php数组中的数值排序 浏览:832
安卓手机怎么避免小孩内购 浏览:171
联想服务器出现黄色叹号怎么办 浏览:991
约翰编译器制作教程 浏览:130
大地pdf 浏览:109
pdfplus 浏览:577
汇编O命令 浏览:970
plt转pdf 浏览:365
魔兽60宏命令大全 浏览:479
php志愿者网站源码 浏览:875
贸易pdf 浏览:497
dbug命令 浏览:352