Java3D:我可以';我看不到我的三角形

Java3D:我可以';我看不到我的三角形,java,java-3d,Java,Java 3d,我对Java3D非常陌生,尝试显示一个三角形,但它没有显示,框架是完全黑色的。 如果我加上 它显示了一个中间的红场(一般来说,形状应该是工作的,不是吗?) 我真的不知道问题是在于三角形本身的构造还是视图的其他部分,例如,三角形不对焦、太小、未照亮等。三角形光线中的多边形是否必须由光源照亮,或者它们是否显示为亚光对象 代码如下: import com.sun.j3d.utils.geometry.ColorCube; import com.sun.j3d.utils.geometry.Geomet

我对Java3D非常陌生,尝试显示一个三角形,但它没有显示,框架是完全黑色的。 如果我加上

它显示了一个中间的红场(一般来说,形状应该是工作的,不是吗?) 我真的不知道问题是在于三角形本身的构造还是视图的其他部分,例如,三角形不对焦、太小、未照亮等。三角形光线中的多边形是否必须由光源照亮,或者它们是否显示为亚光对象

代码如下:

import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.geometry.GeometryInfo;
import com.sun.j3d.utils.geometry.NormalGenerator;
import com.sun.j3d.utils.geometry.Sphere;
import com.sun.j3d.utils.universe.SimpleUniverse;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import javax.swing.JFrame;
import javax.media.j3d.*;
import javax.vecmath.Color3f;
import javax.vecmath.Color4f;
import javax.vecmath.Point3d;
import javax.vecmath.Point3f;
import javax.vecmath.Vector3f;

public class Simulator extends Frame {

Point3f[] testTrianglePoints = {  
                                    new Point3f(0.0f ,0.0f, 1.0f),
                                    new Point3f(0.0f, 0.0f, 1.2f),
                                    new Point3f(0.2f, 0.2f, 1.2f)}; 

    Simulator() {
        System.out.println("Simulator window initiated");

    }

    public void run() {
        SimpleUniverse u = new SimpleUniverse();
        BranchGroup bg = new BranchGroup();

        //bg.addChild(new ColorCube(0.3));

        TriangleArray t_geo = new TriangleArray(9, TriangleArray.COORDINATES);
        t_geo.setCoordinates(0,testTrianglePoints);
        GeometryArray t_geoArray = (new GeometryInfo(t_geo)).getGeometryArray();
        Shape3D t_shape = new Shape3D(t_geoArray,new Appearance()); 
        bg.addChild(t_shape);

        u.addBranchGraph(bg);
        u.getViewingPlatform().setNominalViewingTransform();

    }


}
`

将材质设置为您的外观,如示例“PyramidExample”:我假设您使用Java3D 1.6.0-Final。将材质设置为您的外观,如示例“PyramidExample”:我假设您使用Java3D 1.6.0-Final。
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.geometry.GeometryInfo;
import com.sun.j3d.utils.geometry.NormalGenerator;
import com.sun.j3d.utils.geometry.Sphere;
import com.sun.j3d.utils.universe.SimpleUniverse;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import javax.swing.JFrame;
import javax.media.j3d.*;
import javax.vecmath.Color3f;
import javax.vecmath.Color4f;
import javax.vecmath.Point3d;
import javax.vecmath.Point3f;
import javax.vecmath.Vector3f;

public class Simulator extends Frame {

Point3f[] testTrianglePoints = {  
                                    new Point3f(0.0f ,0.0f, 1.0f),
                                    new Point3f(0.0f, 0.0f, 1.2f),
                                    new Point3f(0.2f, 0.2f, 1.2f)}; 

    Simulator() {
        System.out.println("Simulator window initiated");

    }

    public void run() {
        SimpleUniverse u = new SimpleUniverse();
        BranchGroup bg = new BranchGroup();

        //bg.addChild(new ColorCube(0.3));

        TriangleArray t_geo = new TriangleArray(9, TriangleArray.COORDINATES);
        t_geo.setCoordinates(0,testTrianglePoints);
        GeometryArray t_geoArray = (new GeometryInfo(t_geo)).getGeometryArray();
        Shape3D t_shape = new Shape3D(t_geoArray,new Appearance()); 
        bg.addChild(t_shape);

        u.addBranchGraph(bg);
        u.getViewingPlatform().setNominalViewingTransform();

    }


}
`