3D引擎--可移植到Android的开源的引擎

2023-11-06

随着android在全球的风靡,越来越多的人将自己的目光投向搭载android的 移动设备,但由于手持设备的局限性,怎样利用有限的资源来达到很好的体验,是设备厂商必须要考虑的问题,其中炫目的界面就是可以增加用户体验的一种方式。 这其中,3D效果无疑是对用户最具吸引力和说服力的。而3D引擎可以大大节省开发3D的成本,所以做了一次调查,此次调查的引擎必须满足以下:

开源:便于更改代码,优化性能,且免费。(商业引擎更出色,花钱不是?)
支持OpenGL:DirectX只能用于windows平台
可移植到Android:一定要支持Android平台
效率相对较高:移动设备的局限性,如电量,CPU,GPU等

目前调查的结果共得到9款引擎,在这分享给大家,节省大家的调查时间(调查过程中发现有更多,不过个人筛选出了9种):

  Horde3D
  OGRE3D
  Irrlicht
  jmonkey
  Catcake
  jPCT-AE
  min3d
  gamine
  Alien3D

针对9种引擎做参数分析:

1、OGRE

name

OGRE

Supported Graphic lib

OpenGL 、Direct3D

Develop Language

C++,builds on gcc 3+ on Linux

description

一个强大的实时图形引擎。目前全球评价最好使用最广的免费开源引擎,

可媲美商业引擎。

merit

支持多种纹理图片格式,包括:PNG,TGA,DDS,TIF,GIF,JPG;

支持骨骼动画,

内置强大的材质管理和脚本系统,可以不动一行代码去进行材质维护,

并且有可视化的编辑工具。文档完善。

defect

入门相对较难,渲染效率低。只专注于图形,不包含声音、网络等模块,

但留有接口,如有需要,可以添加第三方外挂库,如物理库、音频库等结合开发。



2、Irrlicht

name

Irrlicht

Supported Graphic lib

OpenGL 、Direct3D

Develop Language

C++

description

著名的“鬼火”引擎

merit

上手很快,易用性强,运行速度快,提供了可以在商业级的3D引擎上

具有的动态的阴影,粒子系统,角色动画,室内和室外技术以及

碰撞检测。现在网络上有很多Irrlicht的增强程序,可以拿来使用。

defect

对BSP支持较为贫乏


3、jmonkey

name

jmonkey

Supported Graphic lib

OpenGL 、Direct3D

Develop Language

Java

description

JMonkey 3D 是一款用于java 3D引擎

merit

封装了OpenGL,提供全性能的工具包,主要有图片解码器、

文件解码器、GUI系统、粒子系统、

物理系统、光照系统等,功能很齐全。

defect

JME对于OPENGL封装得太好, 以至根本找不到GL的痕迹, 

很多底层优化无法修改。目前只支持opengl es 2.0


4、Catcake

name

Catcake

Supported Graphic lib

OpenGL

Develop Language

C++,java

description

Catcake是一款跨平台的Java 3D图形引擎,也有C++版本

merit

有专门的android版本,易用性和运行性能上有出色的表现。

 支持音频处理和视频播放。

defect

文档不足


5、jPCT-AE

name

jPCT-AE

Supported Graphic lib

OpenGL

Develop Language

Java

description

jPCT-AE是jPCT在Android平台上的移植版本,以java语言为基础

merit

体积小,专门的Android移植版本,有着惊人的向下兼容性,

可以运行在JVM1.1环境之中,因为jPCT内部提供的图形渲染接口

完全符合所有的Java 1.1规范。

defect

Java编写,效率有待考量

6、Horde3D

name

Horde3D

Supported Graphic lib

OpenGL

Develop Language

C++

description

Horde3D is a small open source 3D rendering engine

merit

简单易懂,自带了场景编辑器,集成了简单的模型编辑,

粒子编辑,动作编辑等功能

defect

效率不是很高


7、min3D

name

min3D

Supported Graphic lib

OpenGL

Develop Language

Java

description

lightweight 3d library/framework for Android using Java

 with OpenGL ES targeting compatibility

 with Android v1.5/OpenGL ES 1.0 and higher.

merit

