PDA

View Full Version : [Frage] 3d objekte darstellen - wie ?


black_sheep
28-10-2004, 15:56
titel sagt eh schon alles ..

kann mir kurz wer einen anstoss geben wie ich die 3d objekte in das interface bekomm ? :)

zeigt mir 0 an .. und auf den 2d-objekten funktionieren meine translate/rotation funktionen nicht ..

bin fuer jede hilfe dankbar ;)

Flowyes
28-10-2004, 16:06
Bisschen mehr Info kannst schon geben denk ich. Was hast du implementiert, und zwar wie, und was hast du bis jetzt nicht implementiert?

black_sheep
28-10-2004, 16:12
oh stimmt ..

----TASK 3A TESTING BEGIN----
CG1Vector.crossProduct ok!
CG1Vector.add ok!
CG1Vector.diff ok!
CG1Vector.dotProduct ok!
CG1Matrix3x3.multLeft ok!
CG1Matrix3x3.multRight ok!
CG1Matrix4x4.multLeft ok!
CG1Matrix4x4.multRight ok!
----TASK 3A TESTING END----

naja und im CG1Object bisher nur den translate mit dem transformationsmode 'left'

modelMatrixPoint.multLeft (new CG1Matrix4x4().setTranslate(x, y, z));

sollt doch passen bis hierher oder ? :)

Wings-of-Glory
28-10-2004, 17:14
Ich kann dir nur ein sagen: für 3D-Objekte ist 3A sicher zu wenig.
Erst ab 3B fängst du ernsthaft mit der Implementierung der Viewing Pipline an.

Ich selbst pauke noch die Theorie.. *g*

black_sheep
28-10-2004, 17:24
d.h. ich kann eigentlich gar nicht testen ?

bei meinen 2d-files tut sich naemlich auch trotz 'only world trans' wenig .. sie werden nur richtig angezeigt .. aber von translation oder rotation keine rede

Wings-of-Glory
28-10-2004, 17:41
puh, keine ahnung.. ich hab mich mit der test() methode in main zufrieden gegeben.
ein paar leute haben über testmöglichkeiten etwas geschieben.
vielleicht hilft's.

black_sheep
28-10-2004, 17:49
danke für deine antworten ..

die test() funktion gibt lauter oks bei mir ..

das reicht aber nicht fuer 3a oder ?

da muss ja noch translate/rotate/scale/.. passen oder ?

Matthias
28-10-2004, 18:09
danke für deine antworten ..

die test() funktion gibt lauter oks bei mir ..

das reicht aber nicht fuer 3a oder ?

da muss ja noch translate/rotate/scale/.. passen oder ?

ja.

The message you have entered is too short. Please lengthen your message to at least 10 characters.

ChrisChiu
28-10-2004, 18:43
d.h. ich kann eigentlich gar nicht testen ?

bei meinen 2d-files tut sich naemlich auch trotz 'only world trans' wenig .. sie werden nur richtig angezeigt .. aber von translation oder rotation keine rede

Auf http://www.cg.tuwien.ac.at/courses/CG/LU/Beispiel3.html steht's doch eh:


Die Unterteilung bewirkt allerdings, dass Beispiel 3A nicht herkömmlich mit den atoff-Files getestet werden kann, sondern es wird in der main()-Funktion ein Test aufgerufen, die einige Beispielvektoren und -Matrizen generiert und Operationen damit ausführt, und die Ergebnisse dann mit den richtigen vergleicht. Sie gibt auf der Konsole folgende Zeilen aus:


Das heißt: man kann 3A nicht visuell testen wie herkömmlich, sondern nur den Matrix und Vektorteil über diese test() Methode.

Prinzipiell sollte man 3A und 3B als ein und dasselbe Beispiel sehen. Die Aufteilung erfolgte hauptsächlich aus dem Grund, weil das Beispiel 3 früher immer ein ziemlicher Sprung vom relativ einfachen 2. Beispiel war - und mit der Einteilung können wir erzwingen, dass die Studenten sich zumindest mit der ersten Etappe des 3. Beispiels bis zu einem bestimmten Termin beschäftigen (es gab sonst immer das Problem, dass manche mit dem 3. Beispiel erst eine Woche vor der Abgabe begonnen haben, weil sie es unterschätzt haben).

black_sheep
28-10-2004, 19:49
alles klar, danke

NightHaG
31-10-2004, 13:26
Soll ich dann die Viewing Pipeline vor der Abgabe von 3A implentieren nur um testen zu können, dass meine rotation und scale und translate Matrizen richtig multipliziert werden? Dann kann man die Beispiele gleich zusammenwerfen. Weil einfach so "blind" abzugeben gibt mir nicht wirklich ein gutes Gefühl. An und für sich ist es ja nicht schwer zu implementieren aber der eine oder andere Denkfehler kann sich schon einschleichen und dann ist das Beispiel hinüber... (naja immerhin compiliert es bei mir also die Syntax stimmt schon mal :D)

black_sheep
31-10-2004, 18:23
naja eigentlich musst du nur den 1. schritt von 3b machen (welt-koordinaten) damit du zumindest 2d-atoff-files anzeigen kannst die dann die gewuenschten operationen machen .. oder auch nicht .. du hast ja links unten im gui die option 'only world trans.'

das hab ich jetz gerade getan und es funktioniert so halbwegs ..

andere frage:

mein problem ist dass sich zwar jetz alles dreht und bewegt .. nur wenn ich z.b. eine translation mache und anschliessend mit dem selben objekt eine rotation .. wird zuerst noch eine kurze zeit lang die translation von vorher weitergefuehrt und dann erst die rotation .. ausserdem geht alles ziemlich rasch :)

bisschen bloed das problem zu erklaeren aber ich hoffe dass das an dem interface liegt und nicht an mir UND dass mich ueberhaupt irgendwer jetz verstanden hat ^^ :)

mach ich was falsch ?

- TeMET_noSCE -
31-10-2004, 20:18
ich hätt da auch noch ein kleines problem:
ich kann zwar alle 2D und 3D files öffnen und sie werden korrekt angezeigt, aber sobald ich irgendeine transformation durchführe werden sie total verzerrt. ich glaub aber nicht, dass es an der matrixmultplikation liegt, wie in vielen threads zu lesen ist, denn ich hab die matrix eh in eine temp zwischengespeichert...:confused:

NightHaG
12-11-2004, 18:42
naja eigentlich musst du nur den 1. schritt von 3b machen (welt-koordinaten) damit du zumindest 2d-atoff-files anzeigen kannst die dann die gewuenschten operationen machen .. oder auch nicht .. du hast ja links unten im gui die option 'only world trans.'

das hab ich jetz gerade getan und es funktioniert so halbwegs ..

andere frage:

mein problem ist dass sich zwar jetz alles dreht und bewegt .. nur wenn ich z.b. eine translation mache und anschliessend mit dem selben objekt eine rotation .. wird zuerst noch eine kurze zeit lang die translation von vorher weitergefuehrt und dann erst die rotation .. ausserdem geht alles ziemlich rasch :)

bisschen bloed das problem zu erklaeren aber ich hoffe dass das an dem interface liegt und nicht an mir UND dass mich ueberhaupt irgendwer jetz verstanden hat ^^ :)

mach ich was falsch ?

Du musst die Methode clearTransformations() implentieren und an der richtigen Stelle anwenden.