瀏覽代碼

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

alteredq 13 年之前
父節點
當前提交
9458d47125
共有 1 個文件被更改,包括 13 次插入1 次删除
  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 = []
                 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:]:
                     vertex = parse_vertex(v)
                     if vertex['v']:
+                        if vertex['v'] < 0:
+                            vertex['v'] += vertlen
                         vertex_index.append(vertex['v'])
                     if vertex['t']:
+                        if vertex['t'] < 0:
+                            vertex['t'] += uvlen
                         uv_index.append(vertex['t'])
                     if vertex['n']:
+                        if vertex['n'] < 0:
+                            vertex['n'] += normlen
                         normal_index.append(vertex['n'])
-
                 faces.append({
                     'vertex':vertex_index,
                     'uv':uv_index,