俺言語。

自分にしか理解できない言語で書かれた備忘録

【バグ?】Text2Dの文字が動的に変更できない。

コンストラクタで↓を実行
  myText2D = new Text2D(nowTimeString, new Color3f(1.0f, 1.0f, 1.0f),
      "Monospaced", 16, Font.BOLD);

スレッド等でテキスト書き換えを実行すると、、、
  countCarMove++;
  System.out.println(countCarMove);
  nowTimeString = Integer.toString(countCarMove);
  myText2D.setString(nowTimeString);

capabilityビットのエラーっぽいものが発生。
  Exception in thread "Thread-4" javax.media.j3d.CapabilityNotSetException:
  Appearance: no capability to set texture

    at javax.media.j3d.Appearance.setTexture(Appearance.java:551)
    at com.sun.j3d.utils.geometry.Text2D.setString(Text2D.java:151)

Text2dのcapailityBitにtexture変更許可が無いので
  Appearance text2Dappearance = new Appearance();
  text2Dappearance.setCapability(Appearance.ALLOW_TEXTURE_WRITE);
  myText2D.setAppearance(text2Dappearance);
Appearanceクラスを作ってText2DのsetAppearanceで設定するも、、、
  Exception in thread "Thread-4" java.lang.NullPointerException
   at com.sun.j3d.utils.geometry.Text2D.setString(Text2D.java:121)
ぬるぽ発生。。

webで探すと
Java 3D 1.2.1_04 API Known Issues/Bugs」
・4416995 Text2D.setString(String) restores filter setting default values
setStringにバグが残っているのか??

動的に変えるには新たにノードの動的変更を出来るようにして
Text2Dを新しくインスタンス化するしかない模様。