Hi, ich habe mich mal an meinen ersten Thread in Java3D gewagt, da die Threads meiner Meinung nach eigentlich ziemlich praktisch sind,
ich will mit meinem Thread die x coordinate eines Transform3D's immer um eins erhöhen, nach einem zehntel einer sekunde,
außerdem habe ich die System.out.println-Methode in den Thread eingebaut, um immer die aktuelle Position der x coordinate zu bekommen, aber sie bewegt sich trotzdem nicht wieso?
@ADMIN:
ich hab diesmal wieder den Code genutzt, um mit highlight die TextStellen rot zu färben
ich will mit meinem Thread die x coordinate eines Transform3D's immer um eins erhöhen, nach einem zehntel einer sekunde,
außerdem habe ich die System.out.println-Methode in den Thread eingebaut, um immer die aktuelle Position der x coordinate zu bekommen, aber sie bewegt sich trotzdem nicht wieso?
Code:
import java.awt.Dimension;
import java.awt.GraphicsConfiguration;
import java.awt.Toolkit;
import javax.media.j3d.AmbientLight;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.swing.JFrame;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3d;
import javax.vecmath.Vector3f;
import com.sun.j3d.utils.geometry.Box;
import com.sun.j3d.utils.universe.SimpleUniverse;
public class Trailer_3 extends JFrame
{
float pos = 1;
SimpleUniverse u;
public Trailer_3()
{
Toolkit tk = Toolkit.getDefaultToolkit();
final Dimension d = tk.getScreenSize();
setSize(d);
setTitle("R.a.t.r.o.t.c.p.");
setUndecorated(true);
setVisible(true);
setLayout(null);
GraphicsConfiguration config1 = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas1 = new Canvas3D(config1);
canvas1.setBounds(0,0,d.width,d.height);
u = new SimpleUniverse(canvas1);
u.addBranchGraph(createSceneGraph1());
add(canvas1);
}
public BranchGroup createSceneGraph1()
{
BranchGroup BG = new BranchGroup();
///Lights
//1
AmbientLight L1 =new AmbientLight(new Color3f(0.8f,0.8f,0.8f));
Point3d p1 = new Point3d(0,0,0);
BoundingSphere LB1 =new BoundingSphere(p1,100000);
L1.setInfluencingBounds(LB1); BG.addChild(L1);
///Real World
Transform3D a = new Transform3D();
a.setTranslation(new Vector3d(0,0,0));
TransformGroup A = new TransformGroup();
A.setTransform(a);BG.addChild(A); A.addChild(new Box(20,0,0, null));
//////////
[highlight]
//View Initialisation
TransformGroup ViewTG = new TransformGroup();
ViewTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
final Transform3D ViewT3D = new Transform3D();
ViewTG=u.getViewingPlatform().getViewPlatformTransform();
ViewTG.getTransform(ViewT3D);
final Vector3f vct = new Vector3f(pos,0,0);
ViewT3D.setTranslation(vct);
ViewTG.setTransform(ViewT3D);
(new Thread(){@Override public void run(){while(!isInterrupted()){
pos = pos + 1;
System.out.println(vct.getX());
try{sleep(100);}catch(InterruptedException e){interrupt();}}}}).start();
[/highlight]
//////////
BG.compile();
return BG;
}
public static void main(String[]args)
{
new Trailer_3();
}
public static void warte(long millis){try{Thread.sleep(millis);}catch(InterruptedException e){}}
}
ich hab diesmal wieder den Code genutzt, um mit highlight die TextStellen rot zu färben
Zuletzt bearbeitet: