2

私の目標は、特定の都市の交通をシミュレートすることです。Blender を使用して車を描き、マンハッタン構成に似た車線を移動させます。特定の瞬間における車の相対的な位置/方向および速度に関するすべての情報は、XML ファイルによって決定されます。

Blender でこの XML ファイルを読み取るにはどうすればよいのでしょうか?

編集: Python はおそらく開始するのに適した場所です。しかし、実際に文字列を解析する必要がありますか? または、Blender との簡単な XML 互換性はありますか?

インポートする必要がある XML は基本的に次のようになります。

<sumo-netstate>
  <timestep time="0.00">
        <edge id="34403897">
            <lane id="34403897_0">
                <vehicle id="t0" pos="5.10" speed="0.00"/>
            </lane>
        </edge>
    </timestep>
    <timestep time="1.00">
        <edge id="-10745949#5">
            <lane id="-10745949#5_0">
                <vehicle id="t1" pos="5.10" speed="0.00"/>
            </lane>
        </edge>
        <edge id="34403897">
            <lane id="34403897_0">
                <vehicle id="t0" pos="6.54" speed="1.44"/>
            </lane>
        </edge>
    </timestep>
..
..
..
</sumo-netstate>
4

2 に答える 2

1

BlenderはPython-3と完全に統合されており、Python標準ライブラリのすべてのモジュールを使用できます。これには、いくつかのXMLプロセッサが含まれています。

于 2012-07-06T09:40:41.190 に答える
1

python の xml dom パーサーを使えば難しくないはずです。以下のコードを試してみてください。正しく動作するはずです。PCでテストしました。

from xml.dom.minidom import parse
from xml.dom.minidom import Node

domData = parse("XMLFile.xml")
lanes = domData.getElementsByTagName("lane")
for lane in lanes:
    #print lane id
    laneId = lane.getAttribute("id")
    print "LaneID: " + laneId

    #print vehicle id, position and speed
    vehicles = lane.getElementsByTagName("vehicle")
    for vehicle in vehicles:
        vehicleId = vehicle.getAttribute("id")
        vehiclePos = vehicle.getAttribute("pos")
        vehicleSpeed = vehicle.getAttribute("speed")
        print "\tVehicleID: " + vehicleId, "VehiclePos: " + vehiclePos, "VehicleSpeed: " + vehicleSpeed

domData.unlink()

これは minidom を使用し、xml ドキュメントのノードを解析します。getElemetsByTagName を使用して、ノードまたは要素のリストを取得できます。コードにはnullチェックなどがないので、必ず追加してください。

ハッピーコーディング:-)

于 2012-07-06T05:41:22.250 に答える