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.


Topics - shadow

Pages: [1]
1
German corner / Ein paar Fragen zu Texturen
« on: July 25, 2011, 12:48:59 am »
Hi,

Hintergrund: Ich möchte in mein Level ein paar Bäume von hier reinladen:
http://www.reinerstilesets.de/3d-grafiken/3d-plants/

Den ersten Baum lade ich als OBJ mit Loader.loadOBJ(). Es liegen zwei Textur-Bilder bei, mit denen ich aber vorerst nichts mache. Die Konsolenausgabe verrät mir folgendes:

Code: [Select]
Texture named bushtwig4v2.tga added to TextureManager!
Texture named ahernbark.bmp added to TextureManager!

Aber Texturen werden auf dem Objekt nicht angezeigt. Deshalb lade ich vorher noch die zwei Texturen, und zwar so:

Code: [Select]
TextureManager.getInstance().addTexture("bushtwig4v2.tga", ....);
TextureManager.getInstance().addTexture("ahernbark.bmp", ....);

Allerdings funktioniert das Ganze nur, wenn ich das TGA-Bild in ein PNG umwandle, und das BMP in ein JPG.

Frage 1: Ist das normal, dass BMP und TGA nicht geladen werden kann?
Frage 2: Hätte ich ohne die Konsolenausgaben herausfinden können, wie ich die Texture laden muss? Also unter welchem Namen?
Frage 3: Warum muss ich hier die Texturen nicht mehr mit object3d.setTexture() anhängen

Dann will ich einen zweiten Baum laden. Dieser liegt im MD2-Format vor. Diesen lade ich mit Loader.loadMD2(); Hier gibt es keine entsprechenden Konsolenausgaben, auch hier liegen wieder BMP und TGA als Textur dem Model bei. Ich schaffe es aber nicht, auf die gleiche Weise die Texture auf das Objekt zu bringen...

Danke für die Unterstützung!

2
German corner / AWTGLRenderer
« on: January 22, 2011, 04:57:28 pm »
Und gleich noch eine Frage :)

Über den AWTGLRenderer hab ich ganz wenig Infos gefunden, allerdings glaube ich, dass ich ihn in meinem Projekt brauche.
Hier steht, dass ich damit AWT und Swing benutzen kann: http://www.jpct.net/wiki/index.php/The_different_renderers
Auch beispielsweise die AWT Mouse- und KeyListener?

Hier steht, dass der OpenGL-Renderer sein eigenes Fenster mitbringt:
http://www.java-forum.org/spiele-multimedia-programmierung/68739-2-fenster-jpct.html
Ist das beim AWTGLRenderer auch so, oder muss ich den AWT Frame selbst erzeugen und benutze dann bei frameBuffer.display() das Graphics von meinem Frame.

Und wie initialisiert man den AWTGLRenderer?
In der JavaDoc hab ich im FrameBuffer die Methode enableGLCanvasRenderer() gefunden. Muss ich die zusammen mit enableRenderer(IRenderer.RENDERER_OPENGL, IRenderer.MODE_OPENGL) benutzen oder nur die erste Methode?
Wenn ich nur die erste Methode benutze, dann sehe ich nur ein leeres Frame....

In diesem Thread lese ich, dass man enableGLCanvasRenderer() auch mit Parameter aufrufen kann:
http://www.jpct.net/forum2/index.php/topic,282.0.html
Aber das geht wohl nicht mehr?

Würdest Du mir prinzipiell zu AWTGLRenderer raten, oder handle ich mir damit Nachteile ein?


3
German corner / Car-Example
« on: January 22, 2011, 03:50:46 am »
Hi,

ich hab auf Basis des Car-Examples ein Spiel geschrieben und wollte nun eine Änderung vornehmen. Und zwar, dass das Spiel sofort mit Hardware-Rendering startet und nicht wie im Original mit Software-Rendering...
Dafür sind jetzt so wie ich das im Beispiel sehe, einige Dinge zu tun bzw. umzustellen.

Ich entnehme der Methode switchOptions() was ich im Rest des Codes ändern muss:

