![]() |
|
| #1 (permalink) | |||
|
Stammbenutzer
Team JCupGames
Megabyte Registriert seit: 01.02.2009
Beiträge: 1.446
Abgegebene Danke: 2
Erhielt 10 Danke für 10 Beiträge
|
HI, ich hab eine frage an euch, wie kann ich
die folgende Methode in mein Java3D Programmeinbauen, ohne dass folgende Fehlermeldung kommt?
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. - Kevin Riehl |
||
|
|
|
| #2 (permalink) | |||
|
Stammbenutzer
CD-R 80
Registriert seit: 07.01.2007
Beiträge: 9.322
Abgegebene Danke: 0
Erhielt 287 Danke für 278 Beiträge
|
Da gibt's fast nur eine Möglichkeit:
Ansonsten müßtest du die Methode so ändern, dass nicht ein Knoten, der schon ein parent hat, zu einen anderen hinzugefügt wird. |
||
|
|
|
| #3 (permalink) | |||
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte Registriert seit: 01.02.2009
Beiträge: 1.446
Abgegebene Danke: 2
Erhielt 10 Danke für 10 Beiträge
|
ich habs versucht, mit dem zwischenSchritt TransView
geht aber auch nicht, hier mal mein gesamter Code:
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. - Kevin Riehl |
||
|
|
|
| #4 (permalink) | |
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte Registriert seit: 01.02.2009
Beiträge: 1.446
Abgegebene Danke: 2
Erhielt 10 Danke für 10 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. - Kevin Riehl |
|
|
|
| #5 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 07.01.2007
Beiträge: 9.322
Abgegebene Danke: 0
Erhielt 287 Danke für 278 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. |
|
|
|
| #6 (permalink) | |
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte Registriert seit: 01.02.2009
Beiträge: 1.446
Abgegebene Danke: 2
Erhielt 10 Danke für 10 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. - Kevin Riehl |
|
|
|
| #7 (permalink) | |
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte Registriert seit: 01.02.2009
Beiträge: 1.446
Abgegebene Danke: 2
Erhielt 10 Danke für 10 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. - Kevin Riehl |
|
|
|
| #8 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 07.01.2007
Beiträge: 9.322
Abgegebene Danke: 0
Erhielt 287 Danke für 278 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 ); |
|
|
|
| #9 (permalink) | |||
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte Registriert seit: 01.02.2009
Beiträge: 1.446
Abgegebene Danke: 2
Erhielt 10 Danke für 10 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:
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. - Kevin Riehl |
||
|
|
|
| #10 (permalink) | |||
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte Registriert seit: 01.02.2009
Beiträge: 1.446
Abgegebene Danke: 2
Erhielt 10 Danke für 10 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:
__________________
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. - Kevin Riehl |
||
|
|
|
| #11 (permalink) | |
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte Registriert seit: 01.02.2009
Beiträge: 1.446
Abgegebene Danke: 2
Erhielt 10 Danke für 10 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. - Kevin Riehl |
|
|
|
| #12 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 07.01.2007
Beiträge: 9.322
Abgegebene Danke: 0
Erhielt 287 Danke für 278 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....
|
|
|
|
| #13 (permalink) | |
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte Registriert seit: 01.02.2009
Beiträge: 1.446
Abgegebene Danke: 2
Erhielt 10 Danke für 10 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?
__________________
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. - Kevin Riehl |
|
|
|
| #14 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 07.01.2007
Beiträge: 9.322
Abgegebene Danke: 0
Erhielt 287 Danke für 278 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.
|
|
|
|
| #15 (permalink) | |
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte Registriert seit: 01.02.2009
Beiträge: 1.446
Abgegebene Danke: 2
Erhielt 10 Danke für 10 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. - Kevin Riehl |
|
|
|
| #16 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 07.01.2007
Beiträge: 9.322
Abgegebene Danke: 0
Erhielt 287 Danke für 278 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);
}}
}
|
|
|
|
| #17 (permalink) | |
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte Registriert seit: 01.02.2009
Beiträge: 1.446
Abgegebene Danke: 2
Erhielt 10 Danke für 10 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. - Kevin Riehl |
|
|
|
| #19 (permalink) | |
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte Registriert seit: 01.02.2009
Beiträge: 1.446
Abgegebene Danke: 2
Erhielt 10 Danke für 10 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. - Kevin Riehl |
|
|
|
| #20 (permalink) | |
|
Stammbenutzer
Viertel Gigabyte
Registriert seit: 18.11.2004
Beiträge: 4.658
Abgegebene Danke: 7
Erhielt 58 Danke für 58 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 |
|
|
|
|
| Lesezeichen |
Latex Maths & Physics Editor ...
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ä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 |