title Acerola3D ChangeLog

2009,06/03
========================================

やはりマニュアルを書くと，いろいろ細かい
バグや変なところが見付かる．修正して
バージョン2.18としてリリースする．

2009,06/02
========================================

 オートコントロールのところのマニュアルを書いていて気が付いた。
 歩行スピードのデフォルト値は1.0m/sということに変更
 (今まで4.0だった)。 それとCATALOG.XMLで
 autoActionControlの指定ができるのは変な感じなので
 廃止することにする。

2009,05/18
========================================

A3CanvasやA3Windowから登録したアバタを追従する
ようにカメラを自動的に制御するChaseControllerを
実装してみた。チェックするべし。最低限の機能しか
実装してないので、作り込みをして使いやすくすること。

2009,05/08
========================================

UpperDirectionの意味を再定義する必要がありました。
具体的にはUpperDirectionを設定する対象が仮想空間
ではなく、各A3Objectに対して設定するようになります。
APIの変更にはなってしまうのですが、モヤモヤが取れた
気がします。

しかし、任意の方向ベクトルを上方向に指定できるような
APIの方が良いだろうし、現在の実装も中途半端な所があります。
ですが、今回は無理せず見送ります。(2009,05/18追記:
これについてはTODO.txtに少しメモした。)

これでやっとlightweightの準備が整ったんで、これから
じっくりテストしてバグを潰すべし。

2009,05/01から07
========================================

やっぱりlightweightにしてswingで使いたいという
要望がまわりから出てきたのでJCanvas3Dに再チャレンジ
することにした。この実装はJA3Canvasというクラス名に
して、従来のA3Canvasはそのまま残すことにすれば
そんなに問題ないかと思ったら、結構大規模な変更が
必要だった。どうしようか迷ったけどNaviModeと
UpperDirectionの列挙型をA3CanvasInterfaceという
クラスに移動したので、その部分だけインタフェースの
変更になると思う。で、しかもまだ途中。

JA3CanvasだけでなくUpperDirectionのテスト用
プログラムを作成するべし。

2009,04/06
========================================

その場しのぎのヘンテコな手を使って
SableCCのバージョンを2.18.2から3.2にむりやり
上げてみる実験をやった。前のように極端に遅くなる現象は
無くなったようだけど、良く考えてみると改善された
項目は一つもなく、実質的に改悪だね。ということで
やっぱり2.18.2を使うことにした．でも，忘れてまた同じ
ことをしないように，sableccの文法ファイルやParserBVH.javaに
ヘンテコなコードをコメントアウトして残しておくことにする．

2008,10/01
========================================

CATALOG.XMLからコメントが読み出せないことが
判明したのでいろいろ試してみたらXML Schemaの記述で
`<c>`要素の宣言を`<a3>`の中から外に出してrefで参照
するようにしたら上手くいった．でも，理由は不明．
さらに，antでコンパイルすれば上手くいくけど，
javacコマンドで手動でコンパイルすると実行時に
ネームスペース関係のエラーが出る．これも原因不明で
非常に不安．でも，待ってられないので強行突破．

2008,09/30
========================================

CATALOG.XMLの読み込み部分の実装をDOMから
JAXBに変更した。この変更による問題が2つ。
1つ目はCATALOG.XMLの記述できちんとnamespace
の宣言をしてやる必要が出てきた。2つ目はJAXB
なので、素のjava5では動かないと思う。

2つ目の問題はともかく、1つめの変更はまた互換性
の無い仕様の変更ということで、これが最後であって欲しい。

2008,09/29
========================================

書き忘れていたのですが，CATALOG.XMLで
プロファイルを記述する専用の場所として`<profile>`要素
を加えました．

2008,09/20
========================================

`<p>`要素に付けるoffsetとrot属性のバグ修正。

2008,09/19
========================================

SimpleControllerを作って、A3Canvas.NaviModeに
SIMPLEを追加。このモードはEXAMモードに似てる。
違いはEXAMモードでは、注視点があるオブジェクトに固定される
けど、SIMPLEモードでは注視点を平行移動できる。

2008,09/10
========================================

defaultActionとかdefaultActionNoという名前の
変数やメソッドがあったが，これを廃止してhaltAction
とかhaltActionNoとすることにした．
これは以前あったdefaultActionの用法の混乱をひきずって
いた問題の訂正で，互換性の無い訂正となる．

2008,09/02
========================================

CATALOG.XMLにタグ情報を付けることができるということにした。
やっぱりRDFは敷居が高すぎるでしょう。ただ、これを読み出す
APIは未実装。ついでになんとなくRDFとthumbnailの順番を入れ
替えた。それと、先日作ったActionObjectインタフェースは
これで良いのかも。AutoActionControlを機能させるにはminRunSpeed
とかの情報も必要だけど、これを必須とするのもどうかということで、
AutoActionControlの機能はAction3Dの便利な機能ということに
しておこうと思う。

2008,09/01
========================================

一応、ActionObjectという名前のインタフェースを
作って、これをアクション付き3Dオブジェクトの
共通のAPIということにしてみた。でも、実験的なもの。

今の問題点はAutoActionControlの扱い。今はこの機能は
APIから抜いておいた。でも、それが正解かどうかわからないし、
この機能はどんなアクション付き3Dオブジェクトでも共通化
できそうだ。InterfaceでなくAbstractクラスの方が良いのかな？
ということで、まだまだ考察が必要。

2008,08/09
========================================

Action3Dのデータを読み込む時に使用している
キャッシュを空にするためのメソッドを用意した。
A3Viewerなどで、ファイルを作り直して、再確認する
ためにもう一度読み込む必要がある時などに使用する。

2008,08/05
========================================

CATALOG.XMLのSchemaのデータを修正して、アクションに
balloonOffset属性を付けることができるようにした
(実装はしてないけど)。それと若干のバグ修正。

Action3Dと同じようにA3Arc,A3Image,VRMLオブジェクト
にも使いやすいコンストラクタを追加。

grammar/a3format.txtにAceorla3Dファイルのフォーマット
の仕様書を置くことにする。まだ簡単な物なので、もっと詳しく書いて
ゆくべし。

2008,06/26
========================================

Action3Dクラスに文字列を引数にとるコンストラクタと
URLオブジェクトを引数にとるコンストラクタを追加しま
した。「new Action3D("x-res:///test.a3");」という
感じでオブジェクトが生成できるようになったので、
オブジェクト指向の初心者にとってわかりやすい形で
プログラムを書けるようになったと思います。

2008,03/27-2
========================================

パッケージ名をjp.sourceforge.acerola3d...に変更しました。
互換性を無視したわけですが、基本的にimport文の書き換えだけで
対応できるはずです。そしてどさくさにまぎれてA3Arc,A3Image,Action3D,
VRMLのコンストラクタとupdateメソッドの引数からisEnableBehaviorと
labelとballoonの項目を削除しました。この項目はA3InitDataやA3UpdateDataの
デフォルトデータとして設定すれば同じ効果があるので、そちらで代用してもらうことになります。

2008,03/27
========================================

ActionBehaviorなどを大改造した．いまさらだけど，
シーングラフを操作するコードを全てBehaviorに移した．
動作が安定するのを期待したい(まだチェックしてない)．

CATALOG.XMLのa3要素で指定できるscaleやoffsetや
rotationを反映させる実装が，いい加減なものだったので
直した．ただ，そのいい加減な実装に従って既存のAcerola3D
ファイルが作られていたので，変更しないといけない．
結果的に互換性の無い変更となってしまっている．
具体的には各Boneのパーツの大きさがa3要素のscaleの影響を
受けるように変更されている．

CATALOG.XMLのp要素にscaleやoffsetやrotationが付けれる
ようになった．たぶん大丈夫だと思うけど要チェック．

2008,03/13
========================================

lg3d対応のための変更一応完了。A3Spaceを作る案は
廃止。使用方法は今までと変らない。ただ今のところ、
ピッキング関係はlg3dや既存のJava3Dに組込む場合には
使えないということであきらめた。どう変更したかというと、
A3Behaviorのカメラ制御部分をCameraBehaviorに
分離。A3BehaviorをA3Objectの一つ一つに付けるように
変更した。そして、A3BehaviorとCameraBehavior
の同期を取るための内部的な工夫を加えた。

2008,03/11
========================================

lg3d対応を強化しようと考えたら、いろいろ改善点が
見えてきた。今、いじっている途中。A3Canvasの処理の
一部を分割してA3Spaceというクラスを作った。A3Spaceは
既存のJava3DプログラムのシーングラフにAcerola3Dを
組込むためのBranchGroupのサブクラス。

これに付随してBehaviorも整理中。まだ問題が山積みなので、
TODOに少し書いておく。

2008,02/21
========================================

Project Looking Glass(lg3d)に対応させようと
あがいてみる．lg3d-coreに多少修正が必要だが
一応動くようになった．(サウンドはダメ？)

2008,01/20
========================================

フリーズを検査するためのコードをexamples
の中に置いた．検査するべし．

2008,01/16
========================================

Macでは，Switchノードの下にSoundノードを
ぶら下げてスイッチすると例外が発生して止る．
以下は関連してそうなページなのだが良くわからない．

* <http://archives.devshed.com/forums/java-118/small-fix-code-included-1639078.html>
* <http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4908425>

たしかWindowsでは音じたい鳴らないし，Linuxではまれに
X WindowごとFreezeする．とりあえずSwitchを使わないで，
子ノードをaddChildしたりDetachする実装に変更(戻し)して
みる．結果Linuxでは変化なし．WindowsやMacで動作確認するべし．

2008,01/15
========================================

ナビゲーションのWalkとFlyの違いを理解して
いなかった．修正してFlyモードの実装を加えた．
ナビゲーションのためのControllerはほぼ
完成した．

2008,01/11
========================================

ナビゲーションでスレッドが使えるように
拡張して，WalkControllerをスレッドを使って
実装しなおしました．

2008,01/07
========================================

また幾つかAPIを追加しました。でも追加なので、
以前のプログラムの変更は必要ないはず。また、
ナビゲーションモードをA3Boardから移植。
flyモード以外はほぼ動作する状態になった。

2008,01/04
========================================

Action3Dに現在のアクションナンバーとアクション名
返すAPIを追加しました。

2008,01/01
========================================

A3Canvasでバックグラウンドに指定されている
A3Objectはピッキングされないようにしました。
ヘッドライトのオン・オフの機能を追加しました。
それと、昨日の実験の戻し忘れがあったので戻しました。

2007,12/31
========================================

JCanvas3dというのが使えるようになっていたので、
試してみたが、たぶん自分のLinuxのX11の環境では
無理っぽい。元に戻したけど、コードの断片を残し
ておく。

それと、A3Object.getScale()メソッドを忘れて
いた。それと、それとA3ObjectのQuatの初期値が
(0.0,0.0,0.0,0.0)だったのを(0.0,0.0,0.0,1.0)に
変更した。

2007,11/02
========================================

examplesの中のサンプルプログラムで使用している
サンプルデータをexamplesディレクトリに追加した．
今まで，自分のノートでしか動かない状態だった
のに気がついていなかった．

ほったらかしだったa2パッケージのバグを一つ
とってみた．サンプルプログラムは動くようになった．

2007,10/22
========================================

やっとAPIの整理ができました．javadocも
a2パッケジをのぞいて書くことができました．
基本的な部分には変更はないですが，マイナーな
APIを一部変更しました．大きな変更ではないのですが，
一応けじめをつけるためにVersionを2に昇格させて，
バグ取りやドキュメントの充実のほうに注力して
ゆくようにしたいと思います．


2007,07/18
========================================

java3d 1.5.1のjoalが正式に出たので，色々整理した．
一応「j3d.audiodevice」というシステムプロパティを
調べてAudioDeviceを初期化するようにしてみた．
でも，java3d 1.5.1 with joalでしか動作確認は
していない．動作確認のためのa3ファイルとサンプル
プログラムも追加した．ヘッドホンで聞いてみると
少し(頭の？)場所がずれているような気がする．

いつの間にかexampleの中のサンプルが，A23.initA23()
が無いと「x-res://…」で例外が発生するようになっていた．
Action3D.loadなどのメソッドの中にA23.initA23()
を置いて例外が発生しないようにしておいた．


2007,07/10
========================================

重い腰をあげてjavadocでAPIが生成されるように，
ソースのコメントを作成しはじめた．不要なAPIが
publicになっているところなど多数あったため，
隠蔽するように変更した箇所がいくつかある．
本当に隠蔽して大丈夫かどうか，他のシステム
に組み込んで確認作業をするべし．

2007,06/20
========================================

読み込みが非常に遅くなっていた原因は，sableccの
バージョンアップであることが判明した．たぶん
使い方が悪いだけで調べれば直るのだと思うのだが，
時間がかかりそうなので，ver3.2からver2.18.2に戻す
ことにします．

2007,05/22
========================================

サウンドの再生ができるようになった．CATALOG.XML
ファイルの<a>要素の中に<s>要素を一つ入れることで，
サウンドの指定をする．属性は今のところ以下のような感じ．

* file:サウンドのファイル名
* loop:ループする(true)しない(false)
* type:PointSound or BackgroundSound
* gain:増幅率？(実数)
* offset:音の場所のオフセットPointSoundの時のみ有効

そろそろCATALOG.XMLのフォーマットの厳密な定義が必要．
今後の課題．

2007,05/20
========================================

APIちょっと変更。A23.initA23()を使わないで済むようにした。
だが、少しテストしてみたところ微妙な点があるようだ。はじめ
A23.initA23()自体を廃止しようと考えたが、残しておくことにして、
大抵の場合はA23.initA23()は必要無い、ということにしておく。
これに従いほぼ全てのサンプルにおいて一行削除。

A23.initA23()が必要な場合と、不必要な場合を明確にしておく
必要がある。今後の課題。

2007,05/19
========================================

大改造後の最初のリリースをversion1.10という
ことで出すことにする．基本的に，APIの変更は無いが，
内部構造は大きく変更されているので，バージョン番号は
6つ飛しにした．よってなにか安定性が必要な場合は
version1.03を使うと良いかも．


2007,05/12
========================================

subversionのコメントを真面目に書いてないので，
changelogを書くようにしてみる．さらにsableccの
java5対応のものがあったので，更新しておいた
(以前のはver2.18.2で，今回のは3.2)．これで，
数十個出てた警告のほとんどが消えたけど，一個だけ
残るみたい．残念．

2007,05/06
========================================

遡ってログ．連休中に大改造した．ただしAPIなどの変更は
基本的にはない．(オイラー角をセットするA3Object.setRot()
メソッドの追加だけはやった)．

変更したのはAction3Dの内部で使われている
クラスの構成などで，その目的はデータのキャッシュの実現と
将来の拡張性の確保．キャッシュは有効に機能してるようだ．
拡張性の確保に関しては以下のような拡張を想定している
(実際の拡張はまだやってない)．

* 音声データを含めるための拡張
* キャラクタの一部のShapをロード後に変更(着せ替えとか)
* モーションデータの汎用化

