Libgdx 0.99功能预览之------使用G3djModelLoader加载模型文件
2013-05-17 21:17
696 查看
Libgdx的作者在今年3月28日发博客说:“做好准备吧,新的3d API就要来了”,到现在已经有两个多月了,小菜我忍不住就想看看现在他们做成什么样子,好在开源的框架,源码随时可以拿来编译。怎么下载源码,这里不多说了,就用Git呗。源码编译很简单,两个命令:
进入到源码主目录,看起来是下面这样,刚刚下载下来,应该有一些不同,因为里面有我编译后生成的文件以及目录
接下来,确认我们现在check out的是new 3d api的 branch, 如果不是,使用下面所示的方法跳转:
接下来,在源码主目录下,打命令: ant -f fetch.xml. 这个命令是要下载一些源码代码编译出来的文件。因为这些文件,自己编译起来很麻烦,所以libgdx的作者帮我们都编译好了。成功下载后,会有success的提示。
看到成功了,就继续再打一个 ant。只要38秒,小蚂蚁就帮我生成了libgdx-0.9.9-SNAPSHOT.zip。这个还不是0.99,只是编译的结果取了这么个名字,准确点,或者应该称为 libgdx-pre-0.9.9-nightly.zip。
这里只说了编译的几个主要步骤,想要成功编译,大家肯定还要做一些设置的,这些就要官网去找找吧,这里给个链接:Building from source
接下来,又到了罗列代码的时候了,代码很短,步骤也不多,相信大家看过小菜我的前几篇博客后,也不会难理解:
然后上效果图,其实,运行出来时,人物是斜躺着的,我这不是用鼠标转了一下嘛!这个是libgdx中的CameraInputController类提供功能:
我加了System.out小试了一下,加载这个模型文件一共用了。。。。。。
1368796830172
1368796831658
1.5秒!!!
进入到源码主目录,看起来是下面这样,刚刚下载下来,应该有一些不同,因为里面有我编译后生成的文件以及目录
接下来,确认我们现在check out的是new 3d api的 branch, 如果不是,使用下面所示的方法跳转:
接下来,在源码主目录下,打命令: ant -f fetch.xml. 这个命令是要下载一些源码代码编译出来的文件。因为这些文件,自己编译起来很麻烦,所以libgdx的作者帮我们都编译好了。成功下载后,会有success的提示。
看到成功了,就继续再打一个 ant。只要38秒,小蚂蚁就帮我生成了libgdx-0.9.9-SNAPSHOT.zip。这个还不是0.99,只是编译的结果取了这么个名字,准确点,或者应该称为 libgdx-pre-0.9.9-nightly.zip。
这里只说了编译的几个主要步骤,想要成功编译,大家肯定还要做一些设置的,这些就要官网去找找吧,这里给个链接:Building from source
接下来,又到了罗列代码的时候了,代码很短,步骤也不多,相信大家看过小菜我的前几篇博客后,也不会难理解:
package com.kyugao.padlibgdx.screen; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Screen; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.GL10; import com.badlogic.gdx.graphics.PerspectiveCamera; import com.badlogic.gdx.graphics.VertexAttributes.Usage; import com.badlogic.gdx.graphics.g3d.Model; import com.badlogic.gdx.graphics.g3d.ModelBatch; import com.badlogic.gdx.graphics.g3d.ModelInstance; import com.badlogic.gdx.graphics.g3d.lights.Lights; import com.badlogic.gdx.graphics.g3d.lights.PointLight; import com.badlogic.gdx.graphics.g3d.loader.G3djModelLoader; import com.badlogic.gdx.graphics.g3d.materials.Material; import com.badlogic.gdx.graphics.g3d.utils.CameraInputController; import com.badlogic.gdx.graphics.g3d.utils.MeshPartBuilder; import com.badlogic.gdx.graphics.g3d.utils.ModelBuilder; public class TestLoaderScreen implements Screen { private PerspectiveCamera camera; private Model knightModel, axesModel; private ModelInstance knightInstance, axesInstance; private ModelBatch modelBatch; private Lights lights; private CameraInputController inputController; public TestLoaderScreen() { camera = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); camera.near = 0.1f; camera.far = 300f; camera.position.set(2f, 2f, 2f); camera.lookAt(0, 0, 0); camera.update(); final G3djModelLoader loader = new G3djModelLoader(); knightModel = loader.load(Gdx.files.internal("g3d/knight.g3dj")); knightInstance = new ModelInstance(knightModel); modelBatch = new ModelBatch(); lights = new Lights().add( new PointLight().set(1f, 1f, 1f, -20f, 10f, 0f, 150f), new PointLight().set(0f, 0f, 1f, 10f, 10f, 0f, 150f), new PointLight().set(0f, 1f, 0f, 0f, 10f, 50f, 150f)); createAxes(); Gdx.input .setInputProcessor(inputController = new CameraInputController( camera)); } private void createAxes() { ModelBuilder modelBuilder = new ModelBuilder(); modelBuilder.begin(); MeshPartBuilder builder = modelBuilder.part("axes", GL10.GL_LINES, Usage.Position | Usage.Color, new Material()); builder.setColor(Color.RED); builder.line(0, 0, 0, 100, 0, 0); builder.setColor(Color.GREEN); builder.line(0, 0, 0, 0, 100, 0); builder.setColor(Color.BLUE); builder.line(0, 0, 0, 0, 0, 100); axesModel = modelBuilder.end(); axesInstance = new ModelInstance(axesModel); } @Override public void dispose() { modelBatch.dispose(); axesModel.dispose(); axesModel = null; } @Override public void hide() { } @Override public void pause() { } @Override public void render(float arg0) { inputController.update(); GL10 gl = Gdx.gl10; gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); modelBatch.begin(camera); modelBatch.render(axesInstance); modelBatch.render(knightInstance, lights); modelBatch.end(); } @Override public void resize(int arg0, int arg1) { } @Override public void resume() { } @Override public void show() { } }
然后上效果图,其实,运行出来时,人物是斜躺着的,我这不是用鼠标转了一下嘛!这个是libgdx中的CameraInputController类提供功能:
我加了System.out小试了一下,加载这个模型文件一共用了。。。。。。
1368796830172
1368796831658
1.5秒!!!
相关文章推荐
- 使用Go语言实现配置文件热加载功能
- 文件上传插件Plupload使用(带图片预览功能)
- DirectX11 With Windows SDK--19 模型加载:obj格式的读取及使用二进制文件提升读取效率
- Libgdx New 3D API 教程之 -- 使用Libgdx加载模型
- iOS边练边学--plist文件,懒加载,模型初使用--补充instancetype
- Libgdx New 3D API 教程之 -- 使用Libgdx加载模型
- iphone开发之表格组件UITableView的使用(三)通过加载plist文件字典转模型方式展示分组数据
- TensorFlow使用C++加载使用训练好的模型,.cc文件代码实现的相关类及方法总结
- libgdx 3D 从资源文件加载模型
- android中图片加载使用LruCache缓存到内存或外部文件的功能
- JS中使用gulp实现压缩文件及浏览器热加载功能
- (libgdx学习)使用pixmap来实现涂口红功能
- CKEditor使用及开启文件上传功能(Servlet实现)
- 从内存中加载Pe文件: 免费使用SkinMagic,SkinCrafter和Skin++(SkinPP)
- 使用tensorflow保存、加载和使用模型
- php的include功能实现:用于在内存合并文件而非读入替换再存盘再载入使用include
- 使用C++实现功能下载文件
- 在Servlet中使用开源fileupload包实现文件上传功能
- 【设计模式:单例模式】使用单例模式加载properties文件
- 小白使用react——表单上传多个文件功能和下载文件功能