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

#1
German corner / Re: Skalieren
September 21, 2007, 07:47:09 AM
Quote from: EgonOlsen on September 20, 2007, 10:54:34 PM
setScale ist absolut, d.h. wenn du setScale(2) sagst, ist das Objekt doppelt so groß. Machst du danach ein setScale(1), ist es wieder normal. Bei scale() wäre es weiterhin doppelt so groß, weil es relativ zum vorherigen arbeitet, d.h. 2*1=2. Um wieder auf normale Größe zu kommen, müsste man folglich ein scale(0.5f) machen.
Ich empfehle setScale() zu benutzen. scale() ist älter und nur in Ausnahmefällen sinnvoller.

Alles klar....danke für die Hilfe.
#2
German corner / Re: Skalieren
September 20, 2007, 09:42:07 PM
Ahh ich verstehe. Habe grad gesehn es gibt neben der scale funktion noch eine setScale. Was ist der unterschied zwischen den beiden?
#3
German corner / Re: Skalieren
September 20, 2007, 03:19:44 PM
So ich weiss jetzt woran es liegt. Ich versteh es nur nicht und beheben kann ich es auch nicht. Hier mal die Fehlerquelle:
Ich habe eine Methode doTransformation, die eine Transformation auf einem Objekt ausführt:

public void doTransformation(Matrix matrix) {

this.checkForCollisionEllipsoid(matrix.getTranslation(), new SimpleVector(100, 100, 100), 1);

float[] f = matrix.getDump();
f[12] = f[13] = f[14] = 0;
Matrix rotMatrix = new Matrix();
rotMatrix.setDump(f);
Matrix transMatrix = new Matrix();
transMatrix.translate(matrix.getTranslation());

        setRotationMatrix(rotMatrix);
setTranslationMatrix(transMatrix);
}

Die Matrix die ich übergebe hat z.B. folgendes Aussehen:
(
   0.89446574   0.44598848   0.03202131   0.0
   0.44640648   -0.8948031   -0.006977995   0.0
   0.025540663   0.020536099   -0.99946284   0.0
   3.3978431   17.534836   460.37787   1.0
)

daraus generiere ich mir dann 2 Matrizen (je eine für die rotation und die translation):
(
   0.89446574   0.44598848   0.03202131   0.0
   0.44640648   -0.8948031   -0.006977995   0.0
   0.025540663   0.020536099   -0.99946284   0.0
   0.0   0.0   0.0   1.0
)
(
   1.0   0.0   0.0   0.0
   0.0   1.0   0.0   0.0
   0.0   0.0   1.0   0.0
   3.3978431   17.534836   460.37787   1.0
)

kommentiere ich bei der Methode die zeile setRotationMatrix(rotMatrix); aus, klappt es mit dem skalieren ohne Probleme. Sobald ich aber die Rotation hinzufüge, klappt es nicht mehr mit dem skalieren. Daher muss der Fehler wohl bei der rotation liegen.
#4
German corner / Re: Skalieren
September 20, 2007, 09:00:15 AM
Quote from: EgonOlsen on September 20, 2007, 08:35:08 AM
Kann eigentlich nicht sein. Hast du mal einen Screenshot (am besten vor und nach dem Skalieren)?

Habe mal ein kleines Flash-Video gemacht.
http://www.is-md.de/jpct.swf
#5
German corner / Skalieren
September 20, 2007, 12:06:53 AM
Hallo,

bisher hatte ich keine Probleme mit dem Skalieren von Objekten. Nur leider hab ich jetzt eine Situation, da verändert sich nach dem skalieren nicht das Objekt, sondern die Texture. Es sieht so aus als ob nur die Texture skaliert wird. Ich finde aber nirgendwo einen Fehler. Hat da jmd. evtl. eine Lösung oder einen Hinweis wonach ich schauen könnte?
#6
German corner / Re: Zu grosse Modelle?
July 05, 2007, 11:14:51 AM
Quote from: EgonOlsen on July 05, 2007, 11:07:02 AM
Naja, diese Modelle sind in der Tat sehr "fett"...da wirst du auch beim Rendern keinen Spaß dran haben. Der Loader belegt soviel Speicher, wie er eben belegt. jPCT muss aufgrund seiner Hybrid-Eigenschaft (Software/Hardware) ein paar Dinge zusätzlich abspeichern, die natürlich auch zusätzlich Speicher kosten. Du kannst mal versuchen, ob Config.saveMemory=true; was bringt, aber letztendlich sind diese Modelle einfach so oder so zu fett... ;)

Das habe ich mir schon fast gedacht...Config.saveMemory=true; hab ich schon versucht, bringt aber nix. Ist im Prinzip auch nicht ganz so schlim, dann darf ich halt nicht so grosse Objekte verwenden ;)

Dafür hat sich die Lösung meines 2. Problems, mit den Teilobjekten, doch nicht also praktikabel herausgestellt, da ich ja nur auf die Parentobjekte, aber nie auf die Kindobjekte zugreifen kann.
#7
German corner / Re: Zu grosse Modelle?
July 05, 2007, 10:18:54 AM
Quote from: kekrops on July 05, 2007, 10:00:35 AM

