java-forum.org
JBoss Seam
Alter Preis: 39,95 €
Jetzt: 0,00 €

zzgl. Versandkosten

Zurück   java-forum.org > Java - Programmierung > Spiele- und Multimedia-Programmierung

Antwort    
Themen-Optionen Thema durchsuchen Ansicht
Alt 30.06.2009, 17:27   #1 (permalink)
Stammbenutzer
Team JCupGames
Megabyte
 
Benutzerbild von Developer_X
 
Registriert seit: 01.02.2009
Beiträge: 1.648
Abgegebene Danke: 19
Erhielt 5 Danke für 5 Beiträge
Standard Eine Frage zur ViewBesetzung

HI, ich hab eine frage an euch, wie kann ich
die folgende Methode in mein Java3D Programmeinbauen, ohne dass folgende Fehlermeldung kommt?
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
    public void setView()
    {
        view = new Transform3D();
        view.setTranslation(new Vector3f(0,0,0.5f));
        View = new TransformGroup();
        View.setTransform(view);
        View.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        View = u.getViewingPlatform().getViewPlatformTransform();
        
        viewPoint = new Transform3D();
        viewPoint.rotY(Math.toRadians(rot));
        viewPoint.setTranslation(new Vector3f(x,y,z));
        ViewPoint = new TransformGroup();
        ViewPoint.setTransform(viewPoint);
        ViewPoint.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
                         ViewPoint.addChild(View);
        
    }
Code:
Exception in thread "main" javax.media.j3d.MultipleParentException: Group.addChild: child already has a parent
	at javax.media.j3d.GroupRetained.checkValidChild(GroupRetained.java:452)
	at javax.media.j3d.GroupRetained.addChild(GroupRetained.java:461)
	at javax.media.j3d.Group.addChild(Group.java:271)
	at Game1.Game3D21.setView(Game3D21.java:120)
	at Game1.Game3D21.<init>(Game3D21.java:52)
	at Game1.Game3D21.main(Game3D21.java:166)
__________________
Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird.
Developer_X
Developer_X ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 30.06.2009, 17:35   #2 (permalink)
Stammbenutzer
CD-R 80
 
Registriert seit: 07.01.2007
Beiträge: 8.603
Abgegebene Danke: 0
Erhielt 145 Danke für 140 Beiträge
Da gibt's fast nur eine Möglichkeit:
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
try
{
    setView();
}
catch (Exception e)
{
    // Do nothing...
}

Ansonsten müßtest du die Methode so ändern, dass nicht ein Knoten, der schon ein parent hat, zu einen anderen hinzugefügt wird.
Marco13 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 30.06.2009, 18:00   #3 (permalink)
Stammbenutzer
Team JCupGames
Megabyte
Themenstarter
 
Benutzerbild von Developer_X
 
Registriert seit: 01.02.2009
Beiträge: 1.648
Abgegebene Danke: 19
Erhielt 5 Danke für 5 Beiträge
ich habs versucht, mit dem zwischenSchritt TransView
geht aber auch nicht, hier mal mein gesamter Code:
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
package Game1;
 
import java.awt.event.*;
import java.awt.*;
 
import javax.media.j3d.*;
import javax.swing.*;
import javax.vecmath.*;
 
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
 
@SuppressWarnings("serial")
public class Game3D21 extends JFrame implements KeyListener, MouseMotionListener
{
    //Attribute
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        
        float x,y,z;
        float rot;
        
        Transform3D viewPoint;
        TransformGroup ViewPoint;
        
        Transform3D transview = new Transform3D();
        TransformGroup TransView = new TransformGroup();
        
        BranchGroup X = new BranchGroup();
        
        Transform3D view;
        TransformGroup View;
        
        BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 1000.0);
 
        SimpleUniverse u;
        
    //Constructor
    public Game3D21()
    {
        super("Game3D21");
        //sets n' adds
        setSize(d);
        setUndecorated(true);       
        setLayout(new BorderLayout());
 
        addWindowListener(new WindowListener());
        
        BranchGroup scene = createScene();       
        GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
        Canvas3D canvas = new Canvas3D(config);
        add("Center", canvas);       
        canvas.addKeyListener(this);
        canvas.addMouseMotionListener(this);
        u = new SimpleUniverse(canvas);       
        u.addBranchGraph(scene);
        try
        {
        setView();
        }
        catch(Exception e)
        {
            
        }
        setVisible(true);
    }
    
    //implement Methods
    public void keyPressed(KeyEvent arg0) 
    {       
        if(arg0.getKeyCode()==KeyEvent.VK_UP)
        {
            forward();
        }
        else if(arg0.getKeyCode()==KeyEvent.VK_DOWN)
        {
            backward();
        }
        else if(arg0.getKeyCode()==KeyEvent.VK_LEFT)
        {
            leftward();
        }
        else if(arg0.getKeyCode()==KeyEvent.VK_RIGHT)
        {
            rightward();
        }
    }
 
    public void keyReleased(KeyEvent arg0) 
    {       
    }
 
    public void keyTyped(KeyEvent arg0)
    {
    }
    
    //Most Important Methods!!!
    public void forward()
    {
        
    }
    public void backward()
    {
        
    }
    public void leftward()
    {
        
    }
    public void rightward()
    {
        
    }
 
    
    public void setView()
    {
        view = new Transform3D();
        View = new TransformGroup();
        View.setTransform(view);
        View.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        View = u.getViewingPlatform().getViewPlatformTransform();
        
        transview = new Transform3D();
        transview.setTranslation(new Vector3f(0,0,0.5f));
        TransView = new TransformGroup();
        TransView.setTransform(transview);      
        TransView.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        
        viewPoint = new Transform3D();
        viewPoint.rotY(Math.toRadians(rot));
        viewPoint.setTranslation(new Vector3f(x,y,z));
        ViewPoint = new TransformGroup();
        ViewPoint.setTransform(viewPoint);
        ViewPoint.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        ViewPoint.addChild(TransView);
 
    }
    
    public void mouseDragged(MouseEvent arg0)
    {       
    }
 
 
    public void mouseMoved(MouseEvent arg0) 
    {   
        
        double x = MouseInfo.getPointerInfo().getLocation().getX(); 
      //double y = MouseInfo.getPointerInfo().getLocation().getY();
        
        if(x<=d.width/2)
        {
            if(rot>=-45)
            {
            rot = rot - 0.1f;
            viewPoint.rotY(Math.toRadians(rot));
            ViewPoint.setTransform(viewPoint);
            
            View.getTransform(transview);
            
            }
            else
            {
                ;
            }
        }
        else if(x>d.width/2)
        {
            if(rot<=+45)
            {
            rot = rot + 0.1f;
            viewPoint.rotY(Math.toRadians(rot));
            ViewPoint.setTransform(viewPoint);
            
            View.getTransform(transview);
            }
            else
            {
                ;
            }
        }
 
    }
    
    //Main
    public static void main(String[]arg)
    {
        new Game3D21();
    }
 
    //3DGroups
    public BranchGroup createScene()
    {
        X = new BranchGroup();
        
        Transform3D b1 = new Transform3D();
        b1.setTranslation(new Vector3f(0,0,-2));
        TransformGroup B1 = new TransformGroup();
        B1.setTransform(b1);
        X.addChild(B1);
        B1.addChild(new Sphere(0.1f,null));
        
//////////////Lights
           Color3f lightColor = new Color3f(.3f,.3f,.3f);
           AmbientLight ambientLight= new AmbientLight(lightColor);
           ambientLight.setInfluencingBounds(bounds);
           X.addChild(ambientLight);
           DirectionalLight directionalLight = new DirectionalLight();
           directionalLight.setColor(lightColor);
           directionalLight.setInfluencingBounds(bounds);
           X.addChild(directionalLight);       
        
        return X;
    }
    
    //Classes
    class WindowListener extends WindowAdapter{public void windowClosing(WindowEvent e)
    {
        System.exit(0);
    }}
 
}

Da kommt zwar keine Exception mehr, dafür aber, bewegt sich die Kamera nicht mehr
__________________
Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird.
Developer_X
Developer_X ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 30.06.2009, 18:00   #4 (permalink)
Stammbenutzer
Team JCupGames
Megabyte
Themenstarter
 
Benutzerbild von Developer_X
 
Registriert seit: 01.02.2009
Beiträge: 1.648
Abgegebene Danke: 19
Erhielt 5 Danke für 5 Beiträge
Wenn ich dich noch was fragen könnte, gibt es einen Listener, für Mäuse, der abfragt, ob die maus nach links oder rechts bewegt wird?
__________________
Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird.
Developer_X
Developer_X ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 30.06.2009, 18:23   #5 (permalink)
Stammbenutzer
CD-R 80
 
