OSDN Git Service

refactored
authornomeu <nomeu@72ae2088-5f33-de11-a17b-0000e250a282>
Mon, 19 Sep 2011 08:18:22 +0000 (08:18 +0000)
committernomeu <nomeu@72ae2088-5f33-de11-a17b-0000e250a282>
Mon, 19 Sep 2011 08:18:22 +0000 (08:18 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tdcgexplorer/trunk/tso2mqo@2028 72ae2088-5f33-de11-a17b-0000e250a282

TSOGenerator.cs

index af0ccaf..1ab68d7 100644 (file)
@@ -268,6 +268,8 @@ namespace Tso2MqoGui
                 if(i.name.ToLower() == "bone")\r
                     continue;\r
 \r
+                Console.WriteLine("object:" + i.name);\r
+\r
                 // 一番近い頂点への参照\r
                 List<int>       vref= new List<int>(i.vertices.Count);\r
 \r
@@ -307,7 +309,10 @@ namespace Tso2MqoGui
                     faces1.Add(j);\r
 \r
 #region ボーンパーティション\r
-                while(faces1.Count > 0)\r
+                Console.WriteLine("  vertices bone_indices");\r
+                Console.WriteLine("  -------- ------------");\r
+\r
+                while (faces1.Count > 0)\r
                 {\r
                     int                 mtl     = i.faces[faces1[0]].mtl;\r
                     selected.Clear();\r
@@ -328,7 +333,7 @@ namespace Tso2MqoGui
                         v[0]                    = vlst[vref[f.a]];\r
                         v[1]                    = vlst[vref[f.b]];\r
                         v[2]                    = vlst[vref[f.c]];\r
-                        bool            valid       = true;\r
+\r
                         work.Clear();\r
 \r
                         for(int k= 0; k < 3; ++k)\r
@@ -339,35 +344,17 @@ namespace Tso2MqoGui
                             byte*       idx     = (byte*)(&idx0);\r
                             float*      wgt     = (float*)(&wgt0);\r
 \r
-//                              if(idx0 != 0)\r
-//                                  idx0            = idx0;\r
-\r
                             for(int l= 0; l < 4; ++l)\r
                             {\r
                                 if(wgt[l] <= float.Epsilon)         continue;\r
                                 if(selected.ContainsKey(idx[l]))    continue;\r
                                 \r
-                                if(selected.Count == 16)\r
-                                {\r
-                                    valid   = false;\r
-                                    break;\r
-                                }\r
-\r
                                 if(!work.ContainsKey(idx[l]))\r
                                     work.Add(idx[l], 0);\r
-\r
-                                if(selected.Count + work.Count >= 17)\r
-                                {\r
-                                    valid   = false;\r
-                                    break;\r
-                                }\r
                             }\r
-\r
-                            if(!valid)\r
-                                break;\r
                         }\r
 \r
-                        if(!valid)\r
+                        if (selected.Count + work.Count > 16)\r
                         {\r
                             faces2.Add(j);\r
                             continue;\r
@@ -376,8 +363,6 @@ namespace Tso2MqoGui
                         // ボーンリストに足してvalid\r
                         foreach(KeyValuePair<int, int> l in work)\r
                         {\r
-                            System.Diagnostics.Debug.WriteLine(\r
-                                string.Format("Add: {0} -> {1}", l.Key, selected.Count)); \r
                             selected.Add(l.Key, selected.Count);    // ボーンテーブルに追加\r
                             bones.Add(l.Key);\r
                         }\r
@@ -423,6 +408,8 @@ namespace Tso2MqoGui
                     for(int j= 0; j < nidx.Length; ++j)\r
                         sub.vertices[j] = verts[nidx[j]];\r
 \r
+                    Console.WriteLine("  {0,8} {1,12}", sub.vertices.Length, sub.bones.Length);\r
+\r
                     subs.Add(sub);\r
 \r
                     // 次の周回\r
@@ -454,6 +441,8 @@ namespace Tso2MqoGui
                 if(i.name.ToLower() == "bone")\r
                     continue;\r
 \r
+                Console.WriteLine("object:" + i.name);\r
+\r
                 // 法線生成\r
                 Point3[]        nrm = new Point3[i.vertices.Count];\r
                 \r