Hab da auch gleich noch eine weiter Frage. Wenn ich ein Objekt aus mehreren einzelnen Objekten mit merge zusammensetze, gibt es dann später die Möglichkeit diese wieder zu trennen, oder sollte ich Sie dann lieber von vornherein einzeln lassen?

Hab die Lösung grad selber gefunden. Habe nicht gesehn das ich auch Kindobjekte hinzufügen kann.
#8
German corner / Re: Zu grosse Modelle?
July 05, 2007, 10:00:35 AM
Quote from: EgonOlsen on July 04, 2007, 11:17:59 PM
Mal anders gefragt: Wie groß ist den das Modell?

Also die Modelle sind schon sehr gross (http://www-static.cc.gatech.edu/projects/large_models/). Es ist im Prinzip auch nur eine allgemeine Frage. Ich hab nämlich mal einen anderen Loader ausprobiert (nur zum anzeigen der Modelle) bei dem es keine Probleme mit der Grösse der Objekte gab (zumindest beim laden...die Anzeige ist dann ja ein anderes Problem).
Hab da auch gleich noch eine weiter Frage. Wenn ich ein Objekt aus mehreren einzelnen Objekten mit merge zusammensetze, gibt es dann später die Möglichkeit diese wieder zu trennen, oder sollte ich Sie dann lieber von vornherein einzeln lassen?
#9
German corner / Zu grosse Modelle?
July 04, 2007, 10:50:37 PM
Hallo,
wie gross dürfen die Modelle maximal sein damit es keine Probleme mit dem Loader gibt? Oder gibt es eine Möglichkeit die Modelle nur zum Teil zu laden? Ich bekomme beim laden einiger Modelle immer einen Java heap space Fehler (das Hochsetzen des Speichers für die JVM bringt auch nix...dann kommt er nur später).
#10
German corner / Re: CollisionListener
June 13, 2007, 02:19:23 PM
Ahja, genau das war es...danke. Hatte das vorher zwar schonmal damit versucht, aber entweder habe ich da was falsch gemacht, oder ich hatte andere Parameter gewählt.
#11
German corner / Re: CollisionListener
June 13, 2007, 01:02:47 PM
Hallo,

das habe ich auch schon gemacht. Hier die Klasse der Objekte:

package de.fhb.arlearning.core;

import com.threed.jpct.*;
import java.io.*;
import java.awt.*;

public class T1 extends AbstractEntity {

private final static Object3D OBJ;

static {
OBJ= Primitives.getSphere(10, 100);
OBJ.build();
}

public T1() {
super(OBJ);
addCollisionListener(new ObjectCollisionListener());

setCollisionMode(COLLISION_CHECK_OTHERS | COLLISION_CHECK_SELF);
setCollisionOptimization(Object3D.COLLISION_DETECTION_OPTIMIZED);
}
}


Dann füge ich sie der Welt hinzu:

p = new T1();
p.setOrigin(new SimpleVector(122, -164, 1435));
world.addObject(p);

m = new T2();
m.setOrigin(new SimpleVector(500, -164, 1435));
world.addObject(m);


Und in einer Schleife lass ich dann m in richtung p wandern:

while (true) {
buffer.clear();

SimpleVector a = m.getXAxis();
a.scalarMul(5);
m.translate(a);

System.out.println();
System.out.print("(" + Math.round(p.getTransformedCenter().x)
+ ", " + Math.round(p.getTransformedCenter().y) + ", "
+ Math.round(p.getTransformedCenter().z) + ") - ");

System.out.print("(" + Math.round(m.getTransformedCenter().x)
+ ", " + Math.round(m.getTransformedCenter().y) + ", "
+ Math.round(m.getTransformedCenter().z) + ") - ");

world.renderScene(buffer);

world.drawWireframe(buffer, Color.red);
buffer.update();
display();
Thread.yield();
}


Aber nix passiert...er sollte bei einer Kollision eigentlich was ausgaben:

public void collision(CollisionEvent ce) {
System.out.println("Source:" + ce.getSource());
System.out.println("Object:" + ce.getObject());
}


So wie ich mich kenne ist das ein kleiner simpler Fehler...aber ich finde Ihn nicht.
#12
German corner / CollisionListener
June 13, 2007, 10:06:18 AM
Hallo,

ich benutze für die Kollisionserkennung zwischen den Objekten so wie im Car-Beispiel einen eigenen CollisionListener. Leider wird keine Kollision erkannt. ich hab es auch schon mit den Methoden checkCollision etc. probiert. Kein Erfolg. Hat vielleicht jmd. eine Idee woran es liegen kann bzw. was ich falsch machen könnte?
Ich benutze eigentlich fast das selbe Schema wie das Car-Beispiel, nur das ich keinen Boden habe und sich meine Objekte sozusagen frei im Raum bewegen können.