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 - cocojack

#1
das mit der threadsicherheit habe ich auch schon gemerkt, wenn man pech hat bekommt man null-pointer exceptions bei z.b. wenn ein object3d gerendert wird, in einem anderen thread aber grade bewegt wird.

ok das mit den ticks hört sich ganz gut an, ich werd mal sehen ob ich das umsetzen kann.
#2
Schönen guten Abend,

ich bastele momentan schön fleißig an meiner App für mein Android-Tablet.

Mir ist leider (oder zum Glück) ein Problem aufgefallen.

In den Beispielen wie z.b. das Car-Example sind alle Bewegungen so wie die Kollisionsberechnung im On-Draw Frame.
Das Problem dabei ist, dass das die Frame-Rate extrem einbrechen lässt wenn ich das dort machen lasse. Also habe ich das ganze in einen Thread ausgelagert, welcher dann die Bewegung und Kollisionsberechnung ausführt.

So wird dann der nächste Punkt des Objekts berechnet, und dann im on draw Frame verschoben.

Problem ist dabei nur dass die Bewegung dann stark fps-abhängig ist.

Mir fällt momentan leider kein Konzept ein wie ich das vermeide.

Kann mir da jemand weiterhelfen?
#3
Gibt es ne Möglichkeit das während der Laufzeit zu generieren? Sprich ne Möglichkeit das Terrain Objekt nach anderen Objekten Scannen?

Die einzige Möglichkeit die mir einfallen würde ist, mit nem kleinen Objekt durch die Karte zu fahren und die Collision-Events abzufangen...
#4
Also mit Uniform kann ich dem Shader Werte übergeben.

Was ich dann bräuchte wäre die "uniform mat4 textureMatrix;"

In der Theorie müsste ich es ja dann so Berechnen:
Wenn das Terrain-Pixel in einer Linie bis zum Spieler-Objekt verbindbar ist, ohne dass es durch ein anderes Objekt unterbrochen wird hat es die Original-Farbe, sonst wird es Grau.
Das anzeigen der anderen Objekte auf den Ausgegrauten Feldern müssten auf Unsichtbar gesetzt werden.

Die Sachen die ich noch nicht ganz verstehe sind folgende:
-Wie bekomme ich die Aussenkoordinaten meiner Objekt3D
-Wie finde ich heraus, dass etwas auf dieser Sichtlinie Liegt
#5
JPCT-AE und ich entwickle für mein Nexus 7
#6
Ich habe jetzt etwas nachgeschaut wie das mit den Shadern funktioniert.

Also ich brauche dann eigentlich "nur" den Fragment Shader zu basteln, da ich ja keine Geometrie manipulieren möchte.

Für meinen Nebel bräuchte ich also die Position des Spielers auf der Karte, die Anderer Objekte auf der Karte und die Karte Selber.

Aber wenn ich einen Shader auf ein Objekt anwende bekomme ich ja nur Daten die mit ihm selber zu tun haben, also eigentlich nicht genug.

Sind das die einzigen Wege wie ich Daten in meinen Shader bekomme?
http://www.jpct.net/wiki/index.php/OpenGL_ES_2.0_support

und wie sage ich dem Objekt was wo wie bearbeitet wird?
#7
Also eigentlich relativ Simpel, ich habe Mehrere Object3D die die Sicht versperren sollen.
(Eigentlich ist es in dem Spiel League of Legends sehr gut umgesetzt, soetwas in der Art hätte ich auch gerne)


[attachment deleted by admin]
#8
German corner / Fog of War, mit oder ohne Shader
May 07, 2013, 11:14:14 PM
Da ich jetzt meine ersten Gebäude auf meiner Karte habe und meine Einheit schon bewegen kann ist mir eingefallen was das ganze so richtig cool machen würde.

Da mein Spiel aus Vogelperspektive gespielt wird kann man über die gesamte Karte sehen, also auch um Ecken. Das ist aber irgendwie doof.
Jedoch kann ich auch nicht einfach meine "Sonne" entfernen, da sonst alles Dunkel ist. (also Sonne entfernen und auf den Kopf meiner Einheit setzten).

