[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:00249] 画面に平行な Text
今度新しく登録させていただきました中西と申します。
講義の課題で使うため、Java3Dを勉強しています。
よろしくお願いします。
各ノードにテキストラベルがついた木構造をY軸中心に回転させたい
のですが、その際回転によってテキストが読めなくなるのを防ぐため
Text2DではなくOrientedShape3Dを使うことにしました。
これで常に画面に平行な状態でテキストが表示されることを期待して
いたのですが、実際には原点から(X方向に)離れたところにある
テキストは斜めにゆがんで表示されてしまいます。
恐らく視点と物体の距離が短いためだと思うのですが、距離を
長くすると肝心の物体が小さくて見えなくなってしまうため
困っています。
どうにかして、常に画面に平行なテキストを表示する方法は
ないでしょうか?
テキストを表示するために下のようなクラスを作りました。
class OrientedText2D extends OrientedShape3D {
public OrientedText2D(String text, Color3f color,
String fontFamily, int fontSize, int fontStyle) {
super(new Text3D(), new Appearance(),
OrientedShape3D.ROTATE_ABOUT_AXIS,
new Vector3f(0.0f, 1.0f, 0.0f));
Text2D text2D = new Text2D(text, color,
fontFamily, fontSize, fontStyle);
this.removeAllGeometries();
// Text2Dから取り出したGeometryとAppearanceをOrientedShape3D
// 貼り付ける
this.addGeometry(text2D.getGeometry());
this.setAppearance(text2D.getAppearance());
}
}