【現在のバージョン】Rel 2.3 Beta10 (2022/06/12) ●WFL3.9xに対応 ※WFL3.8x以下とは組合せ不可 ●スイッチバック法のマスク位置をautoにした時のマスク位置が誤っていたバグのフィックス ●グーローシェーディングの並列処理化 ●新規メソッドの追加 ImagingViewer::MultiSpectralView(vector& swf, Point p, ColorImage& image) SegWaveField::GetCt() カレントセグメントの1次元インデックスを返す. SurfaceBuilder::AddObjectFieldSoo() AddObjectFieldSm()の別名(物体単位シルエット法) SurfaceBuilder::AddObjectFieldSpp() AddObjectFieldSb()の別名(ポリゴン単位シルエット法(スイッチバック)) SurfaceBuilder::AddObjectFieldSop() ポリゴン単位シルエット法と物体単位シルエット法を同時に行う Rel 2.2.1 (2021/12/24) ※WFL3.8xに対応(WFL3.9以上とは組合せ不可) ●サーフェースマスク法と鏡面シェーディングを併用した場合に発生するバグのフィックス ●TfbUvMappingのバグのフィックス △未解決の問題点 フルカラーでサーフェースマスク法と鏡面シェーディングを併用した場合にカラーに異常が生じる (単一波長では問題は生じない.3波長で計算した場合のみ発生する問題) Rel 2.2.0 (2021/11/02) ●サーフェースマスク法隠面消去の大幅な性能改善 ●グーローシェーディングの些細なバグフィックス Rel 2.2.0 Beta#61 (2021/10/25) ●TfbLambertShadingのコンストラクタで引数パターンが区別できない問題が生じるため,env = 0.25のデフォルト引数を削除. Rel 2.2.0 Beta#60 (2021/10/05) ●メソッドと変数のネーミングミスの一括した修正 GetAlphaTexNum ==> GetAlphaMapNum SetAlphaTexNum ==> SetAlphaMapNum alphatexNum ==> alphaMapNum ●マニュアルの大幅な加筆修正. 主として6.4節のシェーダに関する加筆 Rel 2.2.0 Beta#51a (2021/08/12) ●WFL3.8.1で実行できるように再ビルド. Rel 2.2.0 Beta#51 (2021/08/04) ●ランバートシェーダの改良 ●TfbPhongSpecularShadingクラスの新設.スムース/フラットで鏡面レンダリングが可能になった. ●アルファマッピングの実装 psl::GetAlphaMapNamesMqo()グローバルメソッドの追加.  IndexedFaceSet::SetAlphaTexNum(), GetAlphaTexNum()メソッドの追加.  Polygon::GetAlphaTexNum()メソッドの追加  SurfaceBuilder::SetAlphaMap(), GetAlphaMap()メソッドの追加 ●SegWaveField::LoadSegBmp()でBMPファイルのピクセル数が2のべき乗でない場合に隙間が空かないように修正. ●SurfaceBuilderのコンストラクタの軽微な修正 ●BoundingBox::Expand()メソッドの追加 ●Colorクラスに次の静的メソッドを追加.WHITE(), RED(), GREEN(), BLUE(), YELLOW(), CYAN(), MAGENTA() ●SurfaceBuilderの引数無しコンストラクタで,WaveFieldのデフォルトパラメータでインスタンスが生成されるように修正(従来はサンプル点数0の設定でインスタンスが生成されていた). ●BoundingBoxクラスにコピーコンストラクタの追加 Rel 2.1.0 (2021/03/20) ●主としてサーフェースマスク法への対応を行ったバージョン. ●enum MaskTypeを追加.シルエットマスクとサーフェースをマスクを切り替えるため下記を追加. SurfaceBuilder::SetMaskType(),GetMaskType() ●シルエットマスク法でマスク位置をコントロールするため,enum SilhouetteMaskOptionを追加 ●シルエットマスク法でマスク位置をコントロールするため,SurfaceBuilder::silMaskOptionとsilMaskPosを追加.そのget/setメソッドとして下記を追加 SurfaceBuilder::SetSilhouetteMaskOption(),GetSilhouetteMaskOption() SurfaceBuilder::SetSilhouetteMaskPos(),GetSilhouetteMaskPos() ●ImaginViewerに焦点距離固定モードを追加.追加したメンバーと仕様変更は下記のとおり. ImaginViewer::SetFocalDistance(), GetFocalDistance(), IsFixedFocalLength() ImaginViewer::GetImagingDistance()の仕様変更.引数にPointが必要になった. Rel 2.0.4 (2020/11/19) ●WFL3.8BetaXと組み合わせた際に,一部のシステムで序数エラーが発生するため,Intel Compilerをupdate4にアップデート. Rel 2.0.3 (2020/10/14) ●psl::GetBuildTimeStamp()を新設.また,psl::GetVersionString()関数をdllリンク時に名前で検索できるように修正.WFL3.8Beta3以上でStart(3)を実行すると,これらの機能によりリンクされているPSLのバージョンとタイムスタンプが表示される. Rel 2.0.2 (2020/10/02) ●GetNx()とGetNy()の積がオーバーフローするため,この積のコードを検出して,GetN()に置き換え. Rel 2.0 (2020/03/11) ●軽微な修正.Betaバージョンと基本的に同じ Rel 2.0 Beta (2019/12/04) ●ランバートシェーダの新設とそれに伴うモデルデータのマテリアル情報取扱いに関する大幅な修正. ●VisualStudio2019対応(Betaテスト) ●新設したクラス: TfbLambertShading, Material, MqoMaterial, MaterialList ●新設した列挙型: SurfaceType, MaterialType, ShadingModel ●修正したクラス: IndexedFaceSet, Poygon, Color ●IndexedFaceSetクラスの修正 削除したメソッド:SetColor(), GetColor() 新設したメソッド:HasMaterial(), GetMaterialNum(), GetMaterial(), GetSurfaceType(), GetSmoothingAngle() ●Polygonクラスの修正 削除したメソッド: explicit Polygon(const PointArray& points)コンストラクタ, explicit Polygon(const IndexedFaceSet& model, int n)コンストラクタ 新設したメソッド: HasMotherObject(), HasTexture(), GetMaterialNum(), HasMaterial(), GetMaterial() ●Colorクラスの修正についてはリファレンスマニュアル参照. ●ランバートシェーダのサンプルコードの追加. Rel 1.9.1 (2019/07/21) ●Rel1.9Betaから導入したデフォルトの帯域制限3(最強)をそれ以前の0(帯域制限無し)に戻した.これは,SurfaceBuilderにホログラムの位置・大きさ(Nx, Ny, Px, Py, 中心位置)を設定していない状態ではエラーになる場合があるためである.また,ホログラムの位置・大きさを設定せずに帯域制限を用いて光波計算を行うとエラーになるように修正. Rel 1.9.0 (2019/07/08) ●ホログラムと平行なポリゴンの処理のバグをフィックス. ●計算速度を上げるために,従来通り,次の2点を変更. (1)探索サンプル点分布を円形に戻す,(2)スペクトルリマッピングは,理論通りではなく探索サンプル点の外接矩形が中心になるように変更. Rel 1.9Beta (2019/06/05) ●SurfaceBuilderの帯域制限のデフォルトを0から3(最強)に変更. ●スイッチバック法において,壁紙などホログラムと平行なポリゴンの処理を改良して,平行ポリゴンについては補間処理を行わないようにした(物体単位シルエット法では以前より実装済みだった). ●スイッチバック法でスイッチバック処理に必要なFFTの数を5から6に減らす改良を実施. ・AddPolygonField()の書き直し ・AddPolygonFieldFs()の追加(現時点ではprivate) ・AddPolygonFieldSb()の書き直し ●背面ポリゴンをサブモデル分割前に取り除く下記の関数を追加 SurfaceBuilder::BackFaceCulling(IndexedFaceSet& model) ●帯域制限範囲に計算範囲を限定してパフォーマンスを向上する改良のため,SurfaceBuilderクラスに下記の関数を追加 BandForPolygon(const wfl::PointArray& pa) BandToWindow(wfl::WaveField& wf, psl::BoundingBox bb) ●SurfaceBuilder::AddObjectFieldSm()関数に用いるスレッド数を指定するt引数を新規追加. ●SurfaceBuilder::SetBalanceRotation(bool onoff)の追加.このフラグをオンにすると回転変換の中心をポリゴンの重心にとる(この場合PFBが不必要に大きくなる場合がある).このフラグがオフの場合は,PFBの中心をポリゴン平面に写像した点を回転変換の中心とする(この場合,回転変換の中心とポリゴンが大きくずれる場合がある).初期値オン. ●SurfaceBuilder::SetDiffractionRate()/GetDiffractionRate()の追加 ●テッセレーション関係のメソッドの追加(永江) Polygon::GetArea(void) IndexedFaceSet::GetArea(unsigned int n); IndexedFaceSet::GetDepthStatistics(void) IndexedFaceSet::TesselationByArea(double area) IndexedFaceSet::TesselationByDepth(double depth) ●DevideByDepth()の挙動を少し変更 複数回呼び出してもメモリを消費しないようにした(永江) ●AddObjectFieldSbUnity()内で可視ポリゴンに処理を限定しているのにAddPolygonField()の中でもう一度IsVisible()を呼び出していた部分を試験的にコメントアウト(永江) ●最適サブモデル分割数を推定する関数の追加(永江) SurfaceBuilder::RecommendSwitchBackDivision(const IndexedFaceSet model,bool expansion) ●GePSL対応のために関数追加と一部修正 TfbPaint::GetGamma() TfbPaint::GetDirection() TfbPaint::GetEnvironment() TfbFlatShading::GetDirection() TfbFlatShading::GetEnvironment() TfbUvMapping::GetTexes() SurfaceBuilder::GetCulledReferencePoint() SurfaceBuilder::GetTfbDensityRatio() SurfaceBuilder::GetTextures() SurfaceBuilder::SetPolygon() Rel 1.8.4 (2019/02/20) ●帯域制限を用いたスイッチバック法で,SurfaceBuilder::BandLimiting()で計算時間の1/4以上を消費している報告があったため,この関数を書き直した.BandLimiting()が劇的に早くなった. Rel 1.8.3 (2019/01/30) ●スイッチバック法で部分光の切り出しにWaveField::Add()を用いていたのを専用ルーチンに変更.スイッチバックを用い計算時間が約3/4倍に減少. Rel 1.8.2 (2018/10/23) ●SegWaveField::LoadBmp()で位相を読み込んだ時のバグをフィックス.併せて,虚部を読み込んだ際に実部を定数1に設定していたのを定数0に修正. Rel 1.8.1 (2018/10/03) ●ImagingViewer::Imaging()関数のマイナーなバグをフィックス. ●Texture::LoadBmp()で読み込むbmpファイルにピクセルピッチ情報が無い場合は読み込み先のサンプリング間隔を継続するように修正. Rel 1.8.0 (2017/11/22) ●SegWaveField::LoadBmpAuto()とLoadBmp()を新規実装. ●SegWaveField::XX(), YY(), II(), JJ()を新規実装 ●SegWaveField::SaveAsCombinedGrayBmp()(2種類の形式)を新規実装. ●SegWaveField::SaveAsSegGrayBmp()(2種類の形式)を新規実装. ●SegWaveField::ShiftedAsmProp()で一時的なセグメントwfファイルが消去されずに残るバグをフィックス ●SurfaceBuilder::AddObjectFieldSm()を新規実装. ●SurfaceBuilder::AddObjectFieldSb()で物体が指定の数に分割できない場合の処理を改良. ●SurfaceBuilderクラスでSetWavelength()メソッドで波長を変化した場合に内部状態が正しく変化していなかったバグをフィックス.カラーを計算する際にSurfaceBuilderの波長を自由に変えられるようになった. ●SurfaceBuilder::AddObjectField()内でtfbとpfbがスペクトル状態に変化してWaveField::ModRandomFieldがエラーになっていたバグをフィックス. ●ColorImage::Clear()の追加(PointArray:Clear()のオーバーライド). Rel 1.7.0 (2016/07/02) ●ImagingViewer::Imaging(), View()などのメソッドを使用したあと,視点が移動してしまっていたのを移動しないように修正. ●ImagingViewerクラスに以下のメソッドを追加. SpectralView(), MultiSpectralView() ●Texture::LoadBmp()の引数の変更.画像ガンマ値を設定できるようになった.デフォルトのガンマは1.0であるため,従来のソースとは互換性がある. ●TfbUvMappingクラスのコンストラクタの引数変更.過去のソースは再コンパイルが必要.にテクスチャ画像ガンマ値およびカラーモードを設定できるようになった.省略時のデフォルトは,ガンマ値1.0でカラーモードはGRAY_SCALE. ●ColorImage::ColorImage(int, int)コンストラクタが正しく動作していなかったバグを修正. ●ColorImageクラスに以下のメソッドを追加 SetWindow(), GetWindow(), NormalizeWinY(), NormalizeWinXYZ(), NormalizeWinVec(), GetMaxY(), GetMaxXYZ(), GetMaxVecLength(); Rel 1.6.0 (2016/05/30) ●WFL::WaveFieldクラスの位相乱数化関数の改訂にともない,TfbFlatShading, TfbGouraudShading, TfbPhongShading等のクラスで拡散位相を指定しない時の乱数化を修正. ●ImagingViwerの一つのインスタンスに対して,View(), ViewHologramSw(),ViewHologramPw()などを繰り返した場合,前回の結果がクリアされずに残っていたバグをフィックス. ●SegWaveField::SegWaveField(const char* fn = NULL)コンストラクタでファイル名fnが指定され,かつそのファイルが存在する場合は,fnをそのままセグメントファイルとして用いるように変更.この場合,もしもfnがセグメントwf形式のファイルでなかったらエラーになる. ●SegWaveFieldクラスに下記のメンバー関数を新規実装  SegWaveField(const SegWaveField& swf, int cmx, int cmy, const char* fn)コンストラクタ.   フィールドのセグメント数を変更する場合に用いる.  SegWaveField::Add(SegWaveField& swf)  SegWaveField::GetBoundingBox(int m) ●SegWaveField::Init()の実装変更.WaveField::Init()の代わりにWaveField::InitNxNy()を呼び出すようになった.したがって,SegWaveField::Init()ではデータメモリの確保は行わなれない.またカレントセグメントは未定義状態になる. ●SegWaveFieldクラスのインスタンスを生成した直後にはカレントセグメントは未定義になり,スーパークラス(WaveField)のデータ領域は確保されていない状態になるように,従来の実装から変更.従って,Segment()関数が呼び出される前では,WaveFieldとして処理はエラーを誘発する. ●ポリゴン単位帯域制限SetBandLimitMethod()に強度3を実装.強度値1<2<3の順で制限が厳しくなりゴースト像が減る.強度値0は帯域制限なし ●ポリゴン単位帯域制限のSurfaceBuilder::BandLimiting(),BandForPoint(),BandForPolygon(),BandLimiting()でSurfaceBuilderに設定された中心位置を考慮していなかったバグをフィックス. ●SurfaceBuilder::AddObjectField()で,引数で指定されたスレッド数がコア数以上の場合でも問題を起こさないように修正. ●メモリのフラグメンテーションを最小限にするため,SurfaceBuilderクラスを修正._LocalFieldクラスとLocalFieldメンバーを追加して,繰り返す使われる一時的なフィールドを毎回解放・確保しないように修正した.これに合わせて下記の変更を加えた. ●SurfaceBuilder::SetMemoryUse()メンバー関数を追加.SetMemoryUse(1)とすると,すべての一時フィールドに対してWaveField::SetReuseMemory(1)を実行する.これにより,フィールドのメモリを開放せず拡張し続けることになる.メモリフラグメンテーションは最小限になるが,メモリ消費量は増加する.この関数はAddObjectField()とAddObjectFieldMt(),AddObjectFieldSb()に影響する. ●SurfaceBuilderクラスのコンストラクタをC++11仕様で再記述.クラス使用方法の変更はなし. ●SegWaveField::SaveAsSegBmp()に指定の範囲のみを保存するための新形式を追加 Rel 1.5.0 (2015/01/07) ●IndexedFaceSet::SortByDepth()においてポリゴン数がゼロの場合もエラーにならないように修正.その結果,スイッチバックで物体分割した際にポリゴン数ゼロのサブ物体ができてもエラーにならないようになった. ●SurfaceBuilderクラスがFieldParamクラスを継承するように変更.この結果,GetPx(), GetPy(), GetWavelength()などの独自定義は廃止され,FieldParamクラスから継承した同名のメソッドが有効となった. ●ポリゴン単位帯域制限を行うために,SurfaceBuilderクラスにSetBandLimitMethod(),BandForPoint(),BandForPolygon(),BandLimiting()を新設. ●ポリゴン化した平面オブジェクトを作成するIndexedFaceSet::SquareObject()関数を新設. ●Texure::LoadBmp()で,読み込んだ画像のピクセルピッチをフィールドのサンプリング間隔に反映するように変更. ●TextureクラスにGetWidth(),GetHeight(),GetAspectRatio(),SetWidth(),SetHeight(),SetAspectRatio()の各関数を新設. ●TextureクラスのLoadBmp()で,WaveField::LoadBmp()と同様にフルカラー画像を読み込めるように修正. ●uvテクスチャマッピングを行う際に小さなモデルでストップエラーが出る問題をフィックス. ●SegWaveField::SaveAsSegBmp()でカラースケールを指定した場合にカラーチャートが出ないように修正. Rel 1.4.0 (2014/11/30) ●Visual Studio 2013 SP1 + インテル C++ Composer XE 2015 Update 1 でコンパイル ●インストーラの変更 ●TfbFlatShading,TfbGouraudShading,TfbPhongShadingのシェーダークラスで拡散位相の引数がない形式を新設.この形式では乱数位相を用いるように仕様を変更. Rel 1.3.1 (2014/06/29) ●AutoNormalVector()の微調整.両面化されているポリゴンがある場合.頂点を統合すると頂点の法線ベクトルがゼロになってしまうため,頂点法線がゼロの場合は,面法線を設定するように変更. ●Rel1.3で追加したSegWaveFieldクラスのコンストラクタSegWaveField(const WaveField& wf, int mx, int my, const char* fn = NULL)がマルチスレッド処理で異常を起こす問題をフィックス. ●マニュアル改訂:ImagingViewerクラスで未記載だった幾つかの関数の記述を追加. ●TfbUvMappingコンストラクタにおいて,モデルがマッピング画像を持たない場合もエラーとはせずにスルーするように変更. ●SegWaveField::Add()およびAddTo(),GetBoundingBox()メンバー関数を追加. ●SegWaveField::Multiply()およびResamplingCopy()メンバー関数を追加. ●SurfaceBuilder::SetTfbDensityRatio()メンバー関数を追加.TFBの密度を変えられるようになった. ●IndexFaceSet::GetStartZ()メンバー関数の追加. ●セグメンテーション用にSurfaceBuilder::AddPolygonFieldSb()内でフレームバッファとの重なりを検出するコードを追加. Rel 1.3 (2014/06/07) ●カラー画像の統一的取扱および色座標の定量的取扱いのため,以下の関数・クラスを追加 ColorMatchingCIE1931XYZ(),ColorSRGB(),ColorXYY(),ColorImageクラス ●Colorクラスに次のメンバー関数を追加. GetRed8bit(),GetGreen8bit(),GetBlue8bit() ●AutoNormalVector()の修正.EleminateDuplicatePoint()を呼び出さなくなった.理由:両面化されているポリゴンがある場合.頂点を統合すると頂点の法線ベクトルがゼロになってしまうため. ●SegWaveFieldクラスに次のメンバー関数を追加 コンストラクタSegWaveField(const WaveField& wf, int mx, int my, const char* fn = NULL) GetM(), Segment(int m), Exist(int m), CombineInto(), SaveAsCombinedWf(), ShiftedAsmPropWhole(), ShiftedFresnelPropWhole(), ShiftedAsmProp(double dz), ShiftedFresnelProp(double dz) ●SegWaveFieldクラスのコピーコンストラクタが不完全であったのを修正. ●SurfaceBuilder::AddObjectFieldSb()の引数としてbackgを追加.backg=falseなら開始位置への伝搬計算を省略. Rel 1.2 (2014/04/04) ●SurfaceBuilderクラスのスイッチバック法関数AddObjectFieldSb()の引数にexactスイッチ(bool型)を追加.exact=trueとすることによりサブオブジェクト間の伝搬計算にExactAsmProp()を呼び出すようになる.スイッチバック法開始前の背景光波フィールドにサンプリング領域全体に広がる光波が含まれている場合は,このスイッチをtrueにすることにより,背景光波のエイリアシングを防ぐことができる.ただし計算速度は遅くなる.デフォルトではexact=false. Rel 1.1 (2013/11/30) ●SurfaceBuilderクラスにスイッチバック法の関数を追加  AddPolygonFieldSb(), AddObjectFieldSb(), AddObjectFieldSbUnity() ●SurfaceBuilder::SetDefaultInterpol()とGetDefaultInterpol()の追加.既定の補間方法を設定・取得する. ●SurfaceBuilder::AddPolygonField()とAddObjectField()において補間方法を省略した形式で,既定の保管方法を用いるように変更(従来は省略時はBICUBIC). ●グローバル関数GetNumOfTextureMqo()とGetTextureNamesMqo()関数の新規追加.下記の新しいUVマッピングで必要. ●UVマッピングを行うために新しいTfbUvMappingクラスの追加(従来のTfbUVMapppingクラスとは一文字違うだけなので注意(UVとUvの違い)).新しいLoadMqo()関数と組み合わせた場合,ポリゴンの並べ替え等を行っても正しくUVマッピングが行える. ●LoadMqo()関数の全面改訂.以前のLoadMqo()関数はLoadMqoOld()にリネームされている.新しいLoadMqo()関数は以前のものと引数の構成が変化している. ●Textureクラスの新規追加. ●PolygonクラスとIndexFaceSetクラスにUVマップ情報を追加.それに合わせて以下を追加.  IndexFaceSe::SetTexMap()/GetTexMap,SetTexNum()/GetTexNumの追加  Polygon::SetTexMap()/GetTexMap,SetTexNum()/GetTexNumの追加 ●TexMapクラスの新設. ●IndexFaceset::SaveAsDxf()の新設. ●IndexFaceset::DivideByDepth()でカラーがコピーされないバグをフィックス. ●IndexFaceset::DivideByDepth()でfrontまたはback引数として自分自身を取ることができるようにした.すなわちmodel.DividByDepth(model, back, z)あるいはmodel.DividByDepth(front, model, z)というの記述が可能. ●IndexFaceset::SortByDepth()メソッドの新設. ●IndexFaceset::Clear()メソッドの新設. ●Textureクラスの新設. ●複数のテクスチャを有するmqo形式データを読み込む関数を実装.(By 山下裕士) IndexedFaceSet::LoadMqo()マルチバイト文字列版とワイド文字列版 PSL1 正式版 Rel 1.0 (2013/03/05) ●mqo読み込みおよびuvマッピング関係の以下のバグフィックス.(By 山下裕士)  mqoで複数オブジェクトがある場合の読み込みがおかしい.  UV座標から、WaveFieldに読み込んだテクスチャのIJ座標を求める時にエラーが出る場合がある.  ポリゴンの端でのテクスチャの塗り漏れ.  UV座標が0以下と1以上の場合エラーが出る. ●複数のwfファイルから等色関数を用いてカラーBMP画像を合成するProduceColorImage()関数を実装.(By 山下裕士) PSL1 Beta3 Rel 0.99.03 (2012/12/18) ●メタセコイアmqo形式を読み込むLoadMqo()をグローバルとIndextedFacesetクラスに追加.(By 山下裕士) ●メタセコイアmqo形式ファイルからuvマッピングを行うLoadMqo()をグローバルとIndextedFacesetクラスに追加.(By 山下裕士) ●メタセコイアmqo形式ファイルからuvマッピングを行うTfbUVMappingクラスを追加.(By 山下裕士) ●Rel0.99.02において導入したSurfaceBuilder::GetDiffractionRect()の変更部分を元に戻した.Rel0.99.02を用いた場合に生じるポリゴンが欠ける症状はこの部分の変更に起因している. ●SurfaceBuilder::GetDiffractionRect()がsomethingwrongエラーを発生するバグをフィックス. ●IndexedFacedSet::SplitRect()関数をBreakQuad()に名称変更. ●IndexedFacedSet::SplitRectAll()関数をBreakQuadAll()に名称変更. ●鏡面レンダリングに対応するための変更  SurfaceBuilder::SetRemappingShift()とGetRemappingShift()の新設  TfbPaint::PaintTfb()の引数の最後にSurfaceBuilder*を追加.  TfbPaintを継承する全クラスのPaintTfb()で同じ引数を追加 ●鏡面レンダリングのためのTfbSpecularFlatShadingクラスとTfbSpecularSmoothShadingクラスを新設(by 西). ●ImagingViewer::SaveAsReducedWf()の追加 ●SegWaveField::SaveAsSegWf()とSegWaveField::LoadSegWf()で日本語ファイル名が使えなかったバグをフィックス ●AutoNormalVector()を再実装し高速化.EliminateDuplicatePoint()を内部的に呼び出すようになった. ●拡散/鏡面スムースシェーディングで頂点法線ベクトルが設定されない場合のエラー検知をしていなかったバグをフィックス.AutoNormalVector()を実行していない場合にエラーで停止するようになった. PSL1 Beta2 Rel 0.99.02 (2011/12/13) ●IndexedFaceSetクラスの改造  いくつかの基本メソッドをinlineに移行  RemovePolygon(),EliminateDefectPolygon(void)メソッドを新設  DivideByDepth(),GetLineTable(), EliminateDuplicatePoint()メソッドを新設  AddWireFrameField()メソッドの新設 ●Debugモードのユーザープログラムが通常のPSL(ReleaseモードでビルドされたPSL)を呼び出すと,SurfaceBuilder::AddObjectField()が例外をスローする模様.コンパイラのバグではないかと考えられる.Debugモードでの実行を可能にするため,psl.hをインクルードする前にシンボル「_PSL_DEBUG」が定義されている場合は,psl_D.libをリンクしpsl_D.dllを実行するように変更.これらはDebugモードでビルドされたPSLであり,デバッグモードのユーザープログラムとリンクしてもエラーを起こさない.ただし,速度は極めて遅くマルチスレッディング機能も働かない. ●SurfaceBuilderにおけるポリゴン光源計算アルゴリズムを変更.従来フレームバッファ平面における回折範囲の中心を通る光軸とポリゴン平面の交点を回転中心としていたため,ホログラムに対して垂直に近いポリゴンではtfbが巨大になる場合があった.そこで,ポリゴンの中央を回転中心とするように変更.これによってtfbは最小になるがpfbが大きくなる場合があり,その結果必要メモリ量と計算時間が増加する可能性がある. ●ヘッダファイルの配置を変更.psl.hのみincludeフォルダに置き,それ以外のヘッダはpsl/*.hに配置するようになった. ●libとdllの配置を変更.64ビット版ではこれらはlibとbinフォルダの直下に配置し,32ビット版ではそれぞれ,lib/win32,bin/win32の下に配置される.ユーザー側でのpathおよびVSのディレクトリ設定の変更が必要. ●インストールフォルダのフォルダ名dataをSampleDataに変更し,cube.wrl等いくつかのモデルデータを追加. Rel 0.99.01 (2011/11/26) ●PSL1ベータバージョン ●GlModelクラス, GlVectorクラスの追加 ●opengl32.libをリンクするようになった Rel 0.86.00 (2011/10/10) ●ImagingViewer::View(SegWaveField& wf, wfl::Point p), ImagingViewer::ViewWf(const char* fname, wfl::Point p)のバグフィックス.Init()によりスクリーンサイズを変更した場合,スクリーンがクリアされていないバグを修正. ●IndexedFacedSet::LoadPov()を一つのプログラムで2回以上呼び出すと失敗するバグを修正 ●IndexedFacedSet::SplitRect()関数を新設 ●IndexedFacedSet::SplitRectAll()関数を新設 ●SurfaceBuilder::AddObjectField()関数にメモリ使用量監視コードを試験的に追加. メモリ使用量が90%を超えた場合,それを検知したスレッドはメモリを取得せず待機モードにはいる.シングルスレッド実行時にはデッドロックする.待機モード中は1分毎にメッセージを出す. ●IndexedFacedSet::Add()関数を新設 ●SurfaceBuilder::ThreadBlockFreeRatio()関数を新設.上記メモリ使用量監視の閾値を設定. ●SegWaveField::DisposeCurrentSeg()を新設. ●SegWaveField::ShiftedAsmProp()とSegWaveField::ShiftedFresnelProp()で計算終了後にsource側のカレントセグメントを廃棄していなかったので,これを廃棄するように変更. Rel 0.85.01 ●SegWaveFieldクラスにコピーコンストラクタを追加.これによりSegWaveFieldクラスをstl::vectorの配列として使えるようになった. Rel 0.85.00 ●TfbPaint, TfbFlatShading, TfbOlthoProjectMapping, TfbProjectTexFlatShading, TfbGouraudShading, TfbPhongShadingの各クラスのバグをフィックス. ●AddObjectField()によるレンダリングに必要なメモリ量が大幅減少し,パフォーマンスが数倍アップ. ●AddObjectField()でwflのスレッド数を自動制御するように仕様変更 ●フォンシェーディングを行うTfbPhongShadingクラスを新設(by 西) ●スレッド数自動制御を行わないAddObjectFieldMt()を新設 ●GetShader(),GetTexture()関数の新設 Rel 0.84.00 ●SegWaveFieldクラスにDispose(), LoadSegBmp(), LoadSegBmpAuto()を追加 ●ImagingViewer::SaveAsReducedLw(),ImagingViewer::SaveAsReducedBmp()が内部状態を変えないように修正 ●ImagingViewer::SetOrigin()でWaveFieldのSetOrigin()をオーバーライド ●ImagingViewer::RestoreViewpoint()を新設 ●ImagingViewer::ViewHologramSw(),ViewHologramPw()を新設 ●SegWaveField::SaveAsCombinedBmp()を新設 Rel 0.83.00 ●IndexedFaceSet::Split(), AutoSplit()の新設 (by 東) ●TfbGouraudShadingクラスの新設 (by 西) ●IndexedFaceSet::AutoNormalVector()の新設 (by 西) Rel 0.82.00 ●TfbOlthoProjectMappingクラスの新設 ●SurfaceBuilder::SetTexture()の新設 Rel 0.81.01 ●極端に小さなポリゴンに対してもエラーにならないように修正