2012-07-06 2 views
2

내 목표는 특정 도시의 트래픽을 시뮬레이트하는 것입니다. Blender를 사용하여 자동차를 그려보고 맨하탄 구성과 유사한 차선을 따라 움직일 것입니다. 주어진 순간에 자동차의 상대 위치/방향 및 속도에 대한 모든 정보는 XML 파일에 의해 결정됩니다.블렌더 XML로드 파일

도로에서 이동하는 방법에 대한 유용한 정보를 차량에 제공하기 위해이 XML 파일을 Blender에서 어떻게 읽습니까?

편집 : 아마도 파이썬은 시작하기에 좋은 장소 일 것입니다. 하지만 실제로 문자열을 구문 분석해야합니까? 아니면 Blender와 XML 호환성이 있습니까? 당신은 파이썬의 XML을 DOM 파서를 사용하는 경우 그것은 어려운해서는 안됩니다

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

답변

1

: 같은

나는 기본적으로 가져올 필요가있는 XML 보인다. 아래 코드를 사용해보십시오. 제대로 작동해야합니다. 나는 그것을 내 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 체크 등이 없으므로 추가하십시오.

해피 코딩 :-)

+0

고맙습니다. Blender가 이것을 어떻게 사용하게할까요? – CyberShot

+0

@CyberShot, 위의 코드에서 블렌더 스크립트 API를 가져오고, 'import bpy'와 나머지는 그대로 작동해야합니다. –

1

블렌더가 완전히 파이썬 표준 라이브러리에서 파이썬 3과 모든 모듈에 통합되어 있습니다. 여기에는 여러 XML 프로세서가 포함됩니다.