Achsenkreuzszene

Status
Nicht offen für weitere Antworten.

andy0566

Mitglied
hat vielleicht einer eine Idee wie man in einer Achsenkreuzszene(X,Y,Z) am "positiven" Ende der Linien jeweils eine einfache Pfeilspitze modellieren kann?

Code:
import java.applet.Applet;
import java.awt.*;

import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.behaviors.vp.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;

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

public class LinienSample extends Applet{
    public BranchGroup createSceneGraph(){
        BranchGroup objRoot=new BranchGroup();
        
        Background bg=new Background(new Color3f(0.4f,0.2f,0.8f));
        bg.setApplicationBounds(new BoundingSphere());
        objRoot.addChild(bg);
        
        final Color3f red=new Color3f(1.0f,0.0f,0.0f); 
        final Color3f green=new Color3f(0.0f,1.0f,0.0f);
        final Color3f blue=new Color3f(0.0f,0.0f,1.0f);
        
        LineArray axisX=new LineArray(2,LineArray.COORDINATES);
        axisX.setCoordinate(0,new Point3f(-1.0f,0.0f,0.0f));
        axisX.setCoordinate(1,new Point3f(1.0f,0.0f,0.0f));
        TransformGroup tg1=new TransformGroup();
        Shape3D s3d=new Shape3D(axisX);
        
        Appearance app=new Appearance();
        
        Material m=new Material();
        m.setEmissiveColor(red);
        app.setMaterial(m);
        app.setTransparencyAttributes(new TransparencyAttributes(TransparencyAttributes.NICEST,0.4f));
        s3d.setAppearance(app);
        tg1.addChild(new Box(0.2f,0.3f,0.4f,app));
        tg1.addChild(s3d);
        objRoot.addChild(tg1);
        
        LineArray axisY=new LineArray(2,LineArray.COORDINATES|LineArray.COLOR_3);
        axisY.setCoordinate(0,new Point3f(0.0f,-1.0f,0.0f));
        axisY.setCoordinate(1,new Point3f(0.0f,1.0f,0.0f));
        axisY.setColor(0,green);
        axisY.setColor(1,blue);
        objRoot.addChild(new Shape3D(axisY));
        
        LineArray axisZ=new LineArray(2,LineArray.COORDINATES|LineArray.COLOR_3);
        axisZ.setCoordinate(0,new Point3f(0.0f,0.0f,-1.0f));
        axisZ.setCoordinate(1,new Point3f(0.0f,0.0f,1.0f));
        axisZ.setColor(0,blue);
        axisZ.setColor(1,red);
        objRoot.addChild(new Shape3D(axisZ));
        
        return objRoot;
    }
    public LinienSample(){
        setLayout(new BorderLayout());
        GraphicsConfiguration config=
            SimpleUniverse.getPreferredConfiguration();
        Canvas3D c=new Canvas3D(config);
        add("Center",c);
        BranchGroup scene=createSceneGraph();
        scene.compile();
        SimpleUniverse su=new SimpleUniverse(c);
        su.getViewingPlatform().setNominalViewingTransform();
        OrbitBehavior orbit=new OrbitBehavior(c,OrbitBehavior.REVERSE_ALL);
        orbit.setSchedulingBounds(new BoundingSphere());
        su.getViewingPlatform().setViewPlatformBehavior(orbit);
        su.addBranchGraph(scene);
        
    }
    public static void main(String[ ]args){
        new MainFrame(new LinienSample(),400,300);
    }
}
 

Kerberus

Bekanntes Mitglied
Wie wär es mit einem Kegel?
(Habe keine Ahnung von Java3D, aber das müsste sicher zu realisieren sein.)
 

Illuvatar

Top Contributor
Das wird dann aber schon wieder bissle komplizierter, da braucht man dann wohl schon wieder ein IndexedTriangleArray.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben