package org.ourunix.android.jpctmd2demo;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.opengl.GLSurfaceView.Renderer;
import com.threed.jpct.Camera;
import com.threed.jpct.FrameBuffer;
import com.threed.jpct.Light;
import com.threed.jpct.Loader;
import com.threed.jpct.Object3D;
import com.threed.jpct.RGBColor;
import com.threed.jpct.SimpleVector;
import com.threed.jpct.Texture;
import com.threed.jpct.TextureManager;
import com.threed.jpct.World;
import com.threed.jpct.util.MemoryHelper;
public class GLRenderer implements Renderer {
// jpct需要准备下述对象实例,虚拟世界、Framebuffer、3D对象、纹理等
private World world;
private FrameBuffer fb;
private Object3D soilder;
private String[] texturesName = {"snork"};
private float scale = 0.8f;
private Light sun=null;
// 行走动画 相关参数
private int an = 2;
private float ind = 0;
@Override
public void onDrawFrame(GL10 gl) {
// TODO Auto-generated method stub
doAnim();
// 用颜色清除FrameBuffer
fb.clear(RGBColor.BLACK);
// 变换和灯光所有多边形
world.renderScene(fb);
// 绘制
world.draw(fb);
//显示
fb.display();
}
/**
* 实现动画的代码
* */
private void doAnim() {
// TODO Auto-generated method stub
//每一帧加0.018f
ind += 0.018f;
if (ind > 1f) {
ind -= 1f;
}
// 关于此处的两个变量,ind的值为0-1(jpct-ae规定),0表示第一帧,1为最后一帧;
//至于an这个变量,它的意思是sub-sequence如果在keyframe(3ds中),因为在一个
//完整的动画包含了seq和sub-sequence,所以设置为2表示执行sub-sequence的动画,
//这里设置为2,表示是第二个动作
//设置为2
soilder.animate(ind, an); //当然可以将an设置为别的数字,但必须是1——16.可以尝试看看其他的动作
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
// TODO Auto-generated method stub
// 如果FrameBuffer不为NULL,释放fb所占资源
if (fb != null){
fb.dispose();
}
fb = new FrameBuffer(gl, width, height);
}
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
// TODO Auto-generated method stub
//实例化虚拟世界
world = new World();
//设置了环境光源强度。负:整个场景会变暗;正:将照亮了一切。
world.setAmbientLight(250, 250, 250);
// TextureManager.getInstance()取得一个Texturemanager对象
// addTexture(textureName,texture)添加一个纹理,这边只是和我们的texturesName绑定一个纹理
TextureManager.getInstance().addTexture(texturesName[0], new Texture(LoadImg.bmp));
// 从assets文件夹中读取soilder.md2文件来实例化Object3D snork
soilder = Loader.loadMD2(LoadAssets.loadf("soilder.md2"), scale);
// 旋转soilder对象到"适当位置"
soilder.translate(0, 0, -50);
//这才是将纹理添加进去
soilder.setTexture(texturesName[0]);
// 释放部分资源
soilder.strip();
// 编译
soilder.build();
// 将snork添加到World对象中
world.addObject(soilder);
sun = new Light(world);
sun.setIntensity(255, 255, 0);
SimpleVector sv = new SimpleVector();
//sv.set(plane.getTransformedCenter());
sv.y -= 300;
sv.x -= 100;
sv.z += 200;
sun.setPosition(sv);
MemoryHelper.compact();
//获得Camera
Camera cam = world.getCamera();
cam.setPosition(0, 0, -100);
cam.lookAt(soilder.getTransformedCenter());
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
3DGame.rar_3d
共33个文件
class:9个
png:7个
java:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 113 浏览量
2022-09-24
05:05:29
上传
评论
收藏 1.36MB RAR 举报
温馨提示
通过3d引擎JPCT实现了让静止的3D物体运动起来
资源详情
资源评论
资源推荐
收起资源包目录
3DGame.rar (33个子文件)
JPCTMD2Demo
bin
classes.dex 375KB
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable-mdpi
ic_launcher.png 2KB
jpct5.apk 548KB
classes
org
ourunix
android
jpctmd2demo
LoadImg.class 659B
R$layout.class 433B
R$drawable.class 506B
JPCTMD2DemoActivity.class 1KB
R$attr.class 379B
R.class 567B
R$string.class 466B
LoadAssets.class 1KB
GLRenderer.class 4KB
resources.ap_ 359KB
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
values
strings.xml 188B
drawable-nodpi
soilder.jpg 36KB
Thumbs.db 7KB
disco.jpg 25KB
drawable-mdpi
ic_launcher.png 3KB
layout
main.xml 398B
assets
soilder.md2 313KB
jpctmd2demo.png 31KB
gen
org
ourunix
android
jpctmd2demo
R.java 764B
proguard.cfg 1KB
src
org
ourunix
android
jpctmd2demo
JPCTMD2DemoActivity.java 1KB
GLRenderer.java 3KB
.project 847B
.classpath 429B
project.properties 361B
AndroidManifest.xml 755B
共 33 条
- 1
小贝德罗
- 粉丝: 71
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0