6

次のコードを使用して、ユーザーの表示位置が座標に設定されている Java 3d で記述されたシーンがあります。

ViewingPlatform vp = simpleUniverse.getViewingPlatform();
TransformGroup steerTG = vp.getViewPlatformTransform();

Transform3D t3d = new Transform3D();
steerTG.getTransform(t3d);

t3d.lookAt(
        new Point3d(-5, 10, 25), new Point3d(0, 0, 0), new Vector3d(0, 1, 0));
t3d.invert();

steerTG.setTransform(t3d);

ここで、テキストなど、常に表示されるシーンの上にオーバーレイを配置する必要があります。私は次のことを試しましたが、役に立ちませんでした:

PlatformGeometry pg = new PlatformGeometry();
Text2D text = new Text2D("Text to display", Cell.BLACK, "Verdana", 18, 1);
pg.addChild(text);
simpleUniverse.getViewingPlatform().setPlatformGeometry(pg);

上記のコードを実行すると、テキストがまったく表示されません。誰でも助けてもらえますか?

4

1 に答える 1

4

問題は、ニア クリッピング プレーン内でカメラの真上にテキストを直接表示していることです。z 軸に沿って -1 を平行移動するには、このようなものが必要です。

    PlatformGeometry pg = new PlatformGeometry();

    TransformGroup objScale = new TransformGroup();
    Transform3D t3d = new Transform3D();
    t3d.setTranslation(new Vector3f(0f, 0f, -1f));
    objScale.setTransform(t3d);

    Text2D text = new Text2D("Text to display", Cell.BLACK, "Verdana", 18, 1);

    objScale.addChild(text);
    pg.addChild(objScale);

    simpleUniverse.getViewingPlatform().setPlatformGeometry(pg);

それが役立つことを願っています。

于 2009-08-21T03:43:34.477 に答える