Und bislang alle Shader Beispiele die ich gefunden haben waren für mich total unverständlich :(.

Gibt es eine Möglichkeit alles außerhalb der Line of Sight auszugrauen, und das am besten noch ohne Shader,
oder anders: ein Deutsches Tutorial zu Shadern für die JPCT-AE Engin.
(ich habe das Gefühl dass es den Schwierigkeitsgrad für mich ungemein steigert, mich in ein so komplexes Thema auf Englisch einzulesen)
#9
German corner / Re: Textur mehrfach auf Objekt
May 03, 2013, 11:09:32 PM
Wie es scheint habe ich einen Weg gefunden, jedoch hat es nichts mit JPCT zu tun.

Eigentlich ist es recht einfach:

1. Laden mit Blender
2. Alle auswählen und mit strg+j Mergen
3. UV-Mapping -> Unwrap
4. Export als Obj

-> fertig

um die Von dem "GM Terrain Editor 2" ausgegebenen Textur-Datein zu mergen habe ich mir eine kleine Java-Applikation (für den PC) geschrieben.

Falls das jemandem hilft, hier ist der Code:

package Main;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class Main {

public static void main(String args[]) throws IOException{

if(args.length == 0) {
System.out.println("Bitte Pfad zu den Datein angeben!");
return;
}




int zeilen =8;
int spalten = 8;


int hoehe;
int breite;

int type; 

File[][] imgFiles = new File[zeilen][spalten];
for (int s = 0; s < spalten; s++) { 
for(int z = 0; z < zeilen; z++)
{
String debug = args[0] + z + "_" + s + ".png";
imgFiles[z][s] = new File(debug);

if(imgFiles[z][s] == null){
System.out.println("File not found");
}else{
System.out.println(debug + " loaded");
}
}
    }

BufferedImage[][] buffImages = new BufferedImage[zeilen][spalten]; 

for (int s = 0; s < spalten; s++) { 
for(int z = 0; z < zeilen; z++)
{
buffImages[z][s] = ImageIO.read(imgFiles[s][z]);
}
    }

type = buffImages[0][0].getType(); 
breite = buffImages[0][0].getWidth();
hoehe = buffImages[0][0].getHeight();

BufferedImage finalImg = new BufferedImage(breite*spalten, hoehe*zeilen, type);

for (int s = 0; s < spalten; s++) { 
for(int z = 0; z < zeilen; z++)
{
finalImg.createGraphics().drawImage(buffImages[z][s], breite * s, hoehe * z, null);
}
    }

        System.out.println("Füge Bild zusammen..."); 
        ImageIO.write(finalImg, "png", new File("E:/pictures_map/final.png"));
        System.out.println("Fertig"); 
}

}
#10
German corner / Re: Hello World-AE
May 03, 2013, 09:12:41 PM
Du kannst dir auf der Seite:

http://thefree3dmodels.com

ein Model laden, ich habe es z.b. mal mit diesem Panzer ausprobiert:

http://thefree3dmodels.com/stuff/vehicles/uk_fv510_quot_warrior_2_quot_tank/13-1-0-4028

Vorgehensweise ist dabei relativ einfach:

lade es mit jBrush, und serialisiere es,
lade es mit den funktionen:

this.model = PropLoader.modelLoader(context.getResources().openRawResource(R.raw.fv510));
this.texture = PropLoader.textureLoader(context.getResources().getDrawable(R.drawable.fv510));

die Textur weißt du so zu:

Texture tx = PropLoader.textureLoader(context.getResources().getDrawable(R.drawable.fv510));
TextureManager.getInstance().addTexture("fv510" , tx);
this.model.setTexture("fv510");


ich hoffe es hilft dir

** edit.. ich hab vergessen dass PropLoader eine Klasse von mir ist :D
#11
German corner / Re: Textur mehrfach auf Objekt
May 03, 2013, 09:09:17 PM
Leider kann ich die Methode nicht finden.

Aber gibt es noch andere Tools um ein Gelände zu erstellen, welche vielleicht einfacher in die Engin integrierbar sind?
#12
German corner / Textur mehrfach auf Objekt
May 02, 2013, 11:17:52 PM
Hallo, ich bin relativ neu in JPCT-AE aber ein fortgeschrittener Java-Programmierer.

Da ich ziemlich untertalentiert bin 3D Objekte zu Designen habe ich einige Stunden nach Hilfsmitteln zur Terrain-Generierung gesucht.
Ich habe mich letzten Endes für "GM Terrain Editor 2" entschieden.

Problem bei diesem Editor ist jedoch, dass es in einem Obj mehrere Teile der Karte als, ich nenne es einfach mal Fragment, speichert.

Das ist dann das Ergebnis, die Colormap wird mehrfach auf das Object3D geladen.


Wie kann ich erzwingen, dass er die Textur für das gesamte Object3D lädt?

mfg Coco
#13
Support / Re: Can't load serialized object Android
March 24, 2013, 01:07:09 PM
It works now, may anyone can explain what is the difference between those:

terrain = Loader.loadSerializedObject(masterContext.getResources().openRawResource(R.raw.dassault_mirage));
terrain.setTexture("texture");

forgot to mention that I use this document to get in jpct-ae : http://www.jpct.net/forum2/index.php?topic=2667.0
#14
Support / Re: Can't load serialized object Android
March 24, 2013, 12:12:15 PM
Attributes

private Object3D airplane = null;




@Override
public void onSurfaceChanged(GL10 gl, int width, int height)
{
Logger.log("onSurfaceChanged");
Logger.setLogLevel(Logger.LL_DEBUG);

if (fb != null) fb.dispose();

fb = new FrameBuffer(gl, width, height);

if (masterActivity == null)
{
world = new World();
world.setAmbientLight(120, 120, 120);
sun = new Light(world);
sun.setIntensity(250, 250, 250);
SimpleVector sv = new SimpleVector();
sv.set(0,-100,-100);
sun.setPosition(sv);

Texture texture = new Texture( BitmapHelper.rescale(BitmapHelper.convert(masterContext.getResources().getDrawable(R.drawable.dassault_mirage)), 64, 64));
TextureManager.getInstance().addTexture("texture", texture);

ZipInputStream serStream = new ZipInputStream(masterContext.getResources().openRawResource(R.raw.dassault_mirage));
Logger.log("loaded serStream");
try{
serStream.getNextEntry();
Logger.log("loaded next entry");
}
catch(IOException e)
{
Logger.log("io-Exeption");
throw new RuntimeException(e);
}
Logger.log("loading serialized obj");
airplane = Loader.loadSerializedObject(serStream);
Logger.log("setting texture");
airplane.setTexture("texture");



world.addObject(airplane);
Camera cam = world.getCamera();
cam.moveCamera(Camera.CAMERA_MOVEOUT, 50);
cam.lookAt(airplane.getTransformedCenter());
sv.set(airplane.getTransformedCenter());
sv.y -= 100;
sv.z -= 100;
sun.setPosition(sv);
MemoryHelper.compact();
}
}


content of serStream :

serStream ZipInputStream  (id=830038260848)
buf (id=830038130704)
charBuf (id=830038138048)
closed false
crc CRC32  (id=830038130184)
currentEntry null
entriesEnd false
entryIn 0
eof false
hasDD false
hdrBuf (id=830038131240)
in PushbackInputStream  (id=830038087616)
inf Inflater  (id=830038131336)
inRead 0
lastRead 0
len 0
nameBuf (id=830038136280)
nativeEndBufSize 0

debug output:

03-24 12:53:29.515: E/AndroidRuntime(8727): FATAL EXCEPTION: GLThread 12093
03-24 12:53:29.515: E/AndroidRuntime(8727): java.lang.RuntimeException: [ 1364126009517 ] - ERROR: Can't deserialize object: length=256; regionStart=-1; regionLength=257
03-24 12:53:29.515: E/AndroidRuntime(8727): at com.threed.jpct.Logger.log(Logger.java:189)
03-24 12:53:29.515: E/AndroidRuntime(8727): at com.threed.jpct.DeSerializer.deserialize(DeSerializer.java:244)
03-24 12:53:29.515: E/AndroidRuntime(8727): at com.threed.jpct.Loader.loadSerializedObject(Loader.java:93)
03-24 12:53:29.515: E/AndroidRuntime(8727): at com.securitywarefare.engin.MyRenderer.onSurfaceChanged(MyRenderer.java:101)
03-24 12:53:29.515: E/AndroidRuntime(8727): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1505)
03-24 12:53:29.515: E/AndroidRuntime(8727): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)



could it be that the files doesnt load correctly to my android device?
#15
Support / Can't load serialized object Android
March 24, 2013, 11:49:27 AM
Hello, im working on some tutorials to get into JPCT-AE.
At the moment i'm trying to load a texture of an airplane into my android app.

I've downloaded a model of an airplane and serialized it with jBrush v0.3.


my code:

         ZipInputStream serStream = new ZipInputStream(masterContext.getResources().openRawResource(R.raw.dassault_mirage));
         try{serStream.getNextEntry();}
         catch(IOException e)
         {throw new RuntimeException(e);}
         airplane = Loader.loadSerializedObject(serStream);
         airplane.setTexture("texture");


on start, this code part gets a runtime exception:
java.lang.RuntimeException: [ 1364121233198 ] - ERROR: Can't deserialize object: length=256; regionStart=-1; regionLength=257

at airplane = Loader.loadSerializedObject(serStream);

i dont know what I did wrong this time :(
greezs coco