Link appearance の設定方法 - crest-cassia/CrowdWalk GitHub Wiki

Link appearance ファイルを使ってリンクの表示形式を変更することが出来ます。

手順:

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

Link appearance ファイルの記述方法

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

className 一覧

項目 className
2D_View ActualWidth2D 実際の幅で表示する
FixedWidth2D 指定の幅で表示する
SolidLine2D 細い実線で表示する
3D_View ActualWidth3D 実際の幅で表示する
FixedWidth3D 指定の幅で表示する
SolidLine3D 細い実線で表示する

parameters 一覧

設定項目 意味
width 実数 リンクの表示幅(m) FixedWidth2D/FixedWidth3Dでのみ意味を持ちます
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では色味が少し異なります
transparency 0.0~1.0 透明度 1.0 で完全に透明
method filling 内側を塗り潰す表示スタイル SolidLine3Dでは意味を持ちません
bordering リンクの幅に沿って2本の実線を引く表示スタイル SolidLine3Dでは意味を持ちません

※使用されないパラメータを設定しても無視されます。

Link appearance ファイルの記述例

[
    {
        "tag" : "*",
        "2D_View" : {
            "className" : "ActualWidth2D",
            "parameters" : {
                "color" : "DEFAULT_LINK_COLOR",
                "transparency" : 0.7,
                "method" : "bordering"
            }
        },
        "3D_View" : {
            "className" : "ActualWidth3D",
            "parameters" : {
                "color" : "DEFAULT_LINK_COLOR",
                "transparency" : 0.0,
                "method" : "bordering"
            }
        }
    }
]

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

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

"link_appearance_file" : "link_appearance.json",

2D シミュレーションビューアのスクリーンショット(上記の記述例を適用)

capture003394

標準の設定ファイル

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

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