Registriert seit: 07.01.2007
Beiträge: 8.603
Abgegebene Danke: 0
Erhielt 145 Danke für 140 Beiträge
Alle Transforms, die du ausführen willst, kannst du in die "View" schreiben - es gibt keinen Grund für eine "ViewPoint".

Mausbewegungen kann man mit MouseBehaviours abfragen.
Marco13 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 30.06.2009, 18:24   #6 (permalink)
Stammbenutzer
Team JCupGames
Megabyte
Themenstarter
 
Benutzerbild von Developer_X
 
Registriert seit: 01.02.2009
Beiträge: 1.648
Abgegebene Danke: 19
Erhielt 5 Danke für 5 Beiträge
doch es gibt einen grund, ich will dass die TransformGroup ViewPoint durch den KeyLístener bewegt wird, hab ich da jetzt nicht ist aber so, zweites will ich dass View sich um ViewPoint dreht, wenn ich die maus bewege
__________________
Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird.
Developer_X
Developer_X ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 30.06.2009, 18:27   #7 (permalink)
Stammbenutzer
Team JCupGames
Megabyte
Themenstarter
 
Benutzerbild von Developer_X
 
Registriert seit: 01.02.2009
Beiträge: 1.648
Abgegebene Danke: 19
Erhielt 5 Danke für 5 Beiträge
Das man Maus bewegungen mit MouseBehaviors abfangen kann ist mir bewusst, ich würde sie aber gerne implementieren
__________________
Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird.
Developer_X
Developer_X ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 30.06.2009, 18:28   #8 (permalink)
Stammbenutzer
CD-R 80
 
Registriert seit: 07.01.2007
Beiträge: 8.603
Abgegebene Danke: 0
Erhielt 145 Danke für 140 Beiträge
Sinngemäß:

Transform3D transformVonDerTastatur = ... Wird mit der Tastatur verändert
Transform3D transformVonDerMaus = ... Wird mit der Maus verändert

Transform3D transformFürDieView = transformVonDerTastatur.mul(transformVonDerMaus );
u.getViewingPlatform().getViewPlatformTransform().setTransform(transformFürDieView );
Marco13 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 30.06.2009, 18:40   #9 (permalink)
Stammbenutzer
Team JCupGames
Megabyte
Themenstarter
 
Benutzerbild von Developer_X
 
Registriert seit: 01.02.2009
Beiträge: 1.648
Abgegebene Danke: 19
Erhielt 5 Danke für 5 Beiträge
gut danke schön, das mit dem "mul" hat mich weiter gebracht
doch ich habe immer noch 2 Probleme:
1.Problem
Jetzt bewegt sie seltsamerweise gar ncihts mehr wenn ich die maus beweg:
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
package Game1;
 
import java.awt.event.*;
import java.awt.*;
 
import javax.media.j3d.*;
import javax.swing.*;
import javax.vecmath.*;
 
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
 
@SuppressWarnings("serial")
public class Game3D21 extends JFrame implements KeyListener, MouseMotionListener
{
    //Attribute
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        
        float x,y,z;
        float rot;
        
        Transform3D viewPoint;
                
        BranchGroup X = new BranchGroup();
        
        Transform3D view;
        TransformGroup View;
        
        BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 1000.0);
 
        SimpleUniverse u;
        
    //Constructor
    public Game3D21()
    {
        super("Game3D21");
        //sets n' adds
        setSize(d);
        setUndecorated(true);       
        setLayout(new BorderLayout());
 
        addWindowListener(new WindowListener());
        
        BranchGroup scene = createScene();       
        GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
        Canvas3D canvas = new Canvas3D(config);
        add("Center", canvas);       
        canvas.addKeyListener(this);
        canvas.addMouseMotionListener(this);
        u = new SimpleUniverse(canvas);       
        u.addBranchGraph(scene);
 
        setView();
        
        setVisible(true);
    }
    
    //implement Methods
    public void keyPressed(KeyEvent arg0) 
    {       
        if(arg0.getKeyCode()==KeyEvent.VK_UP)
        {
            forward();
        }
        else if(arg0.getKeyCode()==KeyEvent.VK_DOWN)
        {
            backward();
        }
        else if(arg0.getKeyCode()==KeyEvent.VK_LEFT)
        {
            leftward();
        }
        else if(arg0.getKeyCode()==KeyEvent.VK_RIGHT)
        {
            rightward();
        }
    }
 
    public void keyReleased(KeyEvent arg0) 
    {       
    }
 
    public void keyTyped(KeyEvent arg0)
    {
    }
    
    //Most Important Methods!!!
    public void forward()
    {
        
    }
    public void backward()
    {
        
    }
    public void leftward()
    {
        
    }
    public void rightward()
    {
        
    }
 
    
    public void setView()
    {   
        viewPoint = new Transform3D();
        viewPoint.rotY(Math.toRadians(rot));
        viewPoint.setTranslation(new Vector3f(x,y,z));
       
        view = new Transform3D();
        view.mul(viewPoint );    
        view.setTranslation(new Vector3f(0,0,0.5f));
        u.getViewingPlatform().getViewPlatformTransform().setTransform(view);
    }
    
    public void mouseDragged(MouseEvent arg0)
    {       
    }
 
 
    public void mouseMoved(MouseEvent arg0) 
    {   
        
        double x = MouseInfo.getPointerInfo().getLocation().getX(); 
      //double y = MouseInfo.getPointerInfo().getLocation().getY();
        
        if(x<=d.width/2)
        {
            if(rot>=-45)
            {
            rot = rot - 0.1f;
            viewPoint.rotY(Math.toRadians(rot));
            view.mul(viewPoint);            
            }
            else
            {
                ;
            }
        }
        else if(x>d.width/2)
        {
            if(rot<=+45)
            {
            rot = rot + 0.1f;
            viewPoint.rotY(Math.toRadians(rot));
            view.mul(viewPoint);            
            }
            else
            {
                ;
            }
        }
 
    }
    
    //Main
    public static void main(String[]arg)
    {
        new Game3D21();
    }
 
    //3DGroups
    public BranchGroup createScene()
    {
        X = new BranchGroup();
        
        Transform3D b1 = new Transform3D();
        b1.setTranslation(new Vector3f(0,0,-2));
        TransformGroup B1 = new TransformGroup();
        B1.setTransform(b1);
        X.addChild(B1);
        B1.addChild(new Sphere(0.1f,null));
        
//////////////Lights
           Color3f lightColor = new Color3f(.3f,.3f,.3f);
           AmbientLight ambientLight= new AmbientLight(lightColor);
           ambientLight.setInfluencingBounds(bounds);
           X.addChild(ambientLight);
           DirectionalLight directionalLight = new DirectionalLight();
           directionalLight.setColor(lightColor);
           directionalLight.setInfluencingBounds(bounds);
           X.addChild(directionalLight);       
        
        return X;
    }
    
    //Classes
    class WindowListener extends WindowAdapter{public void windowClosing(WindowEvent e)
    {
        System.exit(0);
    }}
 
}
2.Problem,
ich will dass wenn die maus ein stückchen nach links geschoben wird, das float rot um eins addier wird, wenn es dann 45 erreicht hat, soll nichts geschehen, in Sachen addition
&&
ich will dass wenn die maus ein stückchen nach rechts geschoben wird, das float rot um eins subtrahiert wird, wenn es dann -45 erreicht hat, soll nichts geschehen, in Sachen Subtraktion

verstehst du?
Könntest du mir sagen was ich falsch mache und wie ich das realisieren könnte?
__________________
Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird.
Developer_X
Developer_X ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 30.06.2009, 19:16   #10 (permalink)
Stammbenutzer
Team JCupGames
Megabyte
Themenstarter
 
Benutzerbild von Developer_X
 
Registriert seit: 01.02.2009
Beiträge: 1.648
Abgegebene Danke: 19
Erhielt 5 Danke für 5 Beiträge
ist schon gut ich habs rausbekommen, danke, damit hab ich was neues gelernt, wirklich danke,
PS: ich habe aber immer noch ein problem
hier:
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
 
    public void mouseMoved(MouseEvent arg0) 
    {   
        int last = 0;
        
        double x = MouseInfo.getPointerInfo().getLocation().getX(); 
      //double y = MouseInfo.getPointerInfo().getLocation().getY();
        
        if(x>=last)
        {
            rot = rot+0.5f;
            view.rotY(Math.toRadians(rot));
            u.getViewingPlatform().getViewPlatformTransform().setTransform(view);  
                 
            last = (int) rot;
        }
        else if(x<=last)
        {
            rot = rot-0.5f;
            view.rotY(Math.toRadians(rot));
            u.getViewingPlatform().getViewPlatformTransform().setTransform(view);  
            
            last = (int) rot;
        }
 
    }
