＜ＰＴＯＯＬ各ツール説明＞ 

  各ツールの実行には、操作をするポリゴンデータのファイル名と幾つかのオプション
を指定します。オプションとは、各操作に対するパラメータを指定するもので、指定順
は任意です。これは各コマンドによって色々異なったものがあります。
また、"-h","-H"オプションを指定すると簡単なオプションの説明が表示されます。
  なお、オプションは小文字大文字を区別しますので気をつけてください。
                    ￣￣￣￣￣￣￣￣￣￣￣￣
　（使用例：A:\>run386 -nocrt fractal cube.pol -l 2 -s 1.02 -o out.pol）

  以下に、各ツールの簡単な（オプションの）解説を記しますので参考にして下さい。
後は実際に実行しながら、その効果を確かめてみてください。


○ ＴＯ３．ＥＸＰ
  このツールは、ポリゴンデータに三角形以上のポリゴンが含まれる時、それらを
三角形に分割します。
  また、その元のポリゴンデータに凹ポリゴン(*1)が含まれる時、それらを凸ポリ
ゴン(*2)になるよう適当に分割します。

  ・オプション
      -o  : この後に出力先のファイル名を指定する。省略時は標準出力。
      -f  : 出力先の指定ファイルが既にある場合、通常は上書きして良いか
      　　　確認してくる。このオプションを指定すると確認無しで強制的に
      　　　上書きになる。
      -a  : この後に任意のポリゴンオプションを指定する。出力時には、これら
            のポリゴンオプションが自動的に全ポリゴンに追加される。(*3)
            ポリゴンオプションが複数の場合は「"n c col1"」のようにダブル
            クウォーテーションで囲む。
      -h  : これらのオプションの簡単な説明が表示される。
      -m  : ポリゴン分割の種類を指定する。ｍのすぐ後ろに０から４までの数値を
            指定する。または−ｍだけで指定すると１が指定された事になる。
            各値による分割処理は以下の通り
              ０：凸分割処理のみ行い三角形分割はしない。
              １：凸分割処理はせずに三角形分割(type-A(*4))を行う。
              ２：凸分割処理はせずに三角形分割(type-B(*5))を行う。
              ３：凸分割処理後に三角形分割(type-A(*4))を行う。
              ４：凸分割処理後に三角形分割(type-B(*5))を行う。
      -c  : 通常は、分割後に面積が０になったポリゴンを削除するが、このオプ
            ションを指定するとその削除処理を行わない。
      -n  : 通常は三角形以上のポリゴンは全て分割対象になるが、このオプション
            を指定すると歪んだポリゴン(*6)のみが分割対象になる。従って正常な
            （フラットな）ポリゴンは分割対象から外れる。
            "-n5" のようにｎのすぐ後ろに「正の整数」を指定すると、歪み判定の
            精度を調節できる。この数値が小さい程精度が高くなる。ただし有効値
            の最大は90で、それより大きな値を指定しても90を指定した場合と効果
            に違いはなくなる。省略値は０。
            この値は、どこかでポリゴンが折れているような場合、その｢折れ角度｣
            と考えると良い。つまり例えば"-n5"と指定した時は｢折れ角度｣が５度
            以下のものは歪んでいるとは判定されずに、５度以上の｢折れ角度｣を
            持つポリゴンが分割対象となる。

  *1  内角が180度以上である角を含むポリゴン。例えばハートマークのような、
      へこんだ部分のある形や文字フォントをポリゴンデータ化した時等にでき
      易い。

  *2  全ての角の内角が180度以下であるポリゴン。いわゆる通常な四角や三角,
      正多角形等のような形状。

  *3  "-a"による追加オプションの指定に関しては、若干の注意事項があるので、
      最後の｢■ポリゴンオプションに関する注意事項｣を参照ください。

  *4  とにかく端からどんどん三角形になる部分を切り取って行く方法。その為
      凹ポリゴンからいきなりでも三角形に分割できます。反面、場合によっては
      細く面積の小さなポリゴン等ができてしまう可能性もあります。
      
  *5  type-Aと違い、各頂点を基点にあるパターンで分割してみて、なるべく分割
      後の各ポリゴンの面積が大きくなるようなパターンで分割します。が、特に
      凝ったパターンでは無いため効果がどの程度あるかは元データによって大き
      くバラつきがあります。
      また『幾つかの頂点が同一辺上に存在するようなポリゴン』に対しては、そ
      の幾つかの頂点情報を失ってしまうような分割の仕方をしてしまったり、凹
      ポリゴンからは直接分割できないので、そのようなデータの場合はtype-Aの
      分割法を選択した方が良いでしょう。

  *6  データによっては、各頂点がきちんと一つの平面上に無いポリゴンを含む場合
      があります。このようなポリゴンは、データ処理上不都合を生じる場合がまま
      あります。

  ・使用例
  
   >run386 -nocrt to3 src.p -n1 -m -o src3.p -a "c red s"


