Java 3D到JavaFX 8的转换

时间:2014-07-21 08:57:10

标签: javafx javafx-8 java-3d

我有一个用Java 3D编写的应用程序。由于Java 3D现在几乎已经死了,我正在考虑将代码转换为JavaFX(JavaFX 8支持3D对象)。

问题是将Java 3D代码转换为Java FX代码是否相对简单? JavaFX中是否有直接的Java 3D方法,或者它更像是对代码的全面重新设计?

以下是Java 3D代码中使用的一些软件包列表:

  • javax.media.j3d.Alpha;
  • javax.media.j3d.Appearance;
  • javax.media.j3d.Behavior;
  • javax.media.j3d.BoundingSphere;
  • javax.media.j3d.BranchGroup;
  • javax.media.j3d.Canvas3D;
  • javax.media.j3d.GeometryArray;
  • javax.media.j3d.LineArray;
  • javax.media.j3d.PointLight;
  • javax.media.j3d.Shape3D;
  • javax.media.j3d.Switch;
  • javax.media.j3d.Transform3D;
  • javax.media.j3d.TransformGroup;
  • javax.media.j3d.WakeupOnElapsedFrames;
  • javax.media.j3d.WakeupOnElapsedTime;
  • javax.vecmath.Matrix4f;
  • javax.vecmath.Vector3d;
  • javax.vecmath.Vector3f;

2 个答案:

答案 0 :(得分:1)

Java 3D并没有死,你完全错了,因为你可以看到here。有很多选择的scenegraph API比JavaFX 3D API更强大,我的拙见特别差。

答案 1 :(得分:1)

我不知道gouessej对Java 3D没有死的说法,Java3D将来不会有功能开发。 但是他/她是正确的,基础JavaFX 3D API缺乏功能。

如果要将应用程序移植到JavaFX 3D,则必须重写渲染部分以匹配新的JavaFX API。从您提供的列表中,只有PointLight和Shape3D具有DIRECT对应物。从8u40开始,Alpha透明度是一个未记录的无法支持的功能,它将被编译到Java 9的官方版本中.F(X)yz团队有一个演示它的工作得很好但我们不得不从源代码重新编译平台;-)。

你并不孤单,现在有免费的开源第三方支持通过F(X)yz :(无耻的插件....)

http://www.fxyz3d.org