Code: [Select]
    /**
     * This is for switching settings. Currently, only switching from OpenGL to software and
     * back is supported here. This is done to avoid switching modes while polling the keyboard,
     * because it may have undesired side-effects otherwise.
     */
    private void switchOptions() {
        switch (switchMode) {
            case (SWITCH_RENDERER): {
                isIdle = true;
                if (buffer.usesRenderer(IRenderer.RENDERER_OPENGL)) {
                    keyMapper.destroy();
                    buffer.disableRenderer(IRenderer.RENDERER_OPENGL);
                    buffer.enableRenderer(IRenderer.RENDERER_SOFTWARE, IRenderer.MODE_OPENGL);
                    openGL = false;
                    if (fullscreen) {
                        device.setFullScreenWindow(null);
                    }
                    frame.hide();
                    frame.dispose();
                    initializeFrame();
                } else {
                    frame.hide();
                    buffer.enableRenderer(IRenderer.RENDERER_OPENGL, IRenderer.MODE_OPENGL);
                    buffer.disableRenderer(IRenderer.RENDERER_SOFTWARE);
                    openGL = true;
                    keyMapper.destroy();
                    keyMapper = new KeyMapper();
                }
                isIdle = false;
                break;
            }
        }
        switchMode = 0;
    }

Als erstes stelle in den Renderer um. An dieser Stelle frage ich mich schon, warum im einen Fall erst disabled und dann enabled wird, im anderen Fall andersherum? Gibts dafür einen bestimmten Grund?

Danach setzte ich den Default-Wert von "private boolean openGL" auf true.

Jetzt startet das Programm mit Hardware-Rendering. Allerdings ist ein zweites Fenster sichtbar. Nur, wenn das aktiv ist, registriert das Programm Tastendrücke. Das umzustellen ist mir nicht gelungen. Wahrscheinlich auch schon deshalb, weil ich "keyMapper.destroy();" nicht verstehe...

Über etwas Licht ins Dunkel würde ich mich seehr freuen.

Vielen Dank!
shadow

4
German corner / Unterschied zwischen SimpleVector normalize() und add()
« on: November 26, 2010, 11:53:00 am »
Hallo,

eine Frage bzw. Verständnisproblem:

SimpleVector.normalize() wirkt nicht auf das SimpleVector-Objekt selbst, sondern gibt den modifizierten Vector zurück.
Allerdings SimpleVector.add() gibt void zurück, wirkt also vermutlich direkt auf das SimpleVector-Objekt.

Ist das so richtig? Gibt es einen Grund warum das so ist? Ich finde, es gibt durchaus Anwendungsfälle, wo man es umgekehrt haben möchte, also dass normalize() auf das Objekt wirkt, oder add() nur zurückgegeben wird. Am coolsten wäre natürlich beides:

SimpleVector normalize();
void normalizeThis();

SimpleVector add(SimpleVector vec);
void addToThis(SimpleVector vec);


MfG!
Stefan

5
Support / Blender animation
« on: October 30, 2010, 03:09:04 am »
I've searched a lot of forum threads now and decided to open this topic to ask it directly:

What are my possiblities to get a textured and animated blender model in JPCT, best with minimal effort?
Actually I do not get it running at all... but I see three ways and try to find out which one is working and which one could be the best and and maybe there are even more ways?

* In another thread I try to get it running with "Bones", skeletal animation for JPCT. There are two "sub possibilities" I see
   - Ogre MESH format, but there seems to be a bug in the Blender Ogre exporter
   - Collada, there I got Exceptions with my own exported blender model while using the ColladaSample from the bones  samples

* MD2 Keyframe animation. Here there is "JPCT advanced example", where a snork runs around, looks good. Can such an MD2 file created with blender? If yes, is there any further information how this can be done?

* Keyframe animation via JPCT Animation as it is described here http://www.jpct.net/wiki/index.php/Loading_3ds_Keyframes_from_Blender
   - this seems to be a stable option, but in my opinion it is a bit complicated. Or am I too demanding?

Pages: [1]