Java3D: mehrere ViewingPlaforms in Sonnensystem

Status
Nicht offen für weitere Antworten.

veritas696

Mitglied
Hallo zusammen,

ich bin relativer Anfänger in Java3D und hab folgendes Problem:

Ich entwickle zur Zeit ein Sonnensystem mit den verschiedene Planeten, deren Monden und der Sonne. Zur Ansicht des Universums verwendet ich eine Kamera die 2 Behavoirs besitzt (zum bewegen und zum schauen). Mit dieser Kamera kann ich mich momentan frei im Universum bewegen.
Nun möchte ich per Tastendruck(auf Tastendrücke kann ich schon reagieren ;-)). die Kamera so verändern, daß sie so positioniert ist, daß sie auf einen Planeten Richtung Sonne schaut, also sagen wir hinter einem Planeten instaliert ist.
Also 1) Wie kann ich also zwischen den verschiedenen Ansicht auf die Planeten und der normalen freibeweglichen Kamera hin und her wechseln?

und 2) Wie bekomm ich es hin, daß die Kamera in der "Planetenansicht" immer mit dem Planeten mitwandert und auf die Sonne gerichtet ist?

zum Verständnis hier meine Klasse Kamera:

die 3 Behaviors sind von Behavior abgeleitete Klassen.

[HIGHLIGHT="Java"]public class Camera extends BranchGroup {

private TransformGroup transformGroup;

FreeLookBehavior freeLookBehavior = null;

FreeMoveBehavior freeMoveBehavior = null;
PlanetLookBehavior planetLookBehavior = null;

////////////////////////////////////////////////////////////////////////////

public Camera(TransformGroup tg) {
transformGroup = tg;

enableFreeCamera();
}

////////////////////////////////////////////////////////////////////////////

public void enableFreeCamera(/*SimpleUniverse u*/) {

resetCamera(); // Kamera neu initialisieren

// Initialisierung der Behaviors

freeLookBehavior = new FreeLookBehavior(transformGroup);

this.addChild(freeLookBehavior);

freeLookBehavior.setSchedulingBounds(Universe.BigBounds);
freeLookBehavior.setEnable(true);

freeMoveBehavior = new FreeMoveBehavior(transformGroup);

this.addChild(freeMoveBehavior);
freeMoveBehavior.setSchedulingBounds(Universe.BigBounds);
freeMoveBehavior.setEnable(true);
}

////////////////////////////////////////////////////////////////////////////

public void enablePlanetCamera(/*int PlanetId oder BranchGroup Planet ?*/) {
// ... psoitionierung der Kamera wie bewerkstäligen ?
}

////////////////////////////////////////////////////////////////////////////

public FreeLookBehavior getLookBehavior() {
return freeLookBehavior;
}

////////////////////////////////////////////////////////////////////////////

public FreeMoveBehavior getMoveBehavior() {
return freeMoveBehavior;
}

////////////////////////////////////////////////////////////////////////////

public void setActivateLookBehavior(boolean active) {
freeLookBehavior.setEnable(active);
}

////////////////////////////////////////////////////////////////////////////

public void setActivateMoveBehavior(boolean active) {
freeMoveBehavior.setEnable(active);
}

////////////////////////////////////////////////////////////////////////////

public void setSpeed(double speed) {
freeMoveBehavior.setSpeed(speed);
}

////////////////////////////////////////////////////////////////////////////

public double getSpeed() {
return freeMoveBehavior.getSpeed();
}

////////////////////////////////////////////////////////////////////////////

private void resetCamera() {
freeMoveBehavior.setEnable(false);
freeLookBehavior.setEnable(false);
planetLookBehavior.setEnable(false);

this.removeChild(freeLookBehavior);
this.removeChild(freeMoveBehavior);
this.removeChild(planetLookBehavior);
}
}[/HIGHLIGHT]
 
Zuletzt bearbeitet von einem Moderator:

Ebenius

Top Contributor
Ich hab den ganzen Quelltext mal eben formatiert und von den ganzen Farbanweisungen Deiner IDE befreit. Vorsicht mit dem WYSIWYG-Editor im Forum, wenn man Quelltext einfügt. Notfalls zwischendrin immer nochmal in einen Texteditor (vll. Notepad) einfügen und daraus kopieren, um die lästigen Farbangaben und Formatanweisungen loszuwerden. Und dafür dann Highlight-Tags verwenden:
Code:
[noparse][Highlight=Java]Quelltext[/Highlight][/noparse]
Ebenius
 

Marco13