○ ＷＩＳＥＭＴ．ＥＸＰ

  このツールは、ポリゴンデータの各ポリゴンの向き（表裏）(*7)をあるポリゴン
（参照ポリゴン）の向きに合わせます。但し、各ポリゴンは必ず参照するポリゴンと
（他のポリゴンを介する等して）地続きの関係でなければならなりません(*8)。

  ・オプション
      -o  : （TO3.EXP の項を参照）
      -f  :         〃
      -a  :         〃
      -h  :         〃
      -i  : この後に参照ポリゴンの番号を指定する。番号はファイルに書かれ
            ているポリゴンデータで、上から順に０から数る。省略値は０。
      -b  : 参照ポリゴンと逆向きに合わせる。参照ポリゴンも逆向きになる。
      -B  : 全ポリゴンを「無条件に」逆向きにする。向きを合わせる訳では無い
            ので注意してください。

  *7  ポリゴンデータによっては、各ポリゴンの向きがまちまちになっている場合
      があります。意識的にそうしている場合以外は、レンダリングした時に部分
      的に「抜け」ができたり等の不都合が起こる事もあります。
      ポリゴンの表裏については別途添付の"POLYGON.DOC"を参照のこと。

  *8  あるポリゴンがそれまでのポリゴン群から独立していると、新しいグループ
      の基準ポリゴンとして使われます。当然そのポリゴンの向きが元々の基準
      ポリゴンと合っていなければ、そのポリゴンを基準とするグループ全部の
      向きが合わなくなります。


  ・使用例:
                                | ----test.pol-----
     0        1        2        |   p 0  x0 y0 z0
      +-------+-------+         |   p 1  x1 y1 z1
      |       |       |         |   p 2  x2 y2 z2
      |  P0   |  P1   |         |         .
      |       |       |         |         .
      |       |       |         |         .
     3+-------+-------+         |   P  0 3 4 1 ;
      |       | 4      5        |   P  1 4 5 2 ;
      |  P2   |                 |   P  3 4 7 6 ;
      |       |                 |
     6+-------+ 7               |
     
-------------------------------------------------------

  上図のようなデータにおいて、全てのポリゴンをP0の向き（左回り＝表向き）に
合わせたい場合
  
  >run386 wisemt test.pol -o test2.pol
  
のようにすれば、test2.polは

     -----test2.pol-----
       p 0  x0 y0 z0
             .
             .
             .
       P  0 3 4 1 ;
       P  1 4 5 2 ;
       P  6 7 4 3 ;

と、P2 が変更されて、全てのポリゴンが表向きに揃う。また
  
  A:\>run386 wisemt test.pol -i 2 -b -o test2.pol
  
でも、同じ結果になる。


○ ＦＲＡＣＴＡＬ．ＥＸＰ

  このツールは、ポリゴンデータに対して、中点変位法によるフラクタル分割変形(*9)