egal wo meine maus ist und was ich tue, der rot wird nur addiert nich subtrahiert.
__________________
Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird.
Developer_X
Developer_X ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 30.06.2009, 19:35   #11 (permalink)
Stammbenutzer
Team JCupGames
Megabyte
Themenstarter
 
Benutzerbild von Developer_X
 
Registriert seit: 01.02.2009
Beiträge: 1.648
Abgegebene Danke: 19
Erhielt 5 Danke für 5 Beiträge
und wenn ich die methode mul einsetzte, dann wird die methode setTranslation ganz und gar ignoriert
__________________
Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird.
Developer_X
Developer_X ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 30.06.2009, 21:40   #12 (permalink)
Stammbenutzer
CD-R 80
 
Registriert seit: 07.01.2007
Beiträge: 8.603
Abgegebene Danke: 0
Erhielt 145 Danke für 140 Beiträge
Lass' das mit der MouseInfo und PointerInfo (um Himmels willen, das hat ja das Potential das neue "getGraphics" zu werden ... ). Schau dir an, was man mit MouseBehaviors machen kann - da gibt es Beispiele dazu. Im Zweifelsfall kann man aber auch einen ganz normalen MouseMotionListener verwenden....
Marco13 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 01.07.2009, 15:46   #13 (permalink)
Stammbenutzer
Team JCupGames
Megabyte
Themenstarter
 
Benutzerbild von Developer_X
 
Registriert seit: 01.02.2009
Beiträge: 1.648
Abgegebene Danke: 19
Erhielt 5 Danke für 5 Beiträge
gut, ich werds mir mal anschauen,
aber du hast mir immer noch nichts zu meinem zweiten Problem gesagt:
Ich hab dir ne zeichnung angelegt, die zeigt, was ich will:

Der schwarze ball ist die Kamera, die immer auf den ball schaut.

Der rote Ball ist das zentrum, ist eine TransformGroup, die später mal eine Figur im spiel werden wird, diese wird mit den pfeiltasten bewegt,

Also durch Mausbewegungen soll der schwarze ball um den roten Ball gedreht werden.
Aber genauer gesagt, der rote ball befindet sich hinter dem schwarzen, wenn nun der rote gedreht wird, dreht sich der schwarze um die rote, verstehst du?

Wie soll ich das realisieren, bevor ich nämlich das mit den mausbewegungen machen, und mir die behaviors anschaue, muss ich erst einmal das machen, was ich will, verstehst du?

Kannst du mir da weiterhelfen?
Und mir eventuell sagen, was ich in der Methode setView ändern sollte?
Miniaturansicht angehängter Grafiken
Eine Frage zur ViewBesetzung-bild.jpg  
__________________
Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird.
Developer_X
Developer_X ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 01.07.2009, 17:36   #14 (permalink)
Stammbenutzer
CD-R 80
 
Registriert seit: 07.01.2007
Beiträge: 8.603
Abgegebene Danke: 0
Erhielt 145 Danke für 140 Beiträge
Was ich verstanden habe hätte man mit "Third Person Game" zusammenfassen können. Aber... was soll ich dazu sagen... ob ich Zeit und Lust habe, das gepostete Zeug mal zu compilieren ... mal sehen.
Marco13 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 01.07.2009, 18:05   #15 (permalink)
Stammbenutzer
Team JCupGames
Megabyte
Themenstarter
 
Benutzerbild von Developer_X
 
Registriert seit: 01.02.2009
Beiträge: 1.648
Abgegebene Danke: 19
Erhielt 5 Danke für 5 Beiträge
ok, ich kann so lang warten, bitte ich will dich zu nichts drängen,
versteh das bitte nicht falsch, aber könntest du mir schon in wenigen Tagen, ca. 4 vielleicht einen Lösung vorschlag geben?
__________________
Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird.
Developer_X
Developer_X ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 01.07.2009, 18:50   #16 (permalink)
Stammbenutzer
CD-R 80
 