专门的android 3d UI引擎,非常小巧,只有几百K。

基于opengl es 1.x, 封装了opengl 的一些基本的绘图操作

以及绘图管理和渲染操作。提供了一个活动类RenderActivity,上手容易。

defect

功能相对简单。


8、gamine

name

gamine

Supported Graphic lib

OpenGL

Develop Language

Java

description

一款小型的java 3D引擎

merit

专门为Android开发的引擎,体积小,调研容易

defect

效率稍低


9、Alien 3D

name

Alien 3D

Supported Graphic lib

OpenGL

Develop Language

Java

description

java编写的OpenGL ES接口的3D游戏引擎

merit

3DS装载、2D 粒子、原型插件,tiled地图、精灵动画

defect

研究资料太少




上述列举了引擎的介绍,优缺点等,大家可以 根据自己的需要和侧重点选择,其中,OGRE和Irrlicht是比较成熟的产品,是开源的3D引擎中使用比较多的,网上有较多的文档和使用经验。 另外引擎的选择,重要的两点:1、效率,算法是否足够优秀;2、效果是否足够好,能不能达到你想要的绚丽效果,锯齿是否严重,运行时是否清新等。

下面着重列举两个引擎做对比

 


OGRE

Irrlicht

开发语言

C++

C++

易用性

门槛较高

易懂,入门低

效率

opgl渲染较慢

较高

美观

渲染的效果很好,清晰,

视觉效果好

运动较流畅,视觉效果还可以

资料

很多,被广泛研究和移植,

有很多项目和经验可以借鉴

全面,很多成功开源的项目及经验

移植性

需要参考资料移植

专门的Android版,移植简单

使用率

很成熟,免费3D图形引擎

中评价最高,使用率广

成熟的引擎,使用率较广

纹理格式和场景格式

lPNG, JPEG, TGA, BMP
l3D Max, Maya, Blender
l PSD,JPG,PNG,TGA,BMP
l3DS,OBJ,MY3D,CSM,DAE,
DMF,MS3D,  LMTS, MD2



欢迎大家借鉴和补充。在这要提醒各位,要注意这些3D引擎的开放协议,以免带来不便。


附:各引擎的source地址:

•jmonkey  svn checkout    http://jmonkeyengine.googlecode.com/svn/trunk
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3D引擎--可移植到Android的开源的引擎 的相关文章