を行うものです。このコマンドを利用すると、山や岩のような一見複雑な形状を簡単
に作成する事ができます。
  但し、処理の都合上処理対象になるのは三角形(*13)のみです。

  ・オプション
      -o     : （TO3.EXP の項を参照）
      -f     :         〃
      -a     :         〃
      -h     :         〃
      -l     : この後に分割レベル(*10)を指定する。このオプションは必ず指定
               する必要がある。値は１以上を指定する（でないと効果無し）。
      -s     : この後に自己相似比(*11)を指定する。値は１以上（実数）を指定
      　　　　 する。省略値は１．０（この場合分割をするだけで、事実上変形
               は行われない）
      -r     : この後に乱数系列の初期化値（正の整数）を指定する。これは、
               変形時に使用する乱数発生の為の初期値として使用される。この
               値によって、変形の具合が変化する。
               このオプションが省略されると、初期値は不定になる。
      -d     : このオプションを指定すると、分割対象にならない縁の辺（自分
               以外に共有するポリゴンが無い辺）が、分割対象になります。
      -x/y/z : 変形時の中点変移に対する変移軸(*12)の指定。実際には"-x","-y"
               ,"-z" のように指定する。このオプションが省略されると、各頂
               点における法線により軸が決定する。

 *9,10,11,12  簡単に説明すると下図のようになります。つまり、1 分割レベルごと
      に各ポリゴンの各辺上に新しい点が発生し、１つのポリゴンが４つのポリゴン
      に分割されることになります。
   
                          +                         +
                         /|                        /|
                        / |                       / |
                       /  |                      /  |
                      /   |                     /   |
                     /    |      ====>         +----+
                    /     |                   /|   /|
                   /      |                  / |  / |
                  /       |                 /  | /  |
                 /        |                /   |/   |
                +---------+               +----+----+
      
      変位軸は、新しく発生した点の座標変位する方向をきめるものです。これ
      を省略した場合は、その都度各頂点ごとにその点に対する法線（ポリゴン
      の法線とは少々意味あいが異なる）を計算し、それによって決定されます。
      
      また、自己相似比とは新しく発生した点の座標変位の割合で、これが大き
      い程よりオブジェクトが変形することになり、１．０だと変位量は０とい
      うことになります。大体目安としては、オプション"-x","-y","-z"を指定
      した場合1.1〜1.3程度、指定しない場合は1.01〜1.06程度の範囲が適当と
      思われます。
      これだけの説明では分かり難いと思いますが、後は色々試してみて下さい。
      
      なお、分割レベルが大きくなると、ポリゴン数は指数関数的に増えていく
      ので、注意してください。

  *13 三角形以外のポリゴンが含まれていても処理できますが、実際に分割の対象
      になるのは三角形のみです。また、三角形の各辺において共有するポリゴン
      が三角形以外の場合は、その辺については分割されません。つまり、三角形
      以外のポリゴンに囲まれた三角形は分割されないという事になります。


  ・使用例
  
    >run386 -nocrt fractal src3.p -l 2 -s 1.02 -f -o src_f.p


○ ＦＩＲＥＴ．ＥＸＰ
　このツールは、複数のポリゴンが隣接することによって生じる角(*14)に対して、
細分割をかけることにより角取りを行います。
（｢ごりぽん君｣(*15)で言う所のグローバルスムースとほぼ同じ機能です）

  ・オプション
      -o  : （TO3.EXP の項を参照）
      -f  :         〃
      -a  :         〃
      -h  :         〃
      -n  : この後に任意のポリゴンオプションを指定する。このオプションは分割
            によってできた新しいポリゴンに対して設定される。ポリゴンオプショ
            ンが複数の場合は「"n c col1"」のようにダブルクウォーテーションで
            囲む。(*16)
            ポリゴンオプションは省略可でもある。つまり"-n"のみ指定された場合
            は、各角を構成しているポリゴンから適当に選択されたポリゴンのもの
            が参照される。
      -l  : この後にまるめレベルを指定する。これで指定された回数だけ角取りの
            処理が行われる。数値は１以上を指定する（でないと効果無し）。
            省略値は１。
      -s  : この後にまるめ度を指定する。この数値が小さいほど、大きく角取りが
            行われる。数値は１．０以下を指定する（省略値は０．８）。

