title: Quickest way to read geometry data from a custom file
body: <p>I'm trying to create a custom point cache format for Houdini and 3D Max. I have managed to send geometry data between both programs using a custom ascii and xml file. The file is just a list of vectors for every frame of animation. I am basically looping throught the vectors from the file and setting the objects position in Houdini and Max when ever the frame changes. The problem is that it if there is more than 500 vectors for every frame then it starts going too slow. I dont know if there is a more efficent way to read the vectors from the file.</p>
  
  <p>I am currently using Python and Maxscript but am thinking of moving to C++ and using a custom binary file but dont think thats gonna make much difference.Below is the Python code from houdini using an xml file which seems to be a little quicker than the ascii file.</p>
  
  <pre><code>import os
  import xml.etree.ElementTree
  
  #XML file
  if hou.frame() == 1:
      filePath = os.path.abspath("F:\My Documents\Work\University\Year 3\Final Majour Project\Output_Test.xml")
      xmlFile = xml.etree.ElementTree.parse(filePath)
  
  # This code is called when instances of this SOP cook.
  geo = hou.pwd().geometry()
  
  # Add code to modify the contents of geo.
  def moveObjectDef():
      sceneTime = int(hou.frame()) #Current frame time
      frameTag = xmlFile.findall('frame')
      frameValue = frameTag[sceneTime].get('currentFrame')
      frame = int(frameValue.rstrip('f'))
  
      objectTag = xmlFile.findall('frame/object')
      objectVertAmount = objectTag[frame].get('vertcount')
  
      vertsTagList = list(objectTag[frame].getiterator('verts'))
  
      for v in range(int(objectVertAmount)): #Looping through vert list
          vert = eval(vertsTagList[v].text)
          hou.node('/obj/geo1/newop1').geometry().points()[v].setPosition([vert[0],vert[2],vert[1]]) #Setting point poistion
  
  moveObjectDef()
  </code></pre>
  
  <p>Xml file layout</p>
  
  <pre><code>&lt;?xml version="1.0"?&gt;
  &lt;root&gt;
   &lt;frame currentFrame="0f"&gt;
    &lt;object transform="(matrix3 [1,0,0] [0,1,0] [0,0,1] [-74.0923,-1.78125,0])" vertcount="482"&gt;
     &lt;verts&gt;[-74.0923,-1.78125,25.9382]&lt;/verts&gt;
     &lt;verts&gt;[-74.0923,3.27904,25.4398]&lt;/verts&gt;...
     .............
  </code></pre>