Registriert seit: 07.01.2007
Beiträge: 8.603
Abgegebene Danke: 0
Erhielt 145 Danke für 140 Beiträge
Soll ich dir auch noch den Arsch hinterhertragen? Ich hatte es mir schon so oft vorgenommen, aber irgendwie schaff' ich es nicht, mir anzugewöhnen, in deinen Threads nicht mehr zu antworten. Ich sollte wirklich mal das mit der Ignore-Liste ausprobieren
Code:
// Von http://www.java-forum.org/spiele-und-multimedia-programmierung/85149-eine-frage-zur-viewbesetzung.html
//package Game1;

import java.awt.event.*;
import java.awt.*;

import javax.media.j3d.*;
import javax.swing.*;
import javax.vecmath.*;

import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;

@SuppressWarnings("serial")
public class Game3D21 extends JFrame implements KeyListener, MouseMotionListener
{
    //Attribute
        Dimension d = new Dimension(500,500); //Toolkit.getDefaultToolkit().getScreenSize();

        float x,y,z;
        float rot;

        //Transform3D viewPoint;

        BranchGroup X = new BranchGroup();

        //Transform3D view;
        //TransformGroup View;

        BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 1000.0);

        SimpleUniverse u;
        TransformGroup B1;

     Matrix4f sphereTransform = new Matrix4f();
     Matrix4f viewTransform = new Matrix4f();
     Vector3f relativeTranslation = new Vector3f();

     Point previousMousePosition = new Point();

    //Constructor
    public Game3D21()
    {
        super("Game3D21");
        //sets n' adds
        setSize(d);
        //setUndecorated(true);
        setLayout(new BorderLayout());

        addWindowListener(new WindowListener());

        sphereTransform.setIdentity();
        //sphereTransform.setTranslation(new Vector3f(0,0,-2));

        relativeTranslation = new Vector3f(0,0,2);

        viewTransform.setIdentity();

        BranchGroup scene = createScene();
        GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
        Canvas3D canvas = new Canvas3D(config);
        add("Center", canvas);
        canvas.addKeyListener(this);
        canvas.addMouseMotionListener(this);
        u = new SimpleUniverse(canvas);
        u.addBranchGraph(scene);

        //setView();

        updateView(0,0);


        setVisible(true);
    }

    //implement Methods
    public void keyPressed(KeyEvent arg0)
    {
        if(arg0.getKeyCode()==KeyEvent.VK_UP)
        {
            forward();
        }
        else if(arg0.getKeyCode()==KeyEvent.VK_DOWN)
        {
            backward();
        }
        else if(arg0.getKeyCode()==KeyEvent.VK_LEFT)
        {
            leftward();
        }
        else if(arg0.getKeyCode()==KeyEvent.VK_RIGHT)
        {
            rightward();
        }
    }

    public void keyReleased(KeyEvent arg0)
    {
    }

    public void keyTyped(KeyEvent arg0)
    {
    }

    //Most Important Methods!!!
    public void forward()
    {
        move(0, 0.01f,0);
    }
    public void backward()
    {
        move(0,-0.01f,0);
    }
    public void leftward()
    {
        move(-0.01f,0,0);
    }
    public void rightward()
    {
        move( 0.01f,0,0);
    }

    private void move(float dx, float dy, float dz)
    {
        Matrix4f transform = new Matrix4f();
        transform.setIdentity();
        transform.setTranslation(new Vector3f(dx,dy,dz));
        sphereTransform.mul(transform, sphereTransform);
        B1.setTransform(new Transform3D(sphereTransform));

        updateView(0,0);
    }


    /*
    public void setView()
    {
        viewPoint = new Transform3D();
        viewPoint.rotY(Math.toRadians(rot));
        viewPoint.setTranslation(new Vector3f(x,y,z));

        view = new Transform3D();
        view.mul(viewPoint );
        view.setTranslation(new Vector3f(0,0,0.5f));
        u.getViewingPlatform().getViewPlatformTransform().setTransform(view);
    }
    */

    public void mouseDragged(MouseEvent arg0)
    {
        float dx = arg0.getX() - previousMousePosition.x;
        float dy = arg0.getY() - previousMousePosition.y;

        updateView(dy/100.0f, dx/100.0f);

        previousMousePosition = arg0.getPoint();
    }


    public void mouseMoved(MouseEvent arg0)
    {


        previousMousePosition = arg0.getPoint();

    }

    private void updateView(float dx, float dy)
    {
        Matrix4f transform = new Matrix4f();
        transform.setIdentity();
        transform.rotX(dx);
        viewTransform.mul(transform, viewTransform);

        transform.setIdentity();
        transform.rotY(dy);
        viewTransform.mul(transform, viewTransform);

        Matrix4f fullTransform = new Matrix4f();
        fullTransform.setIdentity();

        fullTransform.mul(sphereTransform);
        fullTransform.mul(viewTransform);

        transform.setIdentity();
        transform.setTranslation(relativeTranslation);
        fullTransform.mul(transform);

        u.getViewingPlatform().getViewPlatformTransform().setTransform(new Transform3D(fullTransform));
    }




    //Main
    public static void main(String[]arg)
    {
        new Game3D21();
    }

    //3DGroups
    public BranchGroup createScene()
    {
        X = new BranchGroup();

        B1 = new TransformGroup();
        B1.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        B1.setTransform(new Transform3D(sphereTransform));
        X.addChild(B1);
        B1.addChild(new Sphere(0.1f,null));

//////////////Lights
           Color3f lightColor = new Color3f(.3f,.3f,.3f);
           AmbientLight ambientLight= new AmbientLight(lightColor);
           ambientLight.setInfluencingBounds(bounds);
           X.addChild(ambientLight);
           DirectionalLight directionalLight = new DirectionalLight();
           directionalLight.setColor(lightColor);
           directionalLight.setInfluencingBounds(bounds);
           X.addChild(directionalLight);

        return X;
    }

    //Classes
    class WindowListener extends WindowAdapter{public void windowClosing(WindowEvent e)
    {
        System.exit(0);
    }}

}
Marco13 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 01.07.2009, 19:22   #17 (permalink)
Stammbenutzer
Team JCupGames
Megabyte
Themenstarter
 
