Ground Viewer


プログラムなしで、地面データをチェック出来るように、
GViewer.exeを作りました。

地面データの作り方は、地面データの作り方のページをご覧ください。

このページでは、GViewerの使い方を説明します。
GViewerは、ダイアログに値を入れることによって、
地面データを表示します。

以下に、それぞれのダイアログの説明を、簡単に書きます。




地面BMP読み込みダイアログは、メインウインドウの、
File メニューから、表示させます。
E3DLoadGroundBMP関数に渡す、引数を、設定してください。





プロジェクション設定ダイアログは、
メインウインドウの、Setting メニューから表示させます。
クリッピング距離と、視野角を指定してください。




Viewの設定ダイアログは、
メインウインドウの、Setting メニューから表示させます。
視点の座標、角度、あたり判定のモードを指定してください。
地面を這うモードの時には、地面からの高さも指定してください。





ビルボードランダム配置ダイアログでは、
指定したテクスチャのビルボードを、任意の個数分、
ランダムな位置に、作成します。

ビルボードの作成は、何回も、実行出来ますが、
(ビルボードの総数が1500を超えるまでは、)
前回指定したテクスチャと同じファイル名だった場合は、
テクスチャの作り直しは、行われません。

そのため、一度、透過モードを間違えてセットしてしまった場合は、
次回に、同じテクスチャファイルで、透過モードを変更しても、変更は反映されません。
透過モードを指定し間違えた場合は、
gviewer.exeをもう一度、起動し直さないと、直りません。

黒透過モードは、R=0, G=0, B=0 の色の部分のアルファをゼロにします。
R=1, G=1, B=0 などの黒色は、表示されてしまいますので、
注意してください。

黒透過モードを使う場合は、
ファイルの大きさを、256の倍数にする
ことをおすすめします。
256の倍数でないテクスチャーは、DirectXでの読み込みの際に、
データの伸張や補間が行われて、
R=1, G=1, B=0 などの黒色が、生じてしまうからです。


背景指定ダイアログでは、
背景に表示する2D画像の指定を行います。

2枚目は、1枚目とモジュレートされて表示されます。
2枚目は、指定しなくてもかまいません。





ファイル出力
  メインウインドウの"File"メニューから、"地面のMQO出力" と "地面のスクリプト出力" を実行することが出来ます。

  "地面のMQO出力"では、 地面データは、800ポリゴンを目安(今後、変更されるかもしれません)に、
  オブジェクトに分けられて出力されます。
  ビルボード情報は、出力されません。

  "地面のスクリプト出力"では、Easy3D For HSPで、読み込み可能な、スクリプトファイルを出力します。
  ビルボード情報も、出力されます。
  ver1.0.0.6からは、ナビラインの情報も出力されます。


  ”移動可能領域の出力”では、移動可能領域を、メタセコイアのMQO形式で、出力することが出来ます。
  (当たり前ですが。。、移動可能領域を、読み込み済のときに、限ります。)

