在Java中使用JReality创建3D文本

时间:2018-08-07 10:21:36

标签: pdf 3d itext u3d

我正在尝试使用JReality创建3D文本。

首先,我要创建一个PointSetFactory,其中包含point(1,0,0)。 然后,我在该点添加文本“ Tex”。然后,我根据该几何图形创建一个PDF文件。但是,我只能得到要点,而不能得到文本。 (见图(2))知道为什么吗?

我也曾尝试使用此库的文档,但是该示例似乎也不起作用。 the Documentation of the 3D Text in JReality。 我应该从文档中的程序获得的结果如图3所示。

@SuppressWarnings("javadoc")

公共类ASD {

public static String RESOURCE        = "D:\\skalierung.U3D";
public static String RESULT          ="D:\\skalierungpdf.pdf";



public static void main(String[] args) throws DocumentException, IOException {
    /////////////
    IndexedFaceSet ifs = Primitives.icosahedron();


    SceneGraphComponent geometryNode = new SceneGraphComponent("TexTextX");
  //  geometryNode.setGeometry(ifs);

    PointSetFactory psf_x = new PointSetFactory();
    double [][] vertice_x = new double[][] { {1, 0, 0} };
    psf_x.setVertexCount( vertice_x.length );
    psf_x.setVertexCoordinates( vertice_x );
    psf_x.update();


    PointSet ps_x = psf_x.getPointSet();
    int n_x=ps_x.getNumPoints();
    String[] label_x = new String[n_x];
    label_x[0] = "Tex";
    ps_x.setVertexAttributes(Attribute.LABELS, StorageModel.STRING_ARRAY.createReadOnly(label_x));
    SceneGraphComponent text_x = new SceneGraphComponent();
    text_x.setName("TexTextX");
    text_x.setGeometry(ps_x);
    Appearance text_xAp = new Appearance();
    text_xAp.setAttribute(CommonAttributes.POINT_RADIUS,        10.0);
    text_xAp.setAttribute(CommonAttributes.POINT_SIZE,           10.0);
    text_xAp.setAttribute(CommonAttributes.VERTEX_DRAW,          true);
    DefaultGeometryShader dgs_x = ShaderUtility.createDefaultGeometryShader(text_xAp, false);
    dgs_x.setShowFaces(false);
    dgs_x.setShowLines(false);
    dgs_x.setShowPoints(true);
    DefaultTextShader pts_x = (DefaultTextShader) ((DefaultPointShader)dgs_x.getPointShader()).getTextShader();
    pts_x.setDiffuseColor(Color.RED);
    double[] offset_x = new double[]{-.001,0,0};
    pts_x.setOffset(offset_x);
    Double scale_x = new Double(10);
    pts_x.setScale(.75*scale_x);
    java.awt.Font f_x = new java.awt.Font("Arial Bold", Font.ITALIC, 100);
    pts_x.setFont(f_x);
    text_x.setAppearance(text_xAp);
    geometryNode.addChild(text_x);


    try {
        FileOutputStream u3dFileOutputStream = new FileOutputStream(RESOURCE);
        WriterU3D.write(new JrScene(geometryNode), u3dFileOutputStream);
        u3dFileOutputStream.close();
    } catch(Exception exception){
        exception.printStackTrace();
    }



    new Main().createPdf (RESULT);
}

这是Point this is the image of the Point

的图像

这是预期的结果this is the expected result

0 个答案:

没有答案