1

我正在 Netbeans 上创建一个 java 应用程序,我已经研究了如何将 X3D 模型导入到 java 应用程序中,人们一直对我们说的是 Xj3D,但我还没有看到如何使用 Xj3D 以及如何与java一起使用。

我的应用程序是查看 java 项目中的 X3D 模型,如果对如何在 Netbeans 中使用 Xj3D 提供任何帮助,我们将不胜感激。

4

1 回答 1

1

xj3d 项目站点包含一个教程部分,您将在其中找到一个介绍性教程,其中显示了如何将浏览器组件添加到 GUI,然后加载场景

以下代码正是这样做的:

package xj3dtest;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import javax.swing.JFrame;
import org.web3d.x3d.sai.Browser;
import org.web3d.x3d.sai.BrowserFactory;
import org.web3d.x3d.sai.X3DComponent;
import org.web3d.x3d.sai.X3DScene;

public class Xj3DTest extends JFrame {

    public Xj3DTest(String title) {

        super(title);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        X3DComponent x3dComponent = BrowserFactory.createX3DComponent(null);

        Browser browser = x3dComponent.getBrowser();

        Component browserComponent = (Component) x3dComponent.getImplementation();

        Container cp = getContentPane();
        cp.setLayout(new BorderLayout());
        cp.add(browserComponent, BorderLayout.CENTER);

        X3DScene scene = browser.createX3DFromURL(new String[] {"test.x3dv"});

        browser.replaceWorld(scene);
    }

    public static void main(String[] args) {
        Xj3DTest frame = new Xj3DTest("Xj3D test");
        frame.setSize(640, 480);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

它会加载一个“test.x3dv”文件,其中可以包含您喜欢的任何内容。我为您的初始实验建议一些简单的东西,例如(旋转立方体):

#X3D V3.0 utf8

PROFILE Interactive

DEF TS TimeSensor {
  cycleInterval 3
  loop TRUE
}

DEF TG Transform {
  rotation 0 1 0 0
  children Shape {
    geometry Box {}
    appearance Appearance {
      material DEF MAT Material {
        diffuseColor 1 0 0
      }
    }
  }
}

DEF OI OrientationInterpolator {
  key [ 0 0.5 1 ]
  keyValue [
     0 1 0 0
     0 1 0 3.14
     0 1 0 6.28
  ]
}

ROUTE TS.fraction_changed TO OI.set_fraction
ROUTE OI.value_changed TO TG.rotation

要编译/运行它(使用 Netbeans 或其他方式),您需要:

  • 将所有 xj3d jar(在 xj3d 目录的 jars 子目录下找到)放在类路径上(在 Netbeans 中创建一个新库来执行此操作),
  • 指定 -Djava.library.path VM 参数以包含 xj3d 目录的 bin 子目录的完整路径(否则您将收到“java.lang.UnsatisfiedLinkError: no jogl in java.library.path”异常)。

我建议您下载并使用最新的开发版本(但请注意,它自 2010 年以来尚未更新)。

于 2015-11-17T13:03:28.643 回答