随机推荐

  • NumPy库学习笔记(未完)

    NumPy库 这篇文章主要内容来源于Python Numpy 教程 NumPy 中文和python常用库 NumPy 和 sklearn入门 ML小菜鸟 博客园 cnblogs com 1 1 导入NumPy库 import numpy a
  • VS Code常用插件安装及使用

    C C 开发常用插件安装 C C 在C C 开发中 这个肯定是必须的 C C Snippets C C 重用代码块 C C Advanced Lint C C 静态检测 Code Runner 代码运行 Include AutoComple
  • 小程序如何获取当前的天气预报

    大家好 我是陈楠酒肆 今天我为大家分享的是小程序获取当前的天气预报 我们先看看效果图 在实现这个效果之前我们需要引用一个JS文件 就是amap wx js 这个文件可以在我的交流群里下载 由于这里我使用了高德地图密钥 因此 大家还需要在高德
  • 论文研读 —— 10. PCA-Kalman: device-free indoor human behavior detection with commodity Wi-Fi (2/3)

    文章目录 3 2 Online behavior testing phase 4 Experimental setup 4 1 Hardware testbed 4 2 Experimental scenarios 3 2 Online b
  • 设计之星 ai_“AI创新之星”评选活动征集工作已启动,6月15日止,速来!

    为了推动人工智能与实体经济发展的深度融合 充分展示国内企业和创业团队在人工智能领域的创新成果 中国人工智能 多媒体信息识别技术竞赛 组委会在竞赛期间组织开展 AI创新之星 评选活动项目征集工作 评 选 范 围 评选主要围绕 深化融合应用 培
  • randomforestregressor参数详解

    randomforestregressor参数详解 sklearn ensemble RandomForestRegressor n estimators 10 数值型参数 默认值为100 此参数指定了弱分类器的个数 设置的值越大 精确度越
  • 【JAVA基础】核心机制

    b站大学课程笔记 下面是课程链接 https www bilibili com video BV1364y1k7WG p 11 spm id from pageDriver vd source b53165477127ff81132dc79
  • 编译gnome-sharp-2.20.1出错

    To solve the problem gtk2 development library must be installed Under CentOS this can be done with yum groupinstall Deve
  • 密码正则

    正则一 密码正则 密码需包含字母 符号或者数字中至少两项且长度超过6位数 最多不超过16位数 const regPwd str gt let zmReg A Za z 大小写字母 let numReg 0 9 数字 let zfReg A
  • QTcp-心跳

    心跳机制 大致实现两中 心跳发起的主动方为谁 server或client 其基本思路 是在一定时间间隔内模拟server和client的通信 所以 这就比一般通信多了时间属性 而非随意进行交互 这里 我们将client作为主动方 其过程如下
  • 通过递归方法更改对象中的属性值

    需求 递归一个对象 我们更改其type全部为5 我们首先思考如果用每一层的循环我们怎么取解决 var data label 一级 1 type 1 children label 二级 1 1 type 1 children type 1
  • 有人提议扣程序员80%的税分给穷人,多人点赞。

    大家好 我是北妈 0 现在经济不好 很多人内心很慌 然后就有人开始打歪主意了 比如今天我看到了这个 这个说法甚至得到了很多人的支持和点赞 为什么会有很多人支持这种想法呢 毕竟在大家眼睛里 程序员是高薪 有钱的代名词 在大多数人工资收入都很低
  • SPI协议介绍

    在调试LCD驱动时用到了SPI接口 因此将了解 理解到的SPI知识记录下来 SPI接口有三线和四线两种类型 这里只介绍常用的四线类型 what 简单介绍 术语表 基本概念 why 优点特点 how 过程 what 简单介绍 术语表 name
  • 安装Ubuntu遇到unable to find a medium containing a live file system解决方案

    安装unable to find a medium containing a live file system 搜了好几个帖子 说是重新烧录u盘 换usb2 0 都不好使 最后找到了 在启动页面点击e 可以进入启动写参数界面 将quiet
  • 搜索提示是如何实现的

    经典的想法就是一个Trie的 keysWithPrefix 问题 更高级的 进一步考察 keysWithPrefix需要做prefix下的inOrder遍历 但是每当用户type下一个字符 那个提示列表瞬间就显示出来了 不像是遍历很大一棵树
  • CNCF X ACE KubeMeet 云原生应用管理专场·上海站来啦!

    简介 10月16日上海站 KubeMeet 将以 云原生应用管理 为主题 围绕 KubeVela 和 OpenKruise 两个项目的技术分享和企业实践展开 帮助开发者更好的应对云原生应用管理痛点 伴随着 Kubernetes 生态逐步完善
  • JavaScript实现随机抽奖功能

    通过数组存储抽奖号码 点击按钮实现名字 号码的滚动 点击停止即可实现抽奖功能 设置一个定时器 使用random方法随机获取号码 当点击按钮时去掉计时器实现暂停功能 思路解析 1 抽奖功能的名字滚动可以使用定时器都是获取名单中的数据 2 为了
  • 在字符串中删除特定的字符

    在字符串中删除特定的字符 字符串 题目 输入两个字符串 从第一字符串中删除第二个字符串中所有的字符 例如 输入 They are students 和 aeiou 则删除之后的第一个字符串变成 Thy r stdnts include
  • hashmap为什么用红黑树_HashMap

    以下面试题从看准 牛客 以及大量大厂面经中收集而来 面向真实面试 一 面试题总览 面试题整理后分为三大模块 分别是数据结构 扩容以及线程安全 同样梳理HashMap的时候也可以从这三个角度展开 下面这些问题相信大家在面试过程中也会被经常问到
  • 3D引擎--可移植到Android的开源的引擎

    随着android在全球的风靡 越来越多的人将自己的目光投向搭载android的 移动设备 但由于手持设备的局限性 怎样利用有限的资源来达到很好的体验 是设备厂商必须要考虑的问题 其中炫目的界面就是可以增加用户体验的一种方式 这其中 3D效