Top Contributor
Ich bin - in diesem Sinne - "relativer Aufhörer" in Java3D, d.h. habe schon lange nicht mehr aktiv daran gearbeitet, aber ... brauchst du wirklich mehrere ViewingPlatforms? Ich würde vermuten, dass es ausreicht, die Transform der ViewPlatformTransform passend zu setzen. Die Müßte man auch relativ leicht aus der Planetenbewegung berechnen können, so dass die Kamera am bewegten Planeten "klebt"...
 

veritas696

Mitglied
@Marco: ja da könnest du recht haben. Also benutze ich in der Funktion enablePlanetCamera() die transformGroup - Membervariable und wende auf diese dann die Transformation des Planeten an oder wie? Rotiert dann meine Kamera nicht auch um sich selbst wie der Planet?
 

Marco13

Top Contributor
Hmja, an welche TransformGroup die Camera dann wie gehängt wird, muss man sich überlegen. Im Moment vermute ich, dass die Transformation für einen Planeten etwa sowas ist wie
Code:
sun
    rotate(0, yearRotation, 0)
        transform(0,0,planetDistance)
            rotate(0, dayRotation, 0)
                Planet
Für die Kamera bräuchte man dann sowas wie
Code:
sun
    rotate(0, yearRotation, 0)
        transform(0,0,planetDistance+someOffset)
            camera
Also, angenommen die Kamera schaut eigentlich intlang der negativen z-Achse, und wenn alle rotationen 0 sind, ist die Sicht von oben praktisch sowas wie
Code:
       ___
      /   \
     | sun |
      \___/
       
planetDistance       
       
       (P)
       
someOffset
       
        ^
      __|__ 
      \   /
       \C/
Dann muss die Kamera eigentlich nurnoch mit der "yearRotation" gedreht wird...
 

veritas696

Mitglied
Hab das jetzt mal versucht umzusetzen,
Ich habe mir in meiner Klasse Planet eine TransformGroup erstellt die die Position der Kamera besitzt. Ich habe mir an die Stelle eine weiße Kugel gemalt. Und das funktioniert auch wunderbar. Wenn ich nun diese TransformGroup an meine Kamera übergebe.(siehe Code) dann sehe ganz am Anfang des Programms wie meine Kamera hinter dem Planeten steht sich dann aber nicht mehr mit dem Planeten mitbewegt sondern dort stehen bleibt. Wie bekomme ich die Bewegung der Kamera hin? ViewT3D ist eine Membervariable der Klasse Kamera


Code:
public void enablePlanetCamera(Planet currentPlanet) 
{
TransformGroup ViewTG = currentPlanet.getCamTG();
ViewTG.getTransform(ViewT3D);
 
transformGroup.setTransform(ViewT3D);
 
}
 

Marco13

Top Contributor
Die gleiche Rotation, die auf den Teil des Szenegraphen angewendet wird, der den Planeten enthält, muss auch auf die Camera angewendet werden. Poste ggf. mal ein Compilierbares(!!!) Beispiel.
 

veritas696

Mitglied
Hm, aber die weiße Kugel die sich in der CamTG befindet bewegt sich ja auch mit dem Planeten mit *grübbel*

Edit: Kann mit die Rotation nicht nur einmal verwenden, weil sie wurde ja dann schon als Child einer anderen TG zugeordnet!?

