JavaFX 2D shapes in 3D space

随声附和 提交于 2019-12-11 02:19:48

问题


I know that if I rotate an object, which extends javafx.scene.shape.Shape, I can transform it into 3D space, even though it was primarily designed to be in 2D (at least as far as I know).

Let's say I have a 3D scene (perspective camera and depth buffer are used), where various MeshViews occur. Some are used for areas, others for lines. In both cases those shapes must be triangulated in order to draw them with a TriangleMesh, which is often nontrivial.

Now when I change the drawing of these lines to use the Polyline class, the performance collapse is horrible and there a strange artefacts. I thought I could benefit from the fact, that a polyline has less vertices and the developer doesn't have to triangulate programmatically.

Is it discouraged to use shapes extending javafx.scene.shape.Shape within 3D space? How're they drawn internally?


回答1:


If the question is "should I use 2D Shape objects in 3D space?" in JavaFX then the answer is No because you will get all terrible performance that you are seeing. However it sounds like you are trying to make up for JavaFX's lack of a 3D PolyLine object using 2D objects and rotating them in 3D space. If that is true, instead use the free open-source F(X)yz library:

http://birdasaur.github.io/FXyz/

For example the PolyLine3D class which allows you to simply specify a list of Point3Ds and it will connect them for you:

/src/org/fxyz/shapes/composites/PolyLine3D.java

and you can see example code on how to use it in the test directory:

/src/org/fxyz/tests/PolyLine3DTest.java



来源:https://stackoverflow.com/questions/23737119/javafx-2d-shapes-in-3d-space

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!