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

Pages: [1]
1
German corner / Rotation anhand des Bodens
« on: January 02, 2013, 01:19:07 pm »
Hallo,
ich will sowas wie im Car Demo erstellen. Es soll ein Auto anhand des Untergrundes die Neigung anpassen. Da der Untergrund aus unterschiedlichen Objekten besteht kann ich nicht genau das Gleiche machen wie in dem Demo. Soweit so gut habe ich es auch hinbekommen. Leider "zittert" das Auto in manchen Neigungen und ich komme nicht drauf warum.

-Ich habe einen Würfel A der per
Code: [Select]
// finally apply the gravity
SimpleVector t = new SimpleVector(0, .1f, 0);
t = mainPlayerHitboxSphere.checkForCollisionEllipsoid(t, ellipsoidMainKart, 1);
mainPlayerHitboxSphere.translate(t);
über den Untergrund fährt
-Da drauf als Child ist ein genauso großer Würfel B (der in pink) ohne Kollision.
-Ich habe auch noch vier Kugeln als Räder. Über diese berechne ich ähnlich dem Car Beispiel die Neigung. Hier der Code
Code: [Select]
private void rotateKartByWheels(){
SimpleVector t = new SimpleVector(0, .1f, 0);
t = mainPlayerKart.getRightFront().checkForCollisionEllipsoid(t, ellipsoidRightFront, 1);
t.x=0;
t.z=0;
System.out.println(t.y+"|");
mainPlayerKart.getRightFront().translate(t);

t = new SimpleVector(0, .1f, 0);
t = mainPlayerKart.getLeftFront().checkForCollisionEllipsoid(t, ellipsoidRightFront, 1);
t.x=0;
t.z=0;
mainPlayerKart.getLeftFront().translate(t);

t = new SimpleVector(0, .1f, 0);
t = mainPlayerKart.getRightRear().checkForCollisionEllipsoid(t, ellipsoidRightFront, 1);
t.x=0;
t.z=0;
mainPlayerKart.getRightRear().translate(t);

t = new SimpleVector(0, .1f, 0);
t = mainPlayerKart.getLeftRear().checkForCollisionEllipsoid(t, ellipsoidRightFront, 1);
t.x=0;
t.z=0;
mainPlayerKart.getLeftRear().translate(t);



float rightFrontHeight = mainPlayerKart.getRightFront().checkForCollisionEllipsoid(mainPlayerKart.getRightFront().getTranslation(), ellipsoidRightFront, 1).y;
float rightRearHeight = mainPlayerKart.getRightRear().checkForCollisionEllipsoid(mainPlayerKart.getRightRear().getTranslation(), ellipsoidRightFront, 1).y;
float leftFrontHeight = mainPlayerKart.getLeftFront().checkForCollisionEllipsoid(mainPlayerKart.getLeftFront().getTranslation(), ellipsoidRightFront, 1).y;
float leftRearHeight = mainPlayerKart.getLeftRear().checkForCollisionEllipsoid(mainPlayerKart.getLeftRear().getTranslation(), ellipsoidRightFront, 1).y;

if (rightFrontHeight != mainPlayerKart.getRightFront().getTranslation().y){
rightFrontHeight += mainPlayerKart.getRightFront().getTranslation().y;
}

if (leftFrontHeight != mainPlayerKart.getLeftFront().getTranslation().y)
leftFrontHeight += mainPlayerKart.getLeftFront().getTranslation().y;


if (rightRearHeight != mainPlayerKart.getRightRear().getTranslation().y)
rightRearHeight += mainPlayerKart.getRightRear().getTranslation().y;


if (leftRearHeight != mainPlayerKart.getLeftRear().getTranslation().y)
leftRearHeight += mainPlayerKart.getLeftRear().getTranslation().y;

double angleFront=rightFrontHeight-leftFrontHeight;
angleFront=Math.atan(angleFront);

double angleRear=rightRearHeight-leftRearHeight;
angleRear=Math.atan(angleRear);

float rotZ=(float) ((angleFront+angleRear)/2d)*(-1);

double angleLeft=leftFrontHeight-leftRearHeight;
angleLeft=Math.atan(angleLeft);

double angleRight=rightFrontHeight-rightRearHeight;
angleRight=Math.atan(angleRight);
float rotX=(float) ((angleLeft+angleRight)/2d);

// System.out.println(rotX+"|"+rotZ+"|");

mainPlayerKart.getMainPlayerRotationsCube().clearRotation();
mainPlayerKart.getMainPlayerRotationsCube().rotateX(rotX);
mainPlayerKart.getMainPlayerRotationsCube().rotateZ(rotZ);
}


Hier ein Video. Wie man sieht spring der pinke Würfel ab und zu etwas. Warum?

http://www.youtube.com/watch?v=SySTzIRMvbw