[
    {
        "tag" : "STRUCTURE",
        "2D_View" : {
            "className" : "FixedWidth2D",
            "parameters" : {
                "width" : 5.0,
                "color" : "WHITE",
                "transparency" : 0.245,
                "method" : "filling"
            }
        },
        "3D_View" : {
            "className" : "FixedWidth3D",
            "parameters" : {
                "width" : 5.0,
                "color" : "WHITE",
                "transparency" : 0.245,
                "method" : "filling"
            }
        }
    },
    {
        "tag" : "FLOOR",
        "2D_View" : {
            "className" : "FixedWidth2D",
            "parameters" : {
                "width" : 5.0,
                "color" : "GRAY",
                "transparency" : 0.95,
                "method" : "filling"
            }
        },
        "3D_View" : {
            "className" : "FixedWidth3D",
            "parameters" : {
                "width" : 5.0,
                "color" : "GRAY",
                "transparency" : 0.95,
                "method" : "filling"
            }
        }
    },
    {
        "tag" : "HIGHWAY",
        "2D_View" : {
            "className" : "ActualWidth2D",
            "parameters" : {
                "color" : "WHITE",
                "transparency" : 0.2525,
                "method" : "filling"
            }
        },
        "3D_View" : {
            "className" : "ActualWidth3D",
            "parameters" : {
                "color" : "WHITE",
                "transparency" : 0.2525,
                "method" : "filling"
            }
        }
    },
    {
        "tag" : "MAINROAD",
        "2D_View" : {
            "className" : "ActualWidth2D",
            "parameters" : {
                "color" : "GRAY",
                "transparency" : 0.7525,
                "method" : "filling"
            }
        },
        "3D_View" : {
            "className" : "ActualWidth3D",
            "parameters" : {
                "color" : "GRAY",
                "transparency" : 0.7525,
                "method" : "filling"
            }
        }
    },
    {
        "tag" : "RAILWAY",
        "2D_View" : {
            "className" : "ActualWidth2D",
            "parameters" : {
                "color" : "GRAY",
                "transparency" : 0.2525,
                "method" : "filling"
            }
        },
        "3D_View" : {
            "className" : "ActualWidth3D",
            "parameters" : {
                "color" : "GRAY",
                "transparency" : 0.2525,
                "method" : "filling"
            }
        }
    },
    {
        "tag" : "BRIDGE",
        "2D_View" : {
            "className" : "ActualWidth2D",
            "parameters" : {
                "color" : "GRAY",
                "transparency" : 0.4525,
                "method" : "filling"
            }
        },
        "3D_View" : {
            "className" : "ActualWidth3D",
            "parameters" : {
                "color" : "GRAY",
                "transparency" : 0.4525,
                "method" : "filling"
            }
        }
    },
    {
        "tag" : "FRAME",
        "2D_View" : {
            "className" : "ActualWidth2D",
            "parameters" : {
                "color" : "YELLOW",
                "transparency" : 0.2525,
                "method" : "filling"
            }
        },
        "3D_View" : {
            "className" : "ActualWidth3D",
            "parameters" : {
                "color" : "YELLOW",
                "transparency" : 0.2525,
                "method" : "filling"
            }
        }
    },
    {
        "tag" : "ONE-WAY-FORWARD",
        "2D_View" : {
            "className" : "ActualWidth2D",
            "parameters" : {
                "color" : "PURPLE",
                "transparency" : 0.5,
                "method" : "filling"
            }
        },
        "3D_View" : {
            "className" : "ActualWidth3D",
            "parameters" : {
                "color" : "PURPLE",
                "transparency" : 0.5,
                "method" : "filling"
            }
        }
    },
    {
        "tag" : "ONE-WAY-BACKWARD",
        "2D_View" : {
            "className" : "ActualWidth2D",
            "parameters" : {
                "color" : "LIGHTBLUE",
                "transparency" : 0.25,
                "method" : "filling"
            }
        },
        "3D_View" : {
            "className" : "ActualWidth3D",
            "parameters" : {
                "color" : "LIGHTBLUE",
                "transparency" : 0.25,
                "method" : "filling"
            }
        }
    },
    {
        "tag" : "ONEWAY",
        "2D_View" : {
            "className" : "ActualWidth2D",
            "parameters" : {
                "color" : "ARED",
                "transparency" : 0.7525,
                "method" : "filling"
            }
        },
        "3D_View" : {
            "className" : "ActualWidth3D",
            "parameters" : {
                "color" : "ARED",
                "transparency" : 0.7525,
                "method" : "filling"
            }
        }
    },
    {
        "tag" : "ROAD-CLOSED",
        "2D_View" : {
            "className" : "ActualWidth2D",
            "parameters" : {
                "color" : "RED",
                "transparency" : 0.25,
                "method" : "filling"
            }
        },
        "3D_View" : {
            "className" : "ActualWidth3D",
            "parameters" : {
                "color" : "RED",
                "transparency" : 0.25,
                "method" : "filling"
            }
        }
    },
    {
        "tag" : "BORDERING",
        "2D_View" : {
            "className" : "ActualWidth2D",
            "parameters" : {
                "color" : "DEFAULT_LINK_COLOR",
                "transparency" : 0.7,
                "method" : "bordering"
            }
        },
        "3D_View" : {
            "className" : "ActualWidth3D",
            "parameters" : {
                "color" : "DEFAULT_LINK_COLOR",
                "transparency" : 0.0,
                "method" : "bordering"
            }
        }
    },
    {
        "tag" : "*",
        "2D_View" : {
            "className" : "SolidLine2D",
            "parameters" : {
                "color" : "DEFAULT_LINK_COLOR",
                "transparency" : 0.7
            }
        },
        "3D_View" : {
            "className" : "SolidLine3D",
            "parameters" : {
                "color" : "DEFAULT_LINK_COLOR",
                "transparency" : 0.0
            }
        }
    }
]

開発者向け情報

2D_View クラスの作成

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

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

3D_View クラスの作成

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

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

クラスローダー用の設定

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

{
    "ActualWidth2D" : "nodagumi.ananPJ.Gui.LinkAppearance.view2d.ActualWidth2D",
    "ActualWidth3D" : "nodagumi.ananPJ.Gui.LinkAppearance.view3d.ActualWidth3D",
    "FixedWidth2D" : "nodagumi.ananPJ.Gui.LinkAppearance.view2d.FixedWidth2D",
    "FixedWidth3D" : "nodagumi.ananPJ.Gui.LinkAppearance.view3d.FixedWidth3D",
    "SolidLine2D" : "nodagumi.ananPJ.Gui.LinkAppearance.view2d.SolidLine2D",
    "SolidLine3D" : "nodagumi.ananPJ.Gui.LinkAppearance.view3d.SolidLine3D"
}