我正在尝试使用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
的图像这是预期的结果