Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - J2EEGuy

#1
Support / Re: Drawing of controls.
January 11, 2013, 09:48:25 AM
Thanks again for the support, i was able to get blit to work by reading this guys post.
http://www.jpct.net/forum2/index.php/topic,2940.msg21620.html#msg21620
It works superbly. When I finish my game i will provide the source code and animations here for everyone to attack.
#2
Support / Re: Drawing of controls.
January 11, 2013, 09:06:29 AM
I posted this line EVERYWHERE in my code.

fb.blit(texture, 10, 10, 10,10, 100, 100, false);

nothing happens.
#3
Support / Re: Drawing of controls.
January 10, 2013, 04:43:23 PM
The picture simply does not show up on the screen when i call the blit method from anywhere.
#4
Support / Re: Drawing of controls.
January 10, 2013, 03:21:30 PM
At first I tried to do actual math with the vectors, but it just wasn't happening. The second world view worked only because I could not get blit to run :/
When I'm thinking clearer I'll read up on framebuffers. This code is pretty hacked up.

For now, this is my working code with no blit. It uses three models, a gun, and plane for the ground, and an animated double cube setup. If someone could spontaneously inject a working blit method call that would be tits.
package com.threed.jpct.example;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.lang.reflect.Field;

import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.egl.EGLDisplay;
import javax.microedition.khronos.opengles.GL10;

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.graphics.Point;
import android.opengl.GLSurfaceView;
import android.os.Build;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.MotionEvent;
import android.widget.Toast;

import com.threed.jpct.Animation;
import com.threed.jpct.Camera;
import com.threed.jpct.FrameBuffer;
import com.threed.jpct.Light;
import com.threed.jpct.Loader;
import com.threed.jpct.Logger;
import com.threed.jpct.Matrix;
import com.threed.jpct.Object3D;
import com.threed.jpct.Primitives;
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.BitmapHelper;
import com.threed.jpct.util.MemoryHelper;

