Skip to content

Node appearance の設定方法

Mitsuo Saito edited this page Feb 12, 2019 · 4 revisions

Node appearance ファイルを使ってノードの表示スタイルを変更することが出来ます。

信号機ノードとゴールノードを画像で表示

capture000848

出口ノードをてれすくん画像で表示

capture000006

手順:

  1. プロパティファイルが存在するディレクトリに Node appearance ファイルを作成します。
  2. プロパティファイルに Node appearance の設定を追加します。

Node appearance ファイルの記述方法

  • JSON 形式で記述します。
  • ルートの要素は配列です。その中に複数の連想配列を記述します。
  • 連想配列には tag、2D_View、3D_View を記述し、これで一つの定義となります。
  • tag には、この定義を適用するノードを決めるためのキーワードを設定します。このキーワードとノードタグが以下のルールで照合されます。
    • キーワードが "文字列" の場合にはタグに "文字列" が含まれていれば該当します。(部分一致)
    • キーワードが "/正規表現/" の場合にはタグがその正規表現とマッチすれば該当します。
    • キーワードが "*" の場合にはタグなしを含むすべてに該当します。
  • 2D_View には 2D シミュレーションビューアで使用するノードの表示スタイルを設定します。
    • className にはクラス名を設定します。
    • parameters には初期設定用のパラメータを設定します。
  • 3D_View には 3D シミュレーションビューアで使用するノードの表示スタイルを設定します。
    • className にはクラス名を設定します。
    • parameters には初期設定用のパラメータを設定します。
  • className に不適切な値を設定すると "Node appearance file error: invalid className" や "java.lang.ClassCastException" が発生して CrowdWalk がエラー終了します。
  • 旧書式(タグ名: { 設定内容 })での記述は非推奨になりました。

className と parameters の一覧

className 表示内容 parameters
2D_View FixedScaleImageNode2D 固定スケールで画像を原寸表示する
(透過GIF/PNG対応)
fileName 画像ファイル名
(プロパティファイルのディレクトリからの相対パス)
FixedScaleRoundNode2D 固定スケールで丸を表示する diameter 直径(pixel)
color 色名
transparency 透明度(0.0~1.0)
※1.0 で完全に透明
ImageNode2D 画像を表示する
(透過GIF/PNG対応)
fileName 画像ファイル名
(プロパティファイルのディレクトリからの相対パス)
width マップ上の画像の幅(m)
height マップ上の画像の高さ(m)
InvisibleNode2D 何も表示しない
RoundNode2D 丸を表示する diameter 直径(m)
color 色名
transparency 透明度(0.0~1.0)
※1.0 で完全に透明
SquareNode2D 正方形を表示する sideLength 辺の長さ(m)
color 色名
transparency 透明度(0.0~1.0)
※1.0 で完全に透明
3D_View ImageNode3D 画像を表示する
(透過GIF/PNG対応)
fileName 画像ファイル名
(プロパティファイルのディレクトリからの相対パス)
width マップ上の画像の幅(m)
height マップ上の画像の高さ(m)
InvisibleNode3D 何も表示しない
RoundNode3D 丸を表示する diameter 直径(m)
height 厚さ(m)
color 色名
transparency 透明度(0.0~1.0)
※1.0 で完全に透明
SquareNode3D 正方形を表示する sideLength 辺の長さ(m)
height 厚さ(m)
color 色名
transparency 透明度(0.0~1.0)
※1.0 で完全に透明

※colorパラメータに指定できる色名の種類:
 BLACK, BLACK2, GRAY, GRAY2, LIGHTGRAY, RED, GREEN, BLUE, DARKBLUE, LIGHTBLUE, SLATEBLUE, TURQUOISE, YELLOW, WHITE, PINK, LIGHTB, APINK, ALIGHTB, ARED, PURPLE, PRED, BACKGROUND_3D_COLOR, DEFAULT_LINK_COLOR, DEFAULT_AGENT_COLOR
 (2D_Viewと3D_Viewでは色味が少し異なります)

Node appearance ファイルの記述例