2
Ich probiere gerade mit der Geschwindigkeit rum. Leider scheint diese im Vergleich zu DirectX Spielen wesentlich schlechter. Dabei passieren auch komische Sachen die ich nicht verstehe.

Ich habe neben einem Boden mit Textur noch ein paar Kugeln in Blender erstellt. Immer mit Copy Paste.

Code: [Select]
Object 'Sphere.127_jPCT0' created using 960 polygons and 482 vertices.
Processing object from 3DS-file: Sphere.126

Es sind also ca. 130 Objekte. Wenn ich jetzt "object3d.compile();" anwende sieht die Szene so aus. Die Frames brechen von fast 3000 auf fast 300 ein. In einem anderen Thread in diesem Forum habe ich gelesen das Millionen von Polygonen normal wären bei aktuellen Spielen. Davon bin ich hier ja noch weit entfernt.
Ich benutze 4 anti aliasing und Config.glAnisotropy steht auf 2.
Ist das normal oder mache ich etwas falsch?



Ohne "object3d.compile();" kommt es zu Grafikfehlern.


Mit "object3d.compile();" und "mainWorld.buildAllObjects()" vor der render Schleife werden Kugeln irgendwie verdreht. Der Boden aber nicht. Obwohl alles in einem 3DS ist und mit folgendem geladen wird.

Code: [Select]
Object3D[] tests = Loader.load3DS("models/course1.3ds", 1);
for (Object3D object3d : tests) {
object3d.rotateX((float) Math.PI/2*-1);//mit nem halben PI werden die objekte horizontal angezeigt. Man muss aber den negativen Wert nehmen sonst steht alles auf dem kopf
if (object3d.getName().contains("boden"))
object3d.setTexture("boden");
object3d.compile();
curses.addElement(object3d);
}





EDIT:
Fast vergessen. Ich habe ne Gefoce 470 und nen 6 (echte)Core AMD Prozessor.


3
Bugs / Loader.loadOBJ OutOfBounds Exception.
« on: November 10, 2012, 06:30:43 pm »
If i start Blender end export the cube (Blender create one on start) and load this with

Code: [Select]
Object3D[] tests = Loader.loadOBJ("models/course1.obj", "models/course1.mtl", 0.2f);
it works fine.

If i add a second cube and exports this and load this i become:

Code: [Select]
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(Unknown Source)
at com.threed.jpct.Loader.loadOBJ(Unknown Source)
at com.threed.jpct.Loader.loadOBJ(Unknown Source)


http://84.201.4.116/downloads/models.rar

4
German corner / .jar erstellen
« on: October 29, 2012, 09:58:57 pm »
Hi,
wie bekomme ich eine lauffähige jar aus Eclipse wieder raus? Der Thread mit dem Jarmaker hat mir nicht geholfen. Das Ding nimmt die Hälfte nicht mit.

Aus Eclipse mit "Runnable Jar File" werden wohl die .dlls nicht gefunden.

So siehts aus in Eclipse (da läufts auch):


Diese Fehlermeldung bekomme ich.
Code: [Select]
G:\EDITOREN\kart\kart.0.0.1>java -jar kart.0.0.1.jar
Loading Texture...texturen/GrassSample2.jpg
Loading Texture...texturen/box.jpg
[ Mon Oct 29 21:52:12 CET 2012 ] - ERROR: File 'texturen/box.jpg' not found - re
placement texture used instead!
Java version is: 1.7.0_06
-> support for BufferedImage
Version helper for 1.5+ initialized!
-> using BufferedImage
Software renderer (OpenGL mode) initialized
Software renderer disposed
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
der.java:58)
Caused by: java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.loadLibrary0(Unknown Source)
        at java.lang.System.loadLibrary(Unknown Source)
        at org.lwjgl.Sys$1.run(Sys.java:73)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
        at org.lwjgl.Sys.loadLibrary(Sys.java:95)
        at org.lwjgl.Sys.<clinit>(Sys.java:112)
        at org.lwjgl.opengl.Display.<clinit>(Display.java:135)
        at com.threed.jpct.GLHelper.findMode(Unknown Source)
        at com.threed.jpct.GLHelper.findMode(Unknown Source)
        at com.threed.jpct.GLHelper.init(Unknown Source)
        at com.threed.jpct.GLRenderer.init(Unknown Source)
        at com.threed.jpct.FrameBuffer.enableRenderer(Unknown Source)
        at com.threed.jpct.FrameBuffer.enableRenderer(Unknown Source)
        at com.threed.jpct.FrameBuffer.enableRenderer(Unknown Source)
        at main.WorldRenderer.renderWorld(WorldRenderer.java:77)
        at main.WorldRenderer.<init>(WorldRenderer.java:32)
        at main.KartMain.<init>(KartMain.java:12)
        at main.KartMain.main(KartMain.java:16)
        ... 5 more

Achja und so sieht die .jar aus. Ist eigentlich alles drin was man so braucht.



Pages: [1]