【问题标题】:Feeding Blender an XML road file为 Blender 提供一个 XML 道路文件
【发布时间】:2012-07-06 13:05:47
【问题描述】:

我的目标是模拟特定城市的交通。我将使用 Blender 绘制汽车,并让它们在类似于曼哈顿配置的车道上移动。所有关于汽车在给定时刻的相对位置/方向和速度的信息都由一个 XML 文件确定。

如何在 Blender 中读取这个 XML 文件,以便汽车获得有关如何在道路上行驶的有用信息?

edit: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>

【问题讨论】:

    标签: python xml opengl graphics blender


    【解决方案1】:

    如果你使用python的xml dom解析器应该不难。 试试下面的代码,应该可以正常工作。我在我的电脑上测试过。

    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 获取节点或元素列表。代码没有空检查等,因此请确保添加它们。

    快乐编码:-)

    【讨论】:

    • 非常感谢!我如何让 Blender 使用它?
    • @Cyber​​Shot,在上面的代码中导入 blender 脚本 API,import bpy,其余的应该可以正常工作。
    【解决方案2】:

    Blender 与 Python-3 以及 Python 标准库中的所有模块完全集成。其中包括几个 XML 处理器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 2022-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多