2011-02-01 65 views
3

我想畫一條線來指定java 3d中的點。在java3d中畫線

我該怎麼辦?

例如繪製一個立方體我們寫colorcube。

請幫幫我。

回答

4

使用LineArray類。用兩個頂點爲它創建一個對象(無論你想要它們在哪裏)並將其添加到Shape3D對象.i.e。 new Shape3D(lineArr)。 對於線陣列:

LineArray lineArr=new LineArray(2,LineArray.COORDINATES); 

然後:

lineArr.setCoordinate(0,new Point3f());... 

爲其他頂點做同樣的。

然後將shape3D對象添加到場景圖或Branchgroup

這應該做的伎倆。如下圖所示:(tuval1即)和第二公共類(即tuval7):

0

下面的Java代碼可以生成你的3D屏幕上線

首先,建立一個主類。

也看到此鏈接:http://www.itk.ilstu.edu/faculty/javila/ITk356/Java3D/geometry.htm#3.4.2點*類:

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(); 
    } 

} 
+0

你在這裏有什麼問題? – kittu 2016-02-25 15:12:16

1

這個工作對我來說,它繪製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);