　*13 ここで言う角とは、「２つのポリゴンが接しているエッジ」「３つ以上の
      ポリゴンによって共有されている頂点」と定義されています。

  *14 OH!FM-TOWNS誌付録｢太っ腹FD平成5号｣にも収録されたR.KuMa氏作のポリゴン
      エディタ。その操作法には独特のものがある。
      現在FPICSTのLIBにはバージョンアップ版も登録されています。

  *15 "-a"オプションと"-n"オプションを併用する場合は、最終的に付加される事
      になるポリゴンオプションの内容が、なるべく重複しないよう考慮するよう
      にしてください。
      （｢■ポリゴンオプションに関する注意事項｣参照のこと）


  ・使用例
  
    >run386 -nocrt firet src.p -l 1 -s 0.55 -o out.p


○ ＲＯＯＰ２Ｆ．ＥＸＰ
　このツールは、複数のループデータからポリゴンデータを生成します。（一般に
よく「スキン」機能と呼ばれるものに近い）このループデータは、MONOLITH形式の
ポリゴンファイルと、ラインデータ(*16)によるものの２種類を利用できる。
  ループデータは複数の頂点から成り、最初の点と最後の点の間で閉じた線分データ
である。例えばxy平面上で円を形作るループデータ（つまりz値が一定）をz軸方向に
少しずつずらして並べたデータをこのツールに入力すると、円筒状のポリゴンデータ
が生成される。

  ・オプション
      -o  : （TO3.EXP の項を参照）
      -f  :         〃
      -a  :         〃
      -h  :         〃
      -c  : 通常はループの一番上と下部分にはポリゴンができず口が開いたままと
            となるが、このオプションを指定すると一番上と下のループをポリゴン
            化して追加する。

　*16 ポリゴンデータをループデータとして利用する場合は、単純に一つのポリゴン
      を一つのループに見なします。
      ラインデータは以下のような形式で記述します。
      
        n1         -----  １つ目のループの頂点数
        x1 y1 z1   -----  １個目の頂点座標
        x2 y2 z2   -----  ２個目の頂点座標
           ：
           ：
        xn yn zn   -----  n1個目の頂点座標
        n2         -----  ２つ目のループの頂点数
        x1 y1 z1   -----  １個目の頂点座標
        x2 y2 z2   -----  ２個目の頂点座標
           ：
           ：
        xn yn zn   -----  n2個目の頂点座標
           ：
        n#         -----  ＃つ目のループの頂点数
        x1 y1 z1   -----  １個目の頂点座標
        x2 y2 z2   -----  ２個目の頂点座標
           ：
           ：
        xn yn zn   -----  n#個目の頂点座標


  ・使用例
  
    >run386 -nocrt roop2f roop.d -o roop.p


■ポリゴンオプションに関する注意事項

  PTOOLでは、元データに設定されている物とは別に、さらに出力時に"-a"オプション
（また"FIRET.EXP"については､"-n"オプションでも）任意のオプションを追加する
事ができますが、この場合元データの物と"-a"での物と重複するオプションが出て
くる可能性があります。その場合最終的に各ポリゴンに付加されるポリゴンオプション
は"-a"で指定された物が優先されます。従って、例えば元データのあるポリゴンに
"c red"と設定されていたとしても、ptoolコマンド実行時に｢-a "c col1"｣のように
指定された時は、"c col1"に変更されてしまいます。

  元々この"-a"オプションによるポリゴンオプションの追加機能は、全くポリゴン
オプションの設定されていない元データの全ポリゴンに対して、"s"オプションを
付加しスムースシェーディングを有効にしたいという要望に対して付けた機能なの
で、基本的にはそのような単純に全ポリゴンに対してあるポリゴンオプションを追加
したいという場合に限り利用するべき機能であることを予めご了承ください。


                                                                Aug.'95

                             *** NIFTY:HBA00106／佐藤 雅弘／ＭＡＲＩＮ ***
