最終更新日:2002/09/20

  ◆◆ 密度ファイルおよび日本語テキスト拡張版パッチ ◆◆


公式版のPOV-Ray3.5では日本語のテキストオブジェクトの取り扱いや密度ファイル(Density_file)に若干不便を感じますので、それを改善するパッチを作成しました。 本パッチはPOV-Rayの非公式版(unofficial version)です。本拡張版に対する質問などは、POV-Rayの公式サイトではなく、鈴木まで、お問い合わせ ください。


実行形式ファイル(Windows用)


ソースファイル(Unix, Win32対応)


 日本語テキストオブジェクト拡張機能 

   
 

Ver3.5では、シーンファイルの中で

 global_settings{charset utf8} 
と宣言することで日本語などの2バイト文字をテキストオブジェクト として使うことができます。

しかしオフィシャル版では、全世界のコンピュータで同じようにテキストオブジェクトを表示できるようにするためUTF8というキャラク ターコードでシーンファイルを作成する必要があります。POV-WinではUTF8コードの日本語表示・入力ができないので、Windows 2000または XPに標準で付属のノートパッド、あるいは UTF8をサポートしているエディタ(秀丸エディタ等)で編集しなければなりません。

通常POV-Winで編集しているユーザーにとっては、これは非常に面倒な作業です。

そこで、拡張版パッチのWindows版では、Windowsで使用しているシフトJISでテキストオブジェクトを レンダリングできるようにしました。POV-Winのエディタのフォントを日本語(たとえばMS-ゴシックやTerminal)に 替えればPOV-Win内で表示も編集もできるようになります。

 使い方 

シフトJISコードのシーンファイルは他の言語のコンピュータ上では使えないため、シーンファイルの 最初に

#version unofficial dfj 3.5
と記述する必要があります。また、キャラクタセットを以下のように指定 します。
 global_settings{charset sys}    
そのほかは、通常のテキストオブジェクトと同じ使い方です。


 密度ファイル拡張機能 

   
 

POV-Ray3.5公式版では、密度ファイル(Density_File)により3次元の外部データを読み込み、その値によってmedia, isosurface, texture等を変える ことが可能ですが、Density_Fileは8bitの整数のバイナリーファイルしか使うことができないため、実験データやコンピュータシミュレーション等のデータの表示に 使うには不便でした。

そこで、Density_FileのFormatを拡張し、2バイト整数、4バイト実数、テキストファイルなどのデータも扱うことが 出来るようにしました。さらに、データ間の補間のオプションも3次補間もできるようにして、より滑らかな表示を可能にしました。


拡張版Density_fileの形式
      

density_fileは、正式版と同じように以下のように指定します。

#declare DATA3D= pattern{
    density_file df3 "dftest.df"        
    interpolate 2
    frequency 0                      
  }

◎interpolateのオプションパラメータは、正式版では0(補間無し)と1(1次補間)しか指定できませんが、 拡張版では2(3次補間)も指定できます。
◎ frequencyオプションに0指定しないとデータは0〜1の値にクリッピングされます。

また、density_file(上の例では"dftest.df")のフォーマットも拡張しています。拡張版では従来のdensity_file 形式のほかに以下のテキストファイル形式でも読み込むことができるようにしています。 最初の"dfd"はdensty_file_description形式の識別子です。

dfd
[file_name] filename.ext //ファイル名を指定 
             //ファイル名無しの場合は[Data]行の後をデータとする。
[Type] Float             //データのタイプ 
                         //   Float:実数、Int:整数(2byte)、Char:8bit整数(1byte)
[Format] Text            //データの形式 Text:テキスト、 Binary:バイナリー
[X_size] NX              //X方向のデータのdimension  整数値 4以上
[Y_size] NY              //Y方向のデータのdimension  整数値 4以上
[Z_size] NZ              //Z方向のデータのdimension   整数値  1以上
[Endian] Little          //FormatがBinaryの場合のBinary dataの順序
[Cyclic] On              //データを0<(x|y|z)<1の範囲外も周期的に繰り返す場合はOn
[Offset] 0               //ファイルの開始位置
[Data]

データは、NXxNYxNZの数だけ必要です。テキストファイルではカンマあるいは改行を区切りとし、 Binaryファイルではそれぞれのデータタイプのサイズで連続させます。 データの順番はFortran形式での記述なら、(((D(x,y,z), x=1,NX), y=1,NY), z=1,NZ) とします。



   
密度ファイル拡張機能のサンプル
シーンファイルの内容 右
dftest.dfの内容 下    
dfd
[file_name] df_data.txt
[Type] Float
[Format] Text
[X_size] 4
[Y_size] 4
[Z_size] 4
[Endian] Little
[Cyclic] On
[Data]
df_data.txt
 
#version unofficial dfj 3.5;                          

camera { location  <25, 20, -40.0> look_at <0,0,0> direction 50.*z}

light_source { <1,1.4,-1>*5 color rgb <1.4,1.2,1.0>*1.7 }
light_source { <-0.5,-0.94,-1>*6  color rgb <0.9,1.0,1.0>*1.0 }

#declare DATA3D2= function { pattern{
    density_file df3 "dftest.df"        // 3D raster file (df) pattern
    interpolate 2                       // optional interpolation   
    frequency 0
  }
}

 
#macro ISO3D(TH, Filter)
 isosurface{ function{TH-DATA3D2(x-0.5,y-0.5,z-0.5)   }
   contained_by{box{<-0.5,-0.5,-0.5>,<0.5,0.5,0.5>}} 
   max_gradient 4                      
   texture{ pigment{color <0.86,0.8,0.6, Filter>}  
          finish{phong 0.30 phong_size 90}  }    
   no_shadow
 }
#end

#declare TH=0.42;
ISO3D(TH, 0.6)
#declare TH=0.45;
ISO3D(TH, 0) 


密度ファイル拡張機能を用いた画像の例


© 2001 AIST. All rights reserved. Terms of Use. AIST