[
    {
        "tag" : "GOAL1",
        "2D_View" : {
            "className" : "ImageNode2D",
            "parameters" : {
                "fileName" : "goal.png",
                "width" : 20.0,
                "height" : 20.0
            }
        },
        "3D_View" : {
            "className" : "ImageNode3D",
            "parameters" : {
                "fileName" : "goal.png",
                "width" : 20.0,
                "height" : 20.0
            }
        }
    },
    {
        "tag" : "GOAL2",
        "2D_View" : {
            "className" : "SquareNode2D",
            "parameters" : {
                "sideLength" : 1.5,
                "color" : "BLUE",
                "transparency" : 0.0
            }
        },
        "3D_View" : {
            "className" : "SquareNode3D",
            "parameters" : {
                "sideLength" : 1.5,
                "height" : 0.1,
                "color" : "BLUE",
                "transparency" : 0.0
            }
        }
    }
]

プロパティファイルの設定方法

node_appearance_file 項目に Node appearance ファイルのパスを指定します。

"node_appearance_file" : "node_appearance.json",

標準の設定ファイル

標準形式で表示するための設定ファイルが "CrowdWalk/crowdwalk/src/main/resources/node_appearance.json" です。
Node appearance ファイルを使用しない場合、または使用しても適用されなかったノードには標準の設定が適用されます。

標準の設定ファイルの内容:

[
    {
        "tag" : "EXIT",
        "2D_View" : {
            "className" : "RoundNode2D",
            "parameters" : {
                "diameter" : 2.0,
                "color" : "BLACK2",
                "transparency" : 0.7
            }
        },
        "3D_View" : {
            "className" : "RoundNode3D",
            "parameters" : {
                "diameter" : 2.0,
                "height" : 0.1,
                "color" : "BLACK2",
                "transparency" : 0.65
            }
        }
    },
    {
        "tag" : "*",
        "2D_View" : {
            "className" : "InvisibleNode2D",
            "parameters" : {}
        },
        "3D_View" : {
            "className" : "InvisibleNode3D",
            "parameters" : {}
        }
    }
]

開発者向け情報

2D_View クラスの作成

2D_View のクラスは CrowdWalk/crowdwalk/src/main/java/nodagumi/ananPJ/Gui/NodeAppearance/view2d ディレクトリに、NodeViewBase2D のサブクラスとして作成します。

  • 初期設定パラメータの解析は init() メソッドをオーバーライドして記述します。パラメータの読み取りは JsonicHashMapGetter クラスのメソッドでおこないます。

3D_View クラスの作成

3D_View のクラスは CrowdWalk/crowdwalk/src/main/java/nodagumi/ananPJ/Gui/NodeAppearance/view3d ディレクトリに、NodeViewBase3D のサブクラスとして作成します。

  • 初期設定パラメータの解析は init() メソッドをオーバーライドして記述します。パラメータの読み取りは JsonicHashMapGetter クラスのメソッドでおこないます。

クラスローダー用の設定

新しくクラスを作成した時には "CrowdWalk/crowdwalk/src/main/resources/node_appearance_classes.json" に定義を加える必要があります。

{
    "FixedScaleImageNode2D" : "nodagumi.ananPJ.Gui.NodeAppearance.view2d.FixedScaleImageNode2D",
    "FixedScaleRoundNode2D" : "nodagumi.ananPJ.Gui.NodeAppearance.view2d.FixedScaleRoundNode2D",
    "ImageNode2D" : "nodagumi.ananPJ.Gui.NodeAppearance.view2d.ImageNode2D",
    "ImageNode3D" : "nodagumi.ananPJ.Gui.NodeAppearance.view3d.ImageNode3D",
    "InvisibleNode2D" : "nodagumi.ananPJ.Gui.NodeAppearance.view2d.InvisibleNode2D",
    "InvisibleNode3D" : "nodagumi.ananPJ.Gui.NodeAppearance.view3d.InvisibleNode3D",
    "RoundNode2D" : "nodagumi.ananPJ.Gui.NodeAppearance.view2d.RoundNode2D",
    "RoundNode3D" : "nodagumi.ananPJ.Gui.NodeAppearance.view3d.RoundNode3D",
    "SquareNode2D" : "nodagumi.ananPJ.Gui.NodeAppearance.view2d.SquareNode2D",
    "SquareNode3D" : "nodagumi.ananPJ.Gui.NodeAppearance.view3d.SquareNode3D"
}
Clone this wiki locally