我希望在Java 3D中指定两个点之间画一条线。
请问如何实现?
例如,要画一个立方体,我们可以使用colorcube命令。
请帮助我。
请问如何实现?
例如,要画一个立方体,我们可以使用colorcube命令。
请帮助我。
使用LineArray
类。创建一个具有两个顶点(无论您想要它们在哪里)的对象,并将其添加到一个Shape3D对象中,即new Shape3D(lineArr)
。
关于线条数组:
LineArray lineArr=new LineArray(2,LineArray.COORDINATES);
lineArr.setCoordinate(0,new Point3f());...
将同样的操作用于另一个顶点。
然后将 shape3D
对象添加到场景图或 Branchgroup
中。
这样就完成了。
import javax.media.j3d.Appearance;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.GeometryArray;
import javax.media.j3d.LineStripArray;
import javax.media.j3d.Shape3D;
import javax.vecmath.Point3d;
import com.sun.j3d.utils.universe.SimpleUniverse;
public class tuval7 {
public tuval7(){
SimpleUniverse u=new SimpleUniverse();
BranchGroup group=new BranchGroup();
Point3d coords[] = new Point3d[4];
Appearance app=new Appearance();
coords[0] = new Point3d(-0.5d, -0.2d, 0.1d);
coords[1] = new Point3d(-0.2d, 0.1d, 0.0d);
coords[2] = new Point3d(0.2d, -0.3d, 0.1d);
coords[3] = new Point3d(0.3d, 0.5d, 0.10d);
int vertexCounts[] = {4};
LineStripArray lines = new LineStripArray(4,
GeometryArray.COORDINATES, vertexCounts);
lines.setCoordinates(0, coords);
Shape3D shape=new Shape3D(lines , app);
group.addChild(shape);
u.addBranchGraph(group);
u.getViewingPlatform().setNominalViewingTransform();
}
}
public class tuval1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
new tuval7();
}
}
这对我有效,它绘制了x轴:
LineArray lineX = new LineArray(2, LineArray.COORDINATES);
lineX.setCoordinate(0, new Point3f(-100.0f, 0.0f, 0.0f));
lineX.setCoordinate(1, new Point3f(100.0f, 0.0f, 0.0f));
scene.addChild(new Shape3D(lineX));
Appearance appearanceGreen = new Appearance();
ColoringAttributes coloringAttributesGreen = new ColoringAttributes();
coloringAttributesGreen.setColor(new Color3f(Color.green));
appearanceGreen.setColoringAttributes(coloringAttributesGreen);
Shape3D shapeLine = new Shape3D(lineX, appearanceGreen);
scene.addChild(shapeLine);