in src/npybvh/bvh.py [0:0]
def _parse_hierarchy(self, text):
lines = re.split('\\s*\\n+\\s*', text)
joint_stack = []
index_offset = 0
for line in lines:
words = re.split('\\s+', line)
instruction = words[0]
if instruction == "JOINT" or instruction == "ROOT":
parent = joint_stack[-1] if instruction == "JOINT" else None
joint = BvhJoint(words[1], parent, index_offset)
self.joints[joint.name] = joint
joint_stack.append(joint)
if instruction == "ROOT":
self.root = joint
elif instruction == "CHANNELS":
index_offset += int(words[1])
for i in range(2, len(words)):
joint_stack[-1].channels.append(words[i])
elif instruction == "OFFSET":
for i in range(1, len(words)):
joint_stack[-1].offset[i - 1] = float(words[i])
elif instruction == "End":
joint = BvhJoint(joint_stack[-1].name + "_end", joint_stack[-1], index_offset)
# joint_stack[-1].add_child(joint)
joint_stack.append(joint)
self.joints[joint.name] = joint
elif instruction == '}':
joint_stack.pop()