Benutzerbild von Developer_X
 
Registriert seit: 01.02.2009
Beiträge: 1.648
Abgegebene Danke: 19
Erhielt 5 Danke für 5 Beiträge
danke, aber
sorry ich hoffe du hast das nicht falsch verstanden,
ich danke dir wirklich sehr,
aber ich wollte nicht unhöflich erscheinen, verstehst du das?
Bitte versteh es nicht falsch
__________________
Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird.
Developer_X
Developer_X ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 01.07.2009, 22:13   #18 (permalink)
Stammbenutzer
CD-R 80
 
Registriert seit: 07.01.2007
Beiträge: 8.603
Abgegebene Danke: 0
Erhielt 145 Danke für 140 Beiträge
Ich neige dazu, Dinge so zu verstehen, wie sie gesagt werden, und auf Höflichkeit (im Klassischen Sinn) lege ich mal SOwas von keinen wert.
Marco13 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 02.07.2009, 07:08   #19 (permalink)
Stammbenutzer
Team JCupGames
Megabyte
Themenstarter
 
Benutzerbild von Developer_X
 
Registriert seit: 01.02.2009
Beiträge: 1.648
Abgegebene Danke: 19
Erhielt 5 Danke für 5 Beiträge
es tut mir leid, aber ich hab mich falsch ausgedrückt, es war meine Schuld, verzeihst du mir=?
__________________
Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird.
Developer_X
Developer_X ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 02.07.2009, 09:35   #20 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Benutzerbild von tuxedo
 
Registriert seit: 18.11.2004
Beiträge: 4.606
Abgegebene Danke: 5
Erhielt 33 Danke für 33 Beiträge
Man man man.. @DevX ... du hinterlässt gerade eine "schleimspur" das ist der Hammer...
__________________
SIMON, das einfach bessere RMI ...
-> Projektseite
-> Warum SIMON besser ist als RMI
-> Support-Forum
tuxedo ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort    

Lesezeichen

Latex Maths & Physics Editor ...

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
frage zu vererbung (super) Java Basics - Anfänger Themen 10 06.07.2009 18:44
Frage zur korrekten Nutzung von managed beans in JSF Web Tier 1 27.06.2008 01:16
Blöde(?) Frage zu Konstruktoren und set-Methoden daNny Java Basics - Anfänger Themen 3 13.02.2008 22:23
Simple Frage zu SWT 8ull23y3 AWT, Swing & SWT 10 09.02.2005 16:21
Design Frage (java sound) tassecafe Allgemeine Java-Themen 1 23.03.2004 10:31


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de