hm ich schau mal weiter...
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Hm - bin gerade nicht 100% sicher (ist alles so lange her :( ) aber ... die Transform3D EINMAL zu setzen, reicht nicht: Entweder, sie muss bei jedem Animationsschritt gesetzt werden, oder die Kamera und der Planet müssen an der SELBEN TransformGroup hängen...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Java3D - mehrere Instanzen eines Geometrieobjektes erzeugen Spiele- und Multimedia-Programmierung 3
N Java3d in Eclipse einbinden Spiele- und Multimedia-Programmierung 4
Neumi5694 Java3D Viewer Beschriftung Spiele- und Multimedia-Programmierung 1
C Java3D Transformieren von obj. Datein Spiele- und Multimedia-Programmierung 0
M Cylinder anhand eines Vektors ausrichten (Java3d) Spiele- und Multimedia-Programmierung 0
Ruvok Java3D Tutorial gesucht Spiele- und Multimedia-Programmierung 5
U Hilfe bei Implementierung eines PointSounds in Java3D Spiele- und Multimedia-Programmierung 1
R Java3d ViewingPlatform erst Verschieben und dann RotationsInterpolator Spiele- und Multimedia-Programmierung 0
D Java3D - Blickfeld Spiele- und Multimedia-Programmierung 1
P Java3D Box Dimensionen und Positionierung Spiele- und Multimedia-Programmierung 1
E Java3D Objekt skalieren per JSlider/JButton Spiele- und Multimedia-Programmierung 10
S Java3D: Primitives zu einem Objekt kombinieren Spiele- und Multimedia-Programmierung 7
J Java3D - Textur laden geht nicht Spiele- und Multimedia-Programmierung 9
J Java3D - Farben vermischen sich Spiele- und Multimedia-Programmierung 7
T Java3D Rendering Problem Spiele- und Multimedia-Programmierung 7
S Java3D oder JMonkey? Spiele- und Multimedia-Programmierung 17
H Java3D - Textur aufs innere einer Sphere mappen Spiele- und Multimedia-Programmierung 9
C java 3d ohne Java3d Spiele- und Multimedia-Programmierung 28
Maxim6394 [Java3D] Probleme bei Kollision Spiele- und Multimedia-Programmierung 7
Maxim6394 [Java3D] lookAt Mausposition Spiele- und Multimedia-Programmierung 17
Maxim6394 [Java3D] Probleme mit KeyFrame Animationen Spiele- und Multimedia-Programmierung 9
K Java3D als Applet ohne Installation von Java3d Spiele- und Multimedia-Programmierung 6
D Java3D Installation: package javax.media.j3d not found Spiele- und Multimedia-Programmierung 5
C Java3D Texture Mapping Spiele- und Multimedia-Programmierung 2
W Java3D: Kanten die hinter einem Objekt liegen werden gezeigt Spiele- und Multimedia-Programmierung 2
W Java3D: Farbe von Objekten stimmt nicht mit übergebenem RGB-Wert überein Spiele- und Multimedia-Programmierung 9
M Eigene Renderengine ohne Java3D,etc. Spiele- und Multimedia-Programmierung 19
C Java3D Sound spielt nur einen Sound ab. Spiele- und Multimedia-Programmierung 8
A JAVA3D TransformGroup <--> Group Problem Spiele- und Multimedia-Programmierung 3
M [Java3D] Animation von mehreren Objekten Spiele- und Multimedia-Programmierung 7
W Java3D: Eckkoordinaten einer Box herausfinden Spiele- und Multimedia-Programmierung 18
T Java3D: Objekte platzieren und entfernen? Spiele- und Multimedia-Programmierung 7
T Java3D: Nur die Kanten des Würfels rendern? Spiele- und Multimedia-Programmierung 4
W Java3D setBounds(BoundingBox) Spiele- und Multimedia-Programmierung 6
T [gelöst] Java3D: Unerwünschte Rotation um die 3.Achse vermeiden? Spiele- und Multimedia-Programmierung 3
Bastie JAVA3D - WRL Transform Spiele- und Multimedia-Programmierung 9
G Eclipse Problem mit Java3d Spiele- und Multimedia-Programmierung 3
T Java3D - Lichtquelle einbauen Spiele- und Multimedia-Programmierung 7
jemandzehage java3d parallel und perspective view Spiele- und Multimedia-Programmierung 5
H Cinema 4D in Java3D importieren Spiele- und Multimedia-Programmierung 2
1 [Java3D] komplexes Projekt? Spiele- und Multimedia-Programmierung 10
P .obj-Datei in Java3D laden: ParsingErrorException Spiele- und Multimedia-Programmierung 7
C Java3D Lichtquelle beim Beobachter Spiele- und Multimedia-Programmierung 2
C Java3D Interaktion während Animation Spiele- und Multimedia-Programmierung 3
aze Java3D: Flächen teilen Spiele- und Multimedia-Programmierung 15
P Java3D Textur verzerrt Spiele- und Multimedia-Programmierung 3
aze Java3D: Gegenstände aufeinander zubewegen ohne Kollision Spiele- und Multimedia-Programmierung 4
D [JAVA3D] Es werden 2 Fenster erzeugt und auf dem falschen gezeichnet Spiele- und Multimedia-Programmierung 3
aze Java3D: leere Räume füllen Spiele- und Multimedia-Programmierung 2
aze Java3d:Helligkeit von Shape3D ändern Spiele- und Multimedia-Programmierung 2
S Einschätzung zu Java3D-Einstieg Spiele- und Multimedia-Programmierung 3
F Programm mit Java3D unter Linux laufen lassen Spiele- und Multimedia-Programmierung 3
I Vergleich von Java3D und OpenGL Spiele- und Multimedia-Programmierung 17
W Waterslide mit Java3D Spiele- und Multimedia-Programmierung 11
M Java3D Picking - falsche Objekte werden gepickt Spiele- und Multimedia-Programmierung 3
M [Java3D] Rotieren der Scene NICHT des POV Spiele- und Multimedia-Programmierung 4
F Jogl oder Java3D ? Spiele- und Multimedia-Programmierung 20
K Java3D Abfängerfrage Spiele- und Multimedia-Programmierung 3
aze Java3D:Farbige Flächen verschwinden lassen(Transparenz- oder Colorinterpolator?)) Spiele- und Multimedia-Programmierung 5
C Java3D PositionInterpolator Spiele- und Multimedia-Programmierung 3
G [Java3D] Probleme bei Animation Spiele- und Multimedia-Programmierung 4
E [JAVA3D] Kamerasteuerung Spiele- und Multimedia-Programmierung 3
E [JAVA3D] Schattenstrich durch die Szene Spiele- und Multimedia-Programmierung 4
M Grundsätzliche Java3D Fragen Spiele- und Multimedia-Programmierung 2
C Java3D SceneGraohPath Spiele- und Multimedia-Programmierung 2
C Java3D Rotation um einen Punkt (y-achse) Spiele- und Multimedia-Programmierung 2
G Java3D plattformunabhängig bundeln Spiele- und Multimedia-Programmierung 3
TheKing Java3D-Shooter View Spiele- und Multimedia-Programmierung 2
A Java3D tutorial? Spiele- und Multimedia-Programmierung 3
R Java3D Kollisionserkennung und Schwerkraft Spiele- und Multimedia-Programmierung 17
M Java3D Objekte entfernen und hinzufügen Spiele- und Multimedia-Programmierung 10
J Java3d Schnelle Geschosse Spiele- und Multimedia-Programmierung 12
D Kann ich mit Java3D 2D Daten als 3D surfaceplot plotten? Spiele- und Multimedia-Programmierung 5
J Java3d setTextureTransform verändert J3DGraphics2D Spiele- und Multimedia-Programmierung 4
J Hilfe: Rotation X und Y Achse (Java3d) Spiele- und Multimedia-Programmierung 12
K Java3D: LineStripArray Spiele- und Multimedia-Programmierung 2
P Java3D - Zylinder genau wie Vektor ausrichten Spiele- und Multimedia-Programmierung 5
Developer_X Java3D Mensch Ärgere Dich nicht. Spiele- und Multimedia-Programmierung 10
C JAVA3D Rotation um einen bestimmten Punkt Spiele- und Multimedia-Programmierung 20
Developer_X Java3D-Ungeeignet für 3D Spiele wegen Heap Space=? Spiele- und Multimedia-Programmierung 23
Developer_X Java3D Canvas post Renderer und? Spiele- und Multimedia-Programmierung 5
A Java3D Sichtweite Spiele- und Multimedia-Programmierung 2
"Er" Kamera rotation in Java3D Spiele- und Multimedia-Programmierung 2
A Java3D: Behavior scheduling bounds Spiele- und Multimedia-Programmierung 3
Developer_X THE BALL (needs Java3D) Spiele- und Multimedia-Programmierung 34
Developer_X Java3D Game_(die erste) Spiele- und Multimedia-Programmierung 2
Developer_X Java3D und while schleifen Spiele- und Multimedia-Programmierung 4
Developer_X Collisionserkennung in Java3D Spiele- und Multimedia-Programmierung 3
Developer_X Java3D Node -> Obj Data Spiele- und Multimedia-Programmierung 2
Developer_X Figuren werden nicht angezeigt (Java3D) Spiele- und Multimedia-Programmierung 5
S PDFRenderer und Java3D Spiele- und Multimedia-Programmierung 2
Developer_X Java3D- der Mausklick auf Nodes Spiele- und Multimedia-Programmierung 3
Developer_X Java3D Point Sound Spiele- und Multimedia-Programmierung 71
Developer_X Lines in Java3D Spiele- und Multimedia-Programmierung 4
V Java3D: HUD erstellen Spiele- und Multimedia-Programmierung 2
V Java3D: scheinende Sonne Spiele- und Multimedia-Programmierung 4
V Java3D: Ringe für Saturn erstellen Spiele- und Multimedia-Programmierung 8
V Java3D: automatisches Bewegen der Kamera Spiele- und Multimedia-Programmierung 19
Developer_X Thread in Java3D Spiele- und Multimedia-Programmierung 8
B Java3D .obj dateien Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben