If the property 'vertexFormat' is an attribute, e.g.
<TriangleMesh vertexFormat="POINT_NORMAL_TEXCOORD">,
TriangleMeshBuilder works fine.
If it is an element a ClassCastException will be thrown
when the following test case is loaded into the 3DViewer
(com.javafx.experiments.jfx3dviewer.Jfx3dViewerApp).
VertexFormatTestCase.fxml
<?xml version="1.0" encoding="utf-8"?>
<?import javafx.scene.shape.MeshView?>
<?import javafx.scene.shape.TriangleMesh?>
<?import javafx.scene.shape.VertexFormat?>
<MeshView xmlns:fx="http://javafx.com/fxml">
<mesh>
<TriangleMesh>
<vertexFormat><VertexFormat fx:constant="POINT_NORMAL_TEXCOORD"/></vertexFormat>
<points>0.0,0.0,0.0, 2.0,0.0,0.0, 1.0,-2.0,0.0</points>
<normals>0,0,-1</normals>
<texCoords>0.0, 0.0</texCoords>
<faces>0,0,0, 1,0,0, 2,0,0</faces>
</TriangleMesh>
</mesh>
</MeshView>
Caused by:
java.lang.ClassCastException: javafx.scene.shape.VertexFormat cannot be cast to java.lang.String
at com.sun.javafx.fxml.builder.TriangleMeshBuilder.put(TriangleMeshBuilder.java:106)
at com.sun.javafx.fxml.builder.TriangleMeshBuilder.put(TriangleMeshBuilder.java:37)
at javafx.fxml.FXMLLoader$PropertyElement.set(FXMLLoader.java:1413)
at javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:790)
at javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2823)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2532)
<TriangleMesh vertexFormat="POINT_NORMAL_TEXCOORD">,
TriangleMeshBuilder works fine.
If it is an element a ClassCastException will be thrown
when the following test case is loaded into the 3DViewer
(com.javafx.experiments.jfx3dviewer.Jfx3dViewerApp).
VertexFormatTestCase.fxml
<?xml version="1.0" encoding="utf-8"?>
<?import javafx.scene.shape.MeshView?>
<?import javafx.scene.shape.TriangleMesh?>
<?import javafx.scene.shape.VertexFormat?>
<MeshView xmlns:fx="http://javafx.com/fxml">
<mesh>
<TriangleMesh>
<vertexFormat><VertexFormat fx:constant="POINT_NORMAL_TEXCOORD"/></vertexFormat>
<points>0.0,0.0,0.0, 2.0,0.0,0.0, 1.0,-2.0,0.0</points>
<normals>0,0,-1</normals>
<texCoords>0.0, 0.0</texCoords>
<faces>0,0,0, 1,0,0, 2,0,0</faces>
</TriangleMesh>
</mesh>
</MeshView>
Caused by:
java.lang.ClassCastException: javafx.scene.shape.VertexFormat cannot be cast to java.lang.String
at com.sun.javafx.fxml.builder.TriangleMeshBuilder.put(TriangleMeshBuilder.java:106)
at com.sun.javafx.fxml.builder.TriangleMeshBuilder.put(TriangleMeshBuilder.java:37)
at javafx.fxml.FXMLLoader$PropertyElement.set(FXMLLoader.java:1413)
at javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:790)
at javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2823)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2532)
- relates to
-
JDK-8092576 FXML TriangleMeshBuilder doesn't support normals and VertexFormat
-
- Resolved
-