ファイル入力

  メインウインドウの"File"メニューの、"地面データの読み込み"メニューから、3種類の入力方法を選ぶことが出来ます。
  
  "BMPファイルからの読み込み"では、BMPの濃淡データから、地面データ、移動可能領域を読み込みます。
  
  "MQOファイルからの読み込み"では、mqo を、地面データ、移動可能領域として読み込むことが出来ます。

  "GViewerスクリプトからの読み込み"では、GViewerの、"地面のスクリプト出力"メニューで、出力したファイルを読み込みます。
    ver1.0.0.3では、
    E3DLoadGroundBMP、E3DLoadMQOFileAsGround、E3DCreateBillboard、E3DSetBillboardPos、
    E3DSetMovableArea (ver1.0.0.4で追加)、E3DLoadMQOFileAsMovableArea (ver1.0.0.4で追加)、
    E3DAddNaviPoint(ver1.0.0.6で追加)、E3DSetNaviPointPos(ver1.0.0.6で追加
    の8つの命令を読み込むことが出来ます。

    基本的には、GViewerで出力したものだけを、読み込むことを想定していますが、
    決まりを守れば、手で編集したスクリプトを、読み込ませることも出来ます。

    注意点としては、
    1, 1行に、1命令。
    2, 座標には、変数ではなく、数値を記述する。
    3, ファイル名は、""で囲まれた文字列であること。
    4, 引数の省略は、不可。
    5, hsid は、変数、または、数値のどちらかに、統一すること。
    6, 地面データは、一つしか、読み込めません。(一番最後に読み込んだものだけ、有効)
    7, curdir + "ファイル名" で記述されたスクリプトを読む場合は、
       gviewer.exeと同じディレクトリに、ファイルが無いとエラーになります。
    8, 小数点の使用は、不可です。整数のみを使用してください。

    GViewerのスクリプトの入出力の方法について、詳しく知りたい方は、
    GViewerのzip の中の、ソースファイル(GVScript.h, GVScript.cpp)に、コードが書いてあるので、
    参照してください。


メタセコイアで、移動可能領域の作成をする際の注意
  メタセコイアで、移動可能領域のデータを作る場合には、次の2点に気を付けてください。

  1.壁データは、常に、移動可能領域の内側を向くように、面の向きを設定してください。両面ポリゴンは、不可です。

  2.壁データは、少しの隙間もないように、作成してください。

ビルボードの個別編集

  ビルボードを、一個ずつ、画面で指定した位置に、作成したり、削除したり出来ます。
  
  ビルボードを作成する場合は、メインウインドウの、"ビルボード"メニューの中の、"ビルボード編集モードの設定"メニューを選びます。
  すると、下図のような、ダイアログが表示されます。

  ビルボードのAddモードを選択します。
  すると、3D画面上に、座標軸の形をした、オブジェクトが、表示されます。
  下図、参照。


  矢印キーで、座標軸オブジェクトを、ビルボードを配置したい場所に、移動して、
  Shft キーと A キーを同時に押すと、
  その場所に、ビルボードを作成することが出来ます。


  ビルボードを、一個ずつ、削除したい場合は、
  ビルボード編集モードの設定ダイアログで、”ビルボードDelモード”を選びます。
  矢印キーで、削除したいビルボードの近くに、座標軸オブジェクトを移動させると、
  座標軸オブジェクトに、一番近いビルボードが、点滅します。

  この状態で、Shift キー と R キーを同時に押すと、
  点滅していたビルボードを、削除することが出来ます。



 



上の図は、GViewerの実行画面です。
矢印キーで移動できます。


Shift + D キーで、ビューの位置や角度、FPSなどが、確認できます。

ver1.0.0.2からは、
ビルボードとカメラとの、あたり判定が付いています。
ぶつかって動けない場合は、矢印キーで、向きを変えて、移動してください。

木に囲まれると、動けなくなっちゃいます(笑)
そんなときは、Settingメニューの、Viewの設定ダイアログで、
あたり判定を、”空を飛ぶモード”にして、
Y座標の値に(地面からの高さの項目ではなく、上から2番目の項目です)、
ビルボードの高さより、高い座標値をセットすると、
脱出できます。

ナビライン、ナビポイントの編集

ナビポイントとは、キャラクターを自動操縦するときに、
位置の基準となる点のことです。

ナビポイントを、双方向につなげたリストを、ナビラインと呼ぶことにします。

GViewerでは、一度に一本のナビラインを編集できます。
一本のナビラインには、最大1000個まで、ナビポイントを格納することが出来ます。

まずは、ナビポイントを数個作ったときの画面をご覧ください。




作成したナビポイントは、分かりやすいように、円柱型のモデルとして、表示されます。
円柱には、ナビポイントを一意に識別するIDの下1桁の数字が、
テクスチャーとして、貼られています。
見やすいように、円柱は、回転します。

ナビポイントの編集をしたいときは、”ナビポイント”メニューの”ナビポイントの編集モードの設定”メニューを選びます。



ビルボードの編集と同じように、AddモードやDelモードを選ぶと、
Shift + A, Shift + R キーで、ナビポイントの追加、削除が出来るようになります。

おおまかな間隔で、ナビポイントを作成したら、
”ナビポイント”メニューの”ナビポイントを補間する”メニューで、
ナビポイントとナビポイントの間に、補間により新しいナビポイントを作成することが出来ます。



ダイアログで、分割数を指定するだけでOKです。

補間により、ナビポイントを作成すると、ナビポイントが、地面に潜ってしまうことがあります。
そんなときは、”ナビポイント”メニューの”全てのナビポイントを地面の高さにセットする”メニューを選択してください。

また、補間を行うと、ポイントIDがチェインの順番と異なってしまいます。
わかりにくくなってしまった場合には、
”ナビポイント”メニューの”ナビポイントの番号をふり直す”メニューを選択してください。
チェインと同じ順番に、ぽいんとIDがふり直されます。



環境設定


GViewerの動作環境によっては、移動単位が大きすぎると感じたり、
小さすぎると感じたりすることがあると思います。

なので、矢印キーを押したときの、移動距離の大きさと、角度の変化量を設定できるようにしました。
”環境設定”メニューの”Viewの移動量の設定”めにゅーを選ぶと下のダイアログが出て、設定できるようになります。





GViewerは、Easy3Dを使用して作られています。
zipには、実行ファイルの他にも、
Visual Studio .Netのプロジェクトファイル( ATLベース )と、
ソースコードが入っています。





ver1.0.0.2での変更点
  メニューから、ビルボードと背景の、作成と削除が出来るようになりました。
  メタセコイア(mqo) 出力機能が付きました。



ver1.0.0.3での変更点
  書き出し機能の拡張。
    Easy3D For HSPで、読み込み可能な、スクリプト出力を追加。
      スクリプトには、ビルボードの情報を書き出すことも可能となりました。

  読み込み機能の拡張。
    mqo ファイルを、地面データとして、読み込むことが、可能となりました。
    GViewerで、書き出した、スクリプト(ビルボード情報を含む)を、読み込む機能が付きました。
    
  ビルボードを、一個ずつ、画面で指定した位置に、作成、削除、出来るようになりました。

  全てのビルボードを、地面の高さに再配置する機能の追加。
    "ビルボード" メニューのなかの、”全てのビルボードを地面の高さに再配置する”メニューを選ぶことで、
    実行できます。
    

ver1.0.0.4での変更点
  移動可能領域の入出力
    MQO、スクリプトに対応。
      FILEメニューに、移動可能領域の読み込み、出力メニューが追加されました。

  壁スリ移動の実装
    移動可能領域を読み込むと、自動的に、領域の外に出ないように(外から内は可)、
    カメラの位置座標と、カメラの角度を制御します。

ver1.0.0.5での変更点
  Easy3D の新しいバージョン(ver2.0.1.7)に対応するための、
  マイナーチェンジ
    E3DInit, E3DBye に引数が追加されたことなどに、対応しました。


ver1.0.0.6での変更点
  スクリプト読み込み時に、ファイルが見つからなかったときの処理を修正。
  ナビライン作成、操作、保存、読み込みのための機能を追加。
  視点の移動量を変更できるようにした。

ver1.0.0.7での変更点
  Easy3D の更新に伴う、バージョンアップ。
  地面データとビルボード表示が、欠けたり、くにゃくにゃしなくなりました。


ver1.0.0.8での変更点
  地面のスクリプト出力機能に、C言語用のコードを出力するモードを追加しました。


ver1.0.0.9での変更点
  Windows 95、Windows 98、および Windows NT 4 で、実行した場合に、
  ダイアログの日本語が、文字化けする不具合があったので、修正しました。
  「MS Shell Dlg」指定から、「MS ゴシック」指定に変更しました。




ダウンロード


GViewer ver1.0.0.9 with マニュアル、ソースプロジェクト (2145KB)のダウンロード


!!! Visual Studio.Net などの開発環境をインストールしていない方や、
!!! 実行時に、DLLが足りないとメッセージが出た方は、
!!! 以下のファイルも必要となります。(msvcr70.dllと、msvcrt.dl lが入っています。)
!!! 解凍後、gviewer.exeと同じフォルダに、コピーしてください。

必要なWindowsのDLL、MSVCR70_DLL のダウンロード


Easy3D For HSPのページに戻る

Easy3D のページに戻る

トップページに戻る