/**
* A simple demo. This shows more how to use jPCT-AE than it shows how to write
* a proper application for Android. It includes basic activity management to
* handle pause and resume...
*
* @author EgonOlsen
*
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
public class HelloWorld extends Activity {

// Used to handle pause and resume...
InputStream is;

private static float move = 0;
private int controlx;
private int controly;
private int ylimiter = 0;
private float ind = 0;
private static HelloWorld master = null;

private float objectscale =1f;
private GLSurfaceView mGLView;
private MyRenderer renderer = null;
private FrameBuffer fb = null;
private World world = null;
private World world2 = null;
private RGBColor back = new RGBColor(50, 50, 100);
private int derp =0;
private float touchTurn = 0;
private float touchTurnUp = 0;

private float xpos = -1;
private float ypos = -1;

private Object3D cube = null;
private Object3D thing = null;
private Object3D pistola = null;
private Object3D testplane = null;
private int fps = 0;
SimpleVector AB = null;

 
private Light sun = null;
private Light sun2 = null;
SimpleVector sv2 = new SimpleVector();
Camera cam;
Camera cam2;
//Camera cam = world.getCamera();
protected void onCreate(Bundle savedInstanceState) {

Logger.log("onCreate");

if (master != null) {
copy(master);
}

super.onCreate(savedInstanceState);
mGLView = new GLSurfaceView(getApplication());

mGLView.setEGLConfigChooser(new GLSurfaceView.EGLConfigChooser() {
public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) {
// Ensure that we get a 16bit framebuffer. Otherwise, we'll fall
// back to Pixelflinger on some device (read: Samsung I7500)
int[] attributes = new int[] { EGL10.EGL_DEPTH_SIZE, 16, EGL10.EGL_NONE };
EGLConfig[] configs = new EGLConfig[1];
int[] result = new int[1];
egl.eglChooseConfig(display, attributes, configs, 1, result);
return configs[0];
}
});

renderer = new MyRenderer();
mGLView.setRenderer(renderer);
setContentView(mGLView);
}

@Override
protected void onPause() {
super.onPause();
mGLView.onPause();
}

@Override
protected void onResume() {
super.onResume();
mGLView.onResume();
}

@Override
protected void onStop() {
super.onStop();
}

private void copy(Object src) {
try {
Logger.log("Copying data from master Activity!");
Field[] fs = src.getClass().getDeclaredFields();
for (Field f : fs) {
f.setAccessible(true);
f.set(this, f.get(src));
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}

public boolean onTouchEvent(MotionEvent me) {

if (me.getAction() == MotionEvent.ACTION_DOWN) {

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

int y =metrics.heightPixels;
int x =metrics.widthPixels;
Context context = getApplicationContext();
CharSequence text = "Test" + x + y + cam.getYAxis();;
int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, text, duration);
toast.show();

controlx = (int)me.getX(); 
    controly = (int)me.getY();
   
   // if (x1 <= 20){
   
   // }
   // SimpleVector campos;
    //campos = cam.getPosition();
   
   
    //SimpleVector camlook;
   // camlook = cam.getDirection();
    //cube.translate(camlook);
//the difference between out position and where we are looking

   
    // move thing and set camera to it again
   
 
//cube.translate(movething);
 

xpos = me.getX();
ypos = me.getY();
doAnim();

return true;
}

if (me.getAction() == MotionEvent.ACTION_UP) {

controlx = 0;
controly = 0;
xpos = -1;
ypos = -1;
touchTurn = 0;
touchTurnUp = 0;
//dfoAnim();
//cam.rotateAxis(cam.getXAxis(), .1f);
return true;
}

if (me.getAction() == MotionEvent.ACTION_MOVE) {
float xd = me.getX() - xpos;
float yd = me.getY() - ypos;
int xx = (int)me.getX(); 
    int yy = (int)me.getY();
xpos = me.getX();
ypos = me.getY();

touchTurn = xd / -100f;
touchTurnUp = yd / -100f;
if (xx > controlx){
cam.rotateAxis(cam.getYAxis(), +.025f);
}
if (xx < controlx){
cam.rotateAxis(cam.getYAxis(), -.025f);
}
//if ((cam.getXAxis().y > 0 && 170 < Math.PI / 4.2) || (cam.getXAxis().y < 0 && 170 > -Math.PI / 4.2)) {

if (yy > controly && ylimiter > -25){
cam.rotateX(-.025f);
ylimiter --;
}
if (yy < controly && ylimiter < 25){
cam.rotateX(.025f);
ylimiter ++;
}

if (xx > controlx && yy > controly){
cam.rotateAxis(cam.getYAxis(), +.025f);
if (ylimiter > -25){
cam.rotateX(-.025f);
ylimiter --;}

}
if (xx < controlx && yy < controly){
cam.rotateAxis(cam.getYAxis(), -.025f);
if (ylimiter <= 25){
cam.rotateX(+.025f);
ylimiter ++;
}

}
//}




return true;
}

try {
Thread.sleep(15);
} catch (Exception e) {
// No need for this...
}

return super.onTouchEvent(me);
}

protected boolean isFullscreenOpaque() {
return true;
}

class MyRenderer implements GLSurfaceView.Renderer {

private long time = System.currentTimeMillis();

public MyRenderer() {
}

public void onSurfaceChanged(GL10 gl, int w, int h) {
if (fb != null) {
fb.dispose();
}
fb = new FrameBuffer(gl, w, h);

if (master == null) {

world = new World();
world2 = new World();
Texture texture = new Texture(BitmapHelper.rescale(BitmapHelper.convert(getResources().getDrawable(R.drawable.gun)), 128, 128));
TextureManager.getInstance().addTexture("texture", texture);

//fb.blit(texture, 0, 0, 0, 0, 64, 64, false);

world.setAmbientLight(20, 20, 20);
world2.setAmbientLight(20, 20, 20);
sun = new Light(world);
sun2 = new Light(world2);
sun.setIntensity(250, 250, 250);
sun2.setIntensity(250, 250, 250);
// Create a texture out of the icon...:-)


//fb.blit(texture, 10, 10, 10,10, 100, 100, false);
//fb.display();
//cube = Primitives.getCube(.2f);
//cube.calcTextureWrapSpherical();
//cube.setTexture("texture");

//cube.strip();
//cube.build();
try {
thing = loadModel(1, objectscale);
pistola = loadModel(4, 2f);
testplane = loadModel(5, 10f);


//pistola.build();
Animation anim = new Animation(3);
anim.createSubSequence("walk");

anim.addKeyFrame(loadModel(2, objectscale).getMesh());
derp =1;
anim.addKeyFrame(loadModel(3, objectscale).getMesh());


//anim.addKeyFrame(loadModel(2, 1f).getMesh());
thing.setAnimationSequence(anim);
thing.calcTextureWrapSpherical();
thing.setTexture("texture");

pistola.calcTextureWrapSpherical();
pistola.setTexture("texture");
testplane.calcTextureWrapSpherical();
testplane.setTexture("texture");
    SimpleVector movething = new SimpleVector();
movething.x = 2f;
pistola.translate(movething);
SimpleVector moveplane = new SimpleVector();
moveplane.y = 4f;
testplane.translate(moveplane);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}





     


world.addObject(thing);
//world2.addObject(cube);
world2.addObject(pistola);
world.addObject(testplane);
cam = world.getCamera();
cam2 = world2.getCamera();
//Camera cam = world.getCamera();

cam.moveCamera(Camera.CAMERA_MOVEOUT, 10);
cam2.moveCamera(Camera.CAMERA_MOVEOUT, 5);
cam.moveCamera(Camera.CAMERA_MOVEUP, 3);
//cube.align(cam);
//cam.lookAt(thing.getTransformedCenter());


cam.lookAt(thing.getTransformedCenter());
//cam2.lookAt(pistola.getTransformedCenter());
SimpleVector sv = new SimpleVector();
sv.set(thing.getTransformedCenter());
sv.y -= 100;
sv.z -= 100;
sun.setPosition(sv);
sun2.setPosition(sv);
MemoryHelper.compact();

if (master == null) {
Logger.log("Saving master Activity!");
master = HelloWorld.this;
}
}
}

public void onSurfaceCreated(GL10 gl, EGLConfig config) {
}

public void onDrawFrame(GL10 gl) {

if (touchTurn != 0) {
thing.rotateY(touchTurn);
touchTurn = 0;

}

if (touchTurnUp != 0) {
thing.rotateX(touchTurnUp);
touchTurnUp = 0;
}

fb.clear(back);
world.renderScene(fb);
world2.renderScene(fb);
world2.draw(fb);
world.draw(fb);


fb.display();

if (System.currentTimeMillis() - time >= 1000) {
Logger.log(fps + "fps");
fps = 0;
time = System.currentTimeMillis();
}
fps++;
}
}
private Object3D loadModel(int fileid, float scale) throws FileNotFoundException {
    //InputStream is = getResources().openRawResource(R.raw.animated); // copy this and external ref
    InputStream is = getKeyFrameResource(fileid);

        Object3D[] model = Loader.load3DS(is,scale);
        Object3D o3d = new Object3D(0);
        Object3D temp = null;
        for (int i = 0; i < model.length; i++) {
            temp = model[i];
            temp.setCenter(SimpleVector.ORIGIN);
            temp.rotateX((float)( -.5*Math.PI));
            temp.rotateMesh();
            temp.setRotationMatrix(new Matrix());
            o3d = Object3D.mergeObjects(o3d, temp);
           
            o3d.calcBoundingBox();
            o3d.calcNormals();
            if (derp == 1){
            o3d.build();
            }
           
        }
        return o3d;
    }



public void doAnim() {
        ind += 0.1f;
        if (ind >= 1f) {
                ind = 0;
        }
       
        Logger.log("frame: "+ind);
        thing.animate(ind, thing.getAnimationSequence().getSequence("walk"));
       
}
public InputStream getKeyFrameResource(int fileid){
InputStream dl = null;

switch (fileid) {
            case 1: 
            dl = getResources().openRawResource(R.raw.animationnew1);
                     
            break;
            case 2: 
            dl = getResources().openRawResource(R.raw.animationnew);
            break;
            case 3: 
            dl = getResources().openRawResource(R.raw.animationnew1);
            break;
            case 4: 
            dl = getResources().openRawResource(R.raw.pistol2);
            break;
            case 5: 
            dl = getResources().openRawResource(R.raw.plane);
            break;
               
       
       
    }
return dl;
}
}
#5
Support / Drawing of controls.
January 08, 2013, 03:24:42 PM
I've managed to implement some basic controls by monitoring touch events for my FPS. As for drawing the joy sticks on screen, would you guys recommend drawing some basic shapes that are always in front of the camera? Or is there a better way to do it.
#6
Support / Re: LoadModel jPCT-AE.
January 06, 2013, 11:55:05 AM
package com.threed.jpct.example;

import java.io.*;

import java.lang.reflect.Field;
import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.egl.EGLDisplay;
import javax.microedition.khronos.opengles.GL10;

import com.threed.jpct.*;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.view.MotionEvent;
import android.content.res.AssetManager;
import android.content.res.Resources;
import android.opengl.GLSurfaceView.EGLConfigChooser;
import android.opengl.GLSurfaceView.Renderer;
import android.util.Log;

public class HelloWorld extends Activity {
    private String thingName = ("res/box.3ds");
    private int thingScale = 1;//end
private static HelloWorld master = null;

private GLSurfaceView mGLView;
private MyRenderer renderer = null;
private FrameBuffer buffer = null;

private World world = null;
private RGBColor back = new RGBColor(50, 50, 100);

private float touchTurn = 0;
private float touchTurnUp = 0;

private float xpos = -1;
private float ypos = -1;

private Object3D thing = null;
private int fps = 0;

private Light sun = null;
private Camera cam = null;

AssetManager assMan;
InputStream is;
@SuppressLint("NewApi")
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
mGLView = new GLSurfaceView(getApplication());
renderer = new MyRenderer();
mGLView.setRenderer(renderer);
setContentView(mGLView);
}

@SuppressLint("NewApi")
@Override
protected void onPause() {
super.onPause();
mGLView.onPause();
}

@SuppressLint("NewApi")
@Override
protected void onResume() {
super.onResume();
mGLView.onResume();
}

protected void onStop() {
super.onStop();
}

public boolean onTouchEvent(MotionEvent me) {

if (me.getAction() == MotionEvent.ACTION_DOWN) {
xpos = me.getX();
ypos = me.getY();
return true;
}

if (me.getAction() == MotionEvent.ACTION_UP) {
xpos = -1;
ypos = -1;
touchTurn = 0;
touchTurnUp = 0;
return true;
}

if (me.getAction() == MotionEvent.ACTION_MOVE) {
float xd = me.getX() - xpos;
float yd = me.getY() - ypos;

xpos = me.getX();
ypos = me.getY();

touchTurn = xd / -100f;
touchTurnUp = yd / -100f;
return true;
}

try {
Thread.sleep(15);
} catch (Exception e) {
// No need for this...
}

return super.onTouchEvent(me);
}

protected boolean isFullscreenOpaque() {
return true;
}

class MyRenderer implements GLSurfaceView.Renderer {

private long time = System.currentTimeMillis();
private boolean stop = false;

public MyRenderer() {
}

public void stop() {
stop = true;
}

public void onSurfaceChanged(GL10 gl, int w, int h) {
if (buffer != null) {
buffer.dispose();
}
buffer = new FrameBuffer(gl, w, h);

if (master == null) {

world = new World();
        world.setAmbientLight(150, 150, 150);

sun = new Light(world);
sun.setIntensity(250, 250, 250);

try {
thing = loadModel(thingName, thingScale);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
        thing.build();

world.addObject(thing);

cam = world.getCamera();
cam.moveCamera(Camera.CAMERA_MOVEOUT, 100);
cam.lookAt(thing.getTransformedCenter());

SimpleVector sv = new SimpleVector();
sv.set(thing.getTransformedCenter());
sv.y -= 100;
sv.z -= 100;
sun.setPosition(sv);
//MemoryHelper.compact();

if (master == null) {
Logger.log("Saving master Activity!");
master = HelloWorld.this;
}
}
}

public void onSurfaceCreated(GL10 gl, EGLConfig config) {
}

public void onDrawFrame(GL10 gl) {

try {
if (!stop) {
if (touchTurn != 0) {
thing.rotateY(touchTurn);
touchTurn = 0;
}

if (touchTurnUp != 0) {
thing.rotateX(touchTurnUp);
touchTurnUp = 0;
}

buffer.clear(back);
world.renderScene(buffer);
world.draw(buffer);
buffer.display();

if (System.currentTimeMillis() - time >= 1000) {
Logger.log(fps + "fps");
fps = 0;
time = System.currentTimeMillis();
}
fps++;
} else {
if (buffer != null) {
buffer.dispose();
buffer = null;
}
}
} catch (Exception e) {
Logger.log(e, Logger.MESSAGE);
}
}

    private Object3D loadModel(String filename, float scale) throws FileNotFoundException {
    InputStream is = getResources().openRawResource(R.raw.box);

        Object3D[] model = Loader.load3DS(is,scale);
        Object3D o3d = new Object3D(0);
        Object3D temp = null;
        for (int i = 0; i < model.length; i++) {
            temp = model[i];
            temp.setCenter(SimpleVector.ORIGIN);
            temp.rotateX((float)( -.5*Math.PI));
            temp.rotateMesh();
            temp.setRotationMatrix(new Matrix());
            o3d = Object3D.mergeObjects(o3d, temp);
            o3d.build();
        }
        return o3d;
    }
}
}


Never mind i was able to get it lol. Thank you so much for actually replying to the post. The code above successfully loads a .3DS file into android
#7
Support / Re: LoadModel jPCT-AE.
January 06, 2013, 11:24:33 AM
package com.threed.jpct.example;

import java.io.*;

import java.lang.reflect.Field;
import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.egl.EGLDisplay;
import javax.microedition.khronos.opengles.GL10;

import com.threed.jpct.*;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.view.MotionEvent;
import android.content.res.AssetManager;
import android.content.res.Resources;
import android.opengl.GLSurfaceView.EGLConfigChooser;
import android.opengl.GLSurfaceView.Renderer;
import android.util.Log;

public class HelloWorld extends Activity {
    private String thingName = (":Raw/box");
    private int thingScale = 1;//end
private static HelloWorld master = null;

private GLSurfaceView mGLView;
private MyRenderer renderer = null;
private FrameBuffer buffer = null;

private World world = null;
private RGBColor back = new RGBColor(50, 50, 100);

private float touchTurn = 0;
private float touchTurnUp = 0;

private float xpos = -1;
private float ypos = -1;

private Object3D thing = null;
private int fps = 0;

private Light sun = null;
private Camera cam = null;

AssetManager assMan;
InputStream is;
@SuppressLint("NewApi")
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
mGLView = new GLSurfaceView(getApplication());
renderer = new MyRenderer();
mGLView.setRenderer(renderer);
setContentView(mGLView);
}

@SuppressLint("NewApi")
@Override
protected void onPause() {
super.onPause();
mGLView.onPause();
}

@SuppressLint("NewApi")
@Override
protected void onResume() {
super.onResume();
mGLView.onResume();
}

protected void onStop() {
super.onStop();
}

public boolean onTouchEvent(MotionEvent me) {

if (me.getAction() == MotionEvent.ACTION_DOWN) {
xpos = me.getX();
ypos = me.getY();
return true;
}

if (me.getAction() == MotionEvent.ACTION_UP) {
xpos = -1;
ypos = -1;
touchTurn = 0;
touchTurnUp = 0;
return true;
}

if (me.getAction() == MotionEvent.ACTION_MOVE) {
float xd = me.getX() - xpos;
float yd = me.getY() - ypos;

xpos = me.getX();
ypos = me.getY();

touchTurn = xd / -100f;
touchTurnUp = yd / -100f;
return true;
}

try {
Thread.sleep(15);
} catch (Exception e) {
// No need for this...
}

return super.onTouchEvent(me);
}

protected boolean isFullscreenOpaque() {
return true;
}

class MyRenderer implements GLSurfaceView.Renderer {

private long time = System.currentTimeMillis();
private boolean stop = false;

public MyRenderer() {
}

public void stop() {
stop = true;
}

public void onSurfaceChanged(GL10 gl, int w, int h) {
if (buffer != null) {
buffer.dispose();
}
buffer = new FrameBuffer(gl, w, h);

if (master == null) {

world = new World();
        world.setAmbientLight(150, 150, 150);

sun = new Light(world);
sun.setIntensity(250, 250, 250);

thing = loadModel(thingName, thingScale);
        thing.build();

world.addObject(thing);

cam = world.getCamera();
cam.moveCamera(Camera.CAMERA_MOVEOUT, 100);
cam.lookAt(thing.getTransformedCenter());

SimpleVector sv = new SimpleVector();
sv.set(thing.getTransformedCenter());
sv.y -= 100;
sv.z -= 100;
sun.setPosition(sv);
//MemoryHelper.compact();

if (master == null) {
Logger.log("Saving master Activity!");
master = HelloWorld.this;
}
}
}

public void onSurfaceCreated(GL10 gl, EGLConfig config) {
}

public void onDrawFrame(GL10 gl) {

try {
if (!stop) {
if (touchTurn != 0) {
thing.rotateY(touchTurn);
touchTurn = 0;
}

if (touchTurnUp != 0) {
thing.rotateX(touchTurnUp);
touchTurnUp = 0;
}

buffer.clear(back);
world.renderScene(buffer);
world.draw(buffer);
buffer.display();

if (System.currentTimeMillis() - time >= 1000) {
Logger.log(fps + "fps");
fps = 0;
time = System.currentTimeMillis();
}
fps++;
} else {
if (buffer != null) {
buffer.dispose();
buffer = null;
}
}
} catch (Exception e) {
Logger.log(e, Logger.MESSAGE);
}
}
public InputStream OMGSHIT(){
try {
        InputStream isl = new FileInputStream(thingName);

        //is.close();
    } catch (FileNotFoundException e) {
        System.exit(0);
        e.printStackTrace();
    } catch (IOException e) {
   
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
return is;

}
    private Object3D loadModel(String filename, float scale) {
assMan = getResources().getAssets();
is= new InputStream() {

@Override
public int read() throws IOException {
return 0;
}
};
        Object3D[] model = Loader.load3DS(OMGSHIT(),scale);
        Object3D o3d = new Object3D(0);
        Object3D temp = null;
        for (int i = 0; i < model.length; i++) {
            temp = model[i];
            temp.setCenter(SimpleVector.ORIGIN);
            temp.rotateX((float)( -.5*Math.PI));
            temp.rotateMesh();
            temp.setRotationMatrix(new Matrix());
            o3d = Object3D.mergeObjects(o3d, temp);
            o3d.build();
        }
        return o3d;
    }
}
}




This is where I am at. I put a try/catch on the fileinputstream that feeds into loader3ds. Ive tried every patch/filename i could think of but it always returns filenotfound.
#8
Support / Re: LoadModel jPCT-AE.
January 06, 2013, 10:05:35 AM
fd
#9
Support / LoadModel jPCT-AE.
January 06, 2013, 08:45:53 AM
Hello to all here. I'm new to jPCT. I have thus far successfully ran the hello world with the rotating box and I have figured out how to move the camera plus how to move the primitive objects that come with the program. I am trying to take the next step by loading a .3ds file into my project. By setting up the load-model method with a file-stream linked to my .3ds file my program always crashes. Is there a simple way on jPCT-AE to load a 3d model into the world?