![]() |
|
| #1 (permalink) | |||
|
Stammbenutzer
Team JCupGames
Megabyte Registriert seit: 01.02.2009
Beiträge: 1.648
Abgegebene Danke: 19
Erhielt 5 Danke für 5 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. Developer_X |
||
|
|
|
| #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:
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.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:
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 |
||
|
|
|
| #4 (permalink) | |
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte 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 |
|
|
|
| #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. |
|
|
|
| #6 (permalink) | |
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte 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 |
|
|
|
| #7 (permalink) | |
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte 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 |
|
|
|
| #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 ); |
|
|
|
| #9 (permalink) | |||
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte 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:
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 |
||
|
|
|
| #10 (permalink) | |||
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte 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:
__________________
Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. Developer_X |
||
|
|
|
| #11 (permalink) | |
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte 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 |
|
|
|
| #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....
|
|
|
|
| #13 (permalink) | |
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte 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?
__________________
Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. Developer_X |
|
|
|
| #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.
|
|
|
|
| #15 (permalink) | |
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte 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 |
|
|
|
| #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);
}}
}
|
|
|
|
| #17 (permalink) | |
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte 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 |
|
|
|
| #19 (permalink) | |
|
Stammbenutzer
Team JCupGames
Themenstarter
Megabyte 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 |
|
|
|
| #20 (permalink) | |
|
Stammbenutzer
Viertel Gigabyte
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 |
|
|
|
|
| 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 |