Browse Source

Merge remote-tracking branch 'remotes/netshade/negative-face-index-in-obj-models' into dev

alteredq 13 years ago
parent
commit
9458d47125
1 changed files with 13 additions and 1 deletions
  1. 13 1
      utils/exporters/obj/convert_obj_three.py

+ 13 - 1
utils/exporters/obj/convert_obj_three.py

@@ -536,15 +536,27 @@ def parse_obj(fname):
                 uv_index = []
                 uv_index = []
                 normal_index = []
                 normal_index = []
 
 
+                
+                # Precompute vert / normal / uv lists
+                # for negative index lookup
+                vertlen = len(vertices) + 1
+                normlen = len(normals) + 1
+                uvlen = len(uvs) + 1
+
                 for v in chunks[1:]:
                 for v in chunks[1:]:
                     vertex = parse_vertex(v)
                     vertex = parse_vertex(v)
                     if vertex['v']:
                     if vertex['v']:
+                        if vertex['v'] < 0:
+                            vertex['v'] += vertlen
                         vertex_index.append(vertex['v'])
                         vertex_index.append(vertex['v'])
                     if vertex['t']:
                     if vertex['t']:
+                        if vertex['t'] < 0:
+                            vertex['t'] += uvlen
                         uv_index.append(vertex['t'])
                         uv_index.append(vertex['t'])
                     if vertex['n']:
                     if vertex['n']:
+                        if vertex['n'] < 0:
+                            vertex['n'] += normlen
                         normal_index.append(vertex['n'])
                         normal_index.append(vertex['n'])
-
                 faces.append({
                 faces.append({
                     'vertex':vertex_index,
                     'vertex':vertex_index,
                     'uv':uv_index,
                     'uv':uv_index,