diff --git a/app/src/main/java/com/hmwl/face_sdk/Motion.java b/app/src/main/java/com/hmwl/face_sdk/Motion.java index c2b9f3a..29d5f5d 100644 --- a/app/src/main/java/com/hmwl/face_sdk/Motion.java +++ b/app/src/main/java/com/hmwl/face_sdk/Motion.java @@ -1,23 +1,18 @@ package com.hmwl.face_sdk; import org.json.JSONObject; +import java.util.ArrayList; +import java.util.List; + public class Motion { public String type = "no"; - public String technique = "no"; - public String step = "no"; - public String show_type = "no"; - public String png_name = "no"; - public int png_num; + public List png_names = new ArrayList<>(); public JSONObject toJsonObject() { try { JSONObject jsonObject = new JSONObject(); jsonObject.put("type", type); - jsonObject.put("technique", technique); - jsonObject.put("step", step); - jsonObject.put("show_type", show_type); - jsonObject.put("png_name", png_name); - jsonObject.put("png_num", png_num); + jsonObject.put("png_names", png_names); return jsonObject; } catch (Exception e) { e.printStackTrace(); diff --git a/example/src/main/assets/pic/11/11.png b/example/src/main/assets/pic/11/11.png new file mode 100644 index 0000000..71b5ab8 Binary files /dev/null and b/example/src/main/assets/pic/11/11.png differ diff --git a/example/src/main/assets/pic/12.png b/example/src/main/assets/pic/12.png index a90446f..ba83cc2 100644 Binary files a/example/src/main/assets/pic/12.png and b/example/src/main/assets/pic/12.png differ diff --git a/example/src/main/assets/pic/12/12.png b/example/src/main/assets/pic/12/12.png new file mode 100644 index 0000000..ba83cc2 Binary files /dev/null and b/example/src/main/assets/pic/12/12.png differ diff --git a/example/src/main/assets/pic/13.png b/example/src/main/assets/pic/13.png index 58bc74e..2270e96 100644 Binary files a/example/src/main/assets/pic/13.png and b/example/src/main/assets/pic/13.png differ diff --git a/example/src/main/assets/pic/13/13.png b/example/src/main/assets/pic/13/13.png new file mode 100644 index 0000000..2270e96 Binary files /dev/null and b/example/src/main/assets/pic/13/13.png differ diff --git a/example/src/main/assets/pic/14/14.png b/example/src/main/assets/pic/14/14.png new file mode 100644 index 0000000..0baac42 Binary files /dev/null and b/example/src/main/assets/pic/14/14.png differ diff --git a/example/src/main/assets/pic/21.png b/example/src/main/assets/pic/21.png index 4cbfef8..e3775d1 100644 Binary files a/example/src/main/assets/pic/21.png and b/example/src/main/assets/pic/21.png differ diff --git a/example/src/main/assets/pic/21/21.png b/example/src/main/assets/pic/21/21.png new file mode 100644 index 0000000..e3775d1 Binary files /dev/null and b/example/src/main/assets/pic/21/21.png differ diff --git a/example/src/main/assets/pic/23/23.png b/example/src/main/assets/pic/23/23.png new file mode 100644 index 0000000..11eaef1 Binary files /dev/null and b/example/src/main/assets/pic/23/23.png differ diff --git a/example/src/main/assets/pic/24.png b/example/src/main/assets/pic/24.png index 0889c4b..7110e8f 100644 Binary files a/example/src/main/assets/pic/24.png and b/example/src/main/assets/pic/24.png differ diff --git a/example/src/main/assets/pic/24/24.png b/example/src/main/assets/pic/24/24.png new file mode 100644 index 0000000..7110e8f Binary files /dev/null and b/example/src/main/assets/pic/24/24.png differ diff --git a/example/src/main/assets/pic/25/25.png b/example/src/main/assets/pic/25/25.png new file mode 100644 index 0000000..edcffe1 Binary files /dev/null and b/example/src/main/assets/pic/25/25.png differ diff --git a/example/src/main/assets/pic/26.png b/example/src/main/assets/pic/26.png index 3e10d53..299b0d9 100644 Binary files a/example/src/main/assets/pic/26.png and b/example/src/main/assets/pic/26.png differ diff --git a/example/src/main/assets/pic/26/26.png b/example/src/main/assets/pic/26/26.png new file mode 100644 index 0000000..299b0d9 Binary files /dev/null and b/example/src/main/assets/pic/26/26.png differ diff --git a/example/src/main/assets/pic/27.png b/example/src/main/assets/pic/27.png index 594bedb..450981f 100644 Binary files a/example/src/main/assets/pic/27.png and b/example/src/main/assets/pic/27.png differ diff --git a/example/src/main/assets/pic/27/27.png b/example/src/main/assets/pic/27/27.png new file mode 100644 index 0000000..450981f Binary files /dev/null and b/example/src/main/assets/pic/27/27.png differ diff --git a/example/src/main/assets/pic/32.png b/example/src/main/assets/pic/32.png index 2dac48a..bf0be21 100644 Binary files a/example/src/main/assets/pic/32.png and b/example/src/main/assets/pic/32.png differ diff --git a/example/src/main/assets/pic/32/32.png b/example/src/main/assets/pic/32/32.png new file mode 100644 index 0000000..bf0be21 Binary files /dev/null and b/example/src/main/assets/pic/32/32.png differ diff --git a/example/src/main/assets/pic/37.png b/example/src/main/assets/pic/37.png index b38a617..1603e6e 100644 Binary files a/example/src/main/assets/pic/37.png and b/example/src/main/assets/pic/37.png differ diff --git a/example/src/main/assets/pic/37/37.png b/example/src/main/assets/pic/37/37.png new file mode 100644 index 0000000..1603e6e Binary files /dev/null and b/example/src/main/assets/pic/37/37.png differ diff --git a/example/src/main/assets/pic/4/4.png b/example/src/main/assets/pic/4/4.png new file mode 100644 index 0000000..9fd6829 Binary files /dev/null and b/example/src/main/assets/pic/4/4.png differ diff --git a/example/src/main/assets/pic/40/40.png b/example/src/main/assets/pic/40/40.png new file mode 100644 index 0000000..c6be20d Binary files /dev/null and b/example/src/main/assets/pic/40/40.png differ diff --git a/example/src/main/assets/pic/41/41.png b/example/src/main/assets/pic/41/41.png new file mode 100644 index 0000000..3c09e75 Binary files /dev/null and b/example/src/main/assets/pic/41/41.png differ diff --git a/example/src/main/assets/pic/45.png b/example/src/main/assets/pic/45.png index e45889b..4e4c057 100644 Binary files a/example/src/main/assets/pic/45.png and b/example/src/main/assets/pic/45.png differ diff --git a/example/src/main/assets/pic/45/45.png b/example/src/main/assets/pic/45/45.png new file mode 100644 index 0000000..4e4c057 Binary files /dev/null and b/example/src/main/assets/pic/45/45.png differ diff --git a/example/src/main/assets/pic/48/48.png b/example/src/main/assets/pic/48/48.png new file mode 100644 index 0000000..cdaba51 Binary files /dev/null and b/example/src/main/assets/pic/48/48.png differ diff --git a/example/src/main/assets/pic/49/49.png b/example/src/main/assets/pic/49/49.png new file mode 100644 index 0000000..6e6ab9c Binary files /dev/null and b/example/src/main/assets/pic/49/49.png differ diff --git a/example/src/main/assets/pic/5/5.png b/example/src/main/assets/pic/5/5.png new file mode 100644 index 0000000..5eba85c Binary files /dev/null and b/example/src/main/assets/pic/5/5.png differ diff --git a/example/src/main/assets/pic/53/53.png b/example/src/main/assets/pic/53/53.png new file mode 100644 index 0000000..2c7c96c Binary files /dev/null and b/example/src/main/assets/pic/53/53.png differ diff --git a/example/src/main/assets/pic/56/56.png b/example/src/main/assets/pic/56/56.png new file mode 100644 index 0000000..dcb6a89 Binary files /dev/null and b/example/src/main/assets/pic/56/56.png differ diff --git a/example/src/main/assets/pic/59.png b/example/src/main/assets/pic/59.png index a9fb5d2..becdf97 100644 Binary files a/example/src/main/assets/pic/59.png and b/example/src/main/assets/pic/59.png differ diff --git a/example/src/main/assets/pic/59/59.png b/example/src/main/assets/pic/59/59.png new file mode 100644 index 0000000..becdf97 Binary files /dev/null and b/example/src/main/assets/pic/59/59.png differ diff --git a/example/src/main/assets/pic/6/6.png b/example/src/main/assets/pic/6/6.png new file mode 100644 index 0000000..2d5a9b8 Binary files /dev/null and b/example/src/main/assets/pic/6/6.png differ diff --git a/example/src/main/assets/pic/62/62.png b/example/src/main/assets/pic/62/62.png new file mode 100644 index 0000000..8aa6d17 Binary files /dev/null and b/example/src/main/assets/pic/62/62.png differ diff --git a/example/src/main/assets/pic/65/65.png b/example/src/main/assets/pic/65/65.png new file mode 100644 index 0000000..3731287 Binary files /dev/null and b/example/src/main/assets/pic/65/65.png differ diff --git a/example/src/main/assets/pic/68/68.png b/example/src/main/assets/pic/68/68.png new file mode 100644 index 0000000..12a45e4 Binary files /dev/null and b/example/src/main/assets/pic/68/68.png differ diff --git a/example/src/main/assets/pic/7/7.png b/example/src/main/assets/pic/7/7.png new file mode 100644 index 0000000..1c1ff2f Binary files /dev/null and b/example/src/main/assets/pic/7/7.png differ diff --git a/example/src/main/assets/pic/71/71.png b/example/src/main/assets/pic/71/71.png new file mode 100644 index 0000000..1daaa61 Binary files /dev/null and b/example/src/main/assets/pic/71/71.png differ diff --git a/example/src/main/assets/pic/76.png b/example/src/main/assets/pic/76.png index 77789ce..aa35105 100644 Binary files a/example/src/main/assets/pic/76.png and b/example/src/main/assets/pic/76.png differ diff --git a/example/src/main/assets/pic/76/76.png b/example/src/main/assets/pic/76/76.png new file mode 100644 index 0000000..aa35105 Binary files /dev/null and b/example/src/main/assets/pic/76/76.png differ diff --git a/example/src/main/assets/pic/77.png b/example/src/main/assets/pic/77.png index a0efb24..b3d3ea7 100644 Binary files a/example/src/main/assets/pic/77.png and b/example/src/main/assets/pic/77.png differ diff --git a/example/src/main/assets/pic/77/77.png b/example/src/main/assets/pic/77/77.png new file mode 100644 index 0000000..b3d3ea7 Binary files /dev/null and b/example/src/main/assets/pic/77/77.png differ diff --git a/example/src/main/assets/pic/78.png b/example/src/main/assets/pic/78.png index c23fb03..fbfcebc 100644 Binary files a/example/src/main/assets/pic/78.png and b/example/src/main/assets/pic/78.png differ diff --git a/example/src/main/assets/pic/78/78.png b/example/src/main/assets/pic/78/78.png new file mode 100644 index 0000000..fbfcebc Binary files /dev/null and b/example/src/main/assets/pic/78/78.png differ diff --git a/example/src/main/assets/pic/81.png b/example/src/main/assets/pic/81.png index d027b01..dc2c243 100644 Binary files a/example/src/main/assets/pic/81.png and b/example/src/main/assets/pic/81.png differ diff --git a/example/src/main/assets/pic/81/81.png b/example/src/main/assets/pic/81/81.png new file mode 100644 index 0000000..dc2c243 Binary files /dev/null and b/example/src/main/assets/pic/81/81.png differ diff --git a/example/src/main/assets/pic/action24/000000.png b/example/src/main/assets/pic/action24/000000.png new file mode 100644 index 0000000..0295b5b Binary files /dev/null and b/example/src/main/assets/pic/action24/000000.png differ diff --git a/example/src/main/assets/pic/action24/000001.png b/example/src/main/assets/pic/action24/000001.png new file mode 100644 index 0000000..6f6b0d2 Binary files /dev/null and b/example/src/main/assets/pic/action24/000001.png differ diff --git a/example/src/main/assets/pic/action24/000002.png b/example/src/main/assets/pic/action24/000002.png new file mode 100644 index 0000000..0635a4d Binary files /dev/null and b/example/src/main/assets/pic/action24/000002.png differ diff --git a/example/src/main/assets/pic/action24/000003.png b/example/src/main/assets/pic/action24/000003.png new file mode 100644 index 0000000..0f64133 Binary files /dev/null and b/example/src/main/assets/pic/action24/000003.png differ diff --git a/example/src/main/assets/pic/action24/000004.png b/example/src/main/assets/pic/action24/000004.png new file mode 100644 index 0000000..92df35e Binary files /dev/null and b/example/src/main/assets/pic/action24/000004.png differ diff --git a/example/src/main/assets/pic/action24/000005.png b/example/src/main/assets/pic/action24/000005.png new file mode 100644 index 0000000..222d47c Binary files /dev/null and b/example/src/main/assets/pic/action24/000005.png differ diff --git a/example/src/main/assets/pic/action24/000006.png b/example/src/main/assets/pic/action24/000006.png new file mode 100644 index 0000000..e98e12a Binary files /dev/null and b/example/src/main/assets/pic/action24/000006.png differ diff --git a/example/src/main/assets/pic/action24/000007.png b/example/src/main/assets/pic/action24/000007.png new file mode 100644 index 0000000..81058f0 Binary files /dev/null and b/example/src/main/assets/pic/action24/000007.png differ diff --git a/example/src/main/assets/pic/action24/000008.png b/example/src/main/assets/pic/action24/000008.png new file mode 100644 index 0000000..6ef3d99 Binary files /dev/null and b/example/src/main/assets/pic/action24/000008.png differ diff --git a/example/src/main/assets/pic/action24/000009.png b/example/src/main/assets/pic/action24/000009.png new file mode 100644 index 0000000..44e47a5 Binary files /dev/null and b/example/src/main/assets/pic/action24/000009.png differ diff --git a/example/src/main/assets/pic/action24/000010.png b/example/src/main/assets/pic/action24/000010.png new file mode 100644 index 0000000..6cde4b7 Binary files /dev/null and b/example/src/main/assets/pic/action24/000010.png differ diff --git a/example/src/main/assets/pic/action24/000011.png b/example/src/main/assets/pic/action24/000011.png new file mode 100644 index 0000000..91130ba Binary files /dev/null and b/example/src/main/assets/pic/action24/000011.png differ diff --git a/example/src/main/assets/pic/action24/000012.png b/example/src/main/assets/pic/action24/000012.png new file mode 100644 index 0000000..5eb82fc Binary files /dev/null and b/example/src/main/assets/pic/action24/000012.png differ diff --git a/example/src/main/assets/pic/action24/000013.png b/example/src/main/assets/pic/action24/000013.png new file mode 100644 index 0000000..7b50cd6 Binary files /dev/null and b/example/src/main/assets/pic/action24/000013.png differ diff --git a/example/src/main/assets/pic/action24/000014.png b/example/src/main/assets/pic/action24/000014.png new file mode 100644 index 0000000..ec31ff9 Binary files /dev/null and b/example/src/main/assets/pic/action24/000014.png differ diff --git a/example/src/main/assets/pic/action24/000015.png b/example/src/main/assets/pic/action24/000015.png new file mode 100644 index 0000000..9f390d2 Binary files /dev/null and b/example/src/main/assets/pic/action24/000015.png differ diff --git a/example/src/main/assets/pic/action24/000016.png b/example/src/main/assets/pic/action24/000016.png new file mode 100644 index 0000000..839e21d Binary files /dev/null and b/example/src/main/assets/pic/action24/000016.png differ diff --git a/example/src/main/assets/pic/action24/000017.png b/example/src/main/assets/pic/action24/000017.png new file mode 100644 index 0000000..386cdb7 Binary files /dev/null and b/example/src/main/assets/pic/action24/000017.png differ diff --git a/example/src/main/assets/pic/action24/000018.png b/example/src/main/assets/pic/action24/000018.png new file mode 100644 index 0000000..7ccd672 Binary files /dev/null and b/example/src/main/assets/pic/action24/000018.png differ diff --git a/example/src/main/assets/pic/action24/000019.png b/example/src/main/assets/pic/action24/000019.png new file mode 100644 index 0000000..f874f3c Binary files /dev/null and b/example/src/main/assets/pic/action24/000019.png differ diff --git a/example/src/main/assets/pic/action24/000020.png b/example/src/main/assets/pic/action24/000020.png new file mode 100644 index 0000000..4920f4b Binary files /dev/null and b/example/src/main/assets/pic/action24/000020.png differ diff --git a/example/src/main/assets/pic/action24/000021.png b/example/src/main/assets/pic/action24/000021.png new file mode 100644 index 0000000..b068c9e Binary files /dev/null and b/example/src/main/assets/pic/action24/000021.png differ diff --git a/example/src/main/assets/pic/action24/000022.png b/example/src/main/assets/pic/action24/000022.png new file mode 100644 index 0000000..b96539a Binary files /dev/null and b/example/src/main/assets/pic/action24/000022.png differ diff --git a/example/src/main/assets/pic/action24/000023.png b/example/src/main/assets/pic/action24/000023.png new file mode 100644 index 0000000..f15c651 Binary files /dev/null and b/example/src/main/assets/pic/action24/000023.png differ diff --git a/example/src/main/assets/pic/action24/000024.png b/example/src/main/assets/pic/action24/000024.png new file mode 100644 index 0000000..d0093dc Binary files /dev/null and b/example/src/main/assets/pic/action24/000024.png differ diff --git a/example/src/main/assets/pic/motion_data.json b/example/src/main/assets/pic/motion_data.json new file mode 100644 index 0000000..2026574 --- /dev/null +++ b/example/src/main/assets/pic/motion_data.json @@ -0,0 +1,125 @@ +{ + "11": [ + "11.png" + ], + "12": [ + "12.png" + ], + "13": [ + "13.png" + ], + "14": [ + "14.png" + ], + "21": [ + "21.png" + ], + "23": [ + "23.png" + ], + "24": [ + "24.png" + ], + "25": [ + "25.png" + ], + "26": [ + "26.png" + ], + "27": [ + "27.png" + ], + "32": [ + "32.png" + ], + "37": [ + "37.png" + ], + "4": [ + "4.png" + ], + "40": [ + "40.png" + ], + "41": [ + "41.png" + ], + "45": [ + "45.png" + ], + "48": [ + "48.png" + ], + "49": [ + "49.png" + ], + "5": [ + "5.png" + ], + "53": [ + "53.png" + ], + "56": [ + "56.png" + ], + "59": [ + "59.png" + ], + "6": [ + "6.png" + ], + "62": [ + "62.png" + ], + "65": [ + "65.png" + ], + "68": [ + "68.png" + ], + "7": [ + "7.png" + ], + "71": [ + "71.png" + ], + "76": [ + "76.png" + ], + "77": [ + "77.png" + ], + "78": [ + "78.png" + ], + "81": [ + "81.png" + ], + "action24": [ + "000000.png", + "000001.png", + "000002.png", + "000003.png", + "000004.png", + "000005.png", + "000006.png", + "000007.png", + "000008.png", + "000009.png", + "000010.png", + "000011.png", + "000012.png", + "000013.png", + "000014.png", + "000015.png", + "000016.png", + "000017.png", + "000018.png", + "000019.png", + "000020.png", + "000021.png", + "000022.png", + "000023.png", + "000024.png" + ] +} \ No newline at end of file diff --git a/example/src/main/java/com/hmwl/example/MainActivity.java b/example/src/main/java/com/hmwl/example/MainActivity.java index c61c2e8..65fa4ca 100644 --- a/example/src/main/java/com/hmwl/example/MainActivity.java +++ b/example/src/main/java/com/hmwl/example/MainActivity.java @@ -21,7 +21,10 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; import java.util.List; +import java.util.Map; public class MainActivity extends FaceActivity { @@ -30,13 +33,8 @@ public class MainActivity extends FaceActivity protected void onCreate(Bundle savedInstanceState) { Motion motion = new Motion(); - motion.type = "底妆"; - motion.technique = "基础上妆"; - motion.step = "2按压"; - motion.show_type = "方向示意图"; - motion.png_name = "4.png"; - motion.png_num = 1; - + motion.type = "4"; + motion.png_names.add("4.png"); InitArg initArg = new InitArg(); initArg.action_fps = 3; initArg.zoom = 1.5f; @@ -52,8 +50,7 @@ public class MainActivity extends FaceActivity String GetCurMotionState(int index) { Motion motion = new Motion(); - motion.png_name = pngFilenames.get(index); - motion.png_num = 1; + motion.png_names = pngFilesByFolder.get(index).getFileList(); return motion.toJson(); } @@ -77,26 +74,38 @@ public class MainActivity extends FaceActivity // 手指抬起 Log.d("TouchEvent", "手指抬起"); curIndex++; - if(curIndex > pngFilenames.size()-1) + if(curIndex > pngFilesByFolder.size()-1) { curIndex = 0; } ChangeState(GetCurMotionState(curIndex)); - Toast.makeText(this, pngFilenames.get(curIndex), Toast.LENGTH_LONG).show(); + Toast.makeText(this, pngFilesByFolder.get(curIndex).folderName, Toast.LENGTH_LONG).show(); break; } return true; // 表示已处理该事件 } - List pngFilenames = null; - int curIndex = 0; - private void FaceInit(Context context){ - pngFilenames = readPngFilenamesFromAssets(context, "pic/png_filenames.json"); + private class FolderInfo { + private String folderName; + private List fileList; + + public FolderInfo(String folderName, List fileList) { + this.folderName = folderName; + this.fileList = fileList; + } + + public String getFolderName() { + return folderName; + } + + public List getFileList() { + return fileList; + } } - private List readPngFilenamesFromAssets(Context context, String filename) { - List pngFilenames = new ArrayList<>(); + private List readPngFilenamesFromAssets(Context context, String filename) { + List folderList = new ArrayList<>(); try { InputStream is = context.getAssets().open(filename); @@ -107,9 +116,20 @@ public class MainActivity extends FaceActivity stringBuilder.append(line); } - JSONArray jsonArray = new JSONArray(stringBuilder.toString()); - for (int i = 0; i < jsonArray.length(); i++) { - pngFilenames.add(jsonArray.getString(i)); + JSONObject jsonObject = new JSONObject(stringBuilder.toString()); + + // 遍历所有文件夹 + Iterator folderIterator = jsonObject.keys(); + while (folderIterator.hasNext()) { + String folderName = folderIterator.next(); + JSONArray fileArray = jsonObject.getJSONArray(folderName); + + List filesInFolder = new ArrayList<>(); + for (int i = 0; i < fileArray.length(); i++) { + filesInFolder.add(fileArray.getString(i)); + } + + folderList.add(new FolderInfo(folderName, filesInFolder)); } reader.close(); @@ -118,6 +138,12 @@ public class MainActivity extends FaceActivity e.printStackTrace(); } - return pngFilenames; + return folderList; } + int curIndex = 0; + List pngFilesByFolder = null; + private void FaceInit(Context context){ + pngFilesByFolder = readPngFilenamesFromAssets(context, "pic/motion_data.json"); + } + } diff --git a/python/distribute_png.py b/python/distribute_png.py new file mode 100644 index 0000000..50073b7 --- /dev/null +++ b/python/distribute_png.py @@ -0,0 +1,54 @@ +import os +import shutil +from pathlib import Path + +def process_png_files(target_path): + """ + 在指定路径中查找所有PNG图片,为每个PNG文件创建同名文件夹,并将图片复制到文件夹中 + """ + # 将路径转换为Path对象 + path = Path(target_path) + + # 检查路径是否存在 + if not path.exists(): + print(f"错误:路径 '{target_path}' 不存在") + return + + # 查找所有的PNG文件(不区分大小写) + png_files = list(path.glob("*.png")) + list(path.glob("*.PNG")) + + if not png_files: + print(f"在路径 '{target_path}' 中没有找到PNG文件") + return + + print(f"找到 {len(png_files)} 个PNG文件") + + # 处理每个PNG文件 + for png_file in png_files: + try: + # 获取文件名(不含扩展名) + file_stem = png_file.stem + + # 创建同名文件夹 + folder_path = path / file_stem + folder_path.mkdir(exist_ok=True) + + # 目标文件路径 + destination = folder_path / png_file.name + + # 复制文件 + shutil.copy2(png_file, destination) + + print(f"✓ 已处理: {png_file.name} -> {folder_path.name}/") + + except Exception as e: + print(f"✗ 处理文件 {png_file.name} 时出错: {e}") + +if __name__ == "__main__": + + # 请修改为你实际的路径 + target_path = r"../example/src/main/assets/pic" # 修改为你的实际路径 + + print(f"开始处理路径: {target_path}") + process_png_files(target_path) + print("处理完成!") \ No newline at end of file diff --git a/python/get_png.py b/python/get_png.py index 1615d75..cc65dd5 100644 --- a/python/get_png.py +++ b/python/get_png.py @@ -1,51 +1,92 @@ import os import json -def simple_collect_png_filenames(folder_path, output_file="../example/src/main/assets/pic/png_filenames.json"): +def collect_png_from_subfolders(base_path=".", output_file="../example/src/main/assets/pic/motion_data.json"): """ - 简化版的PNG文件名收集器(不遍历子文件夹) - """ - # 检查文件夹是否存在 - if not os.path.exists(folder_path): - print(f"错误:文件夹 '{folder_path}' 不存在") - return [] + 遍历当前路径下所有的子文件夹(只遍历一层),收集PNG文件名并保存到JSON文件 - # 获取文件夹中的所有文件 + Args: + base_path: 基础路径,默认为当前目录 + output_file: 输出的JSON文件名 + """ + # 检查基础路径是否存在 + if not os.path.exists(base_path): + print(f"错误:路径 '{base_path}' 不存在") + return {} + + # 获取所有子文件夹 try: - all_files = os.listdir(folder_path) + all_items = os.listdir(base_path) except PermissionError: - print(f"错误:没有权限访问文件夹 '{folder_path}'") - return [] + print(f"错误:没有权限访问路径 '{base_path}'") + return {} - # 筛选PNG文件 - png_filenames = [] - for file in all_files: - file_path = os.path.join(folder_path, file) - if os.path.isfile(file_path) and file.lower().endswith('.png'): - png_filenames.append(file) + # 筛选出子文件夹(只遍历一层) + subfolders = [] + for item in all_items: + item_path = os.path.join(base_path, item) + if os.path.isdir(item_path): + subfolders.append(item) - # 按文件名排序 - png_filenames.sort() + # 按文件夹名排序 + subfolders.sort() + + # 收集每个子文件夹中的PNG文件 + all_png_files = {} + + for folder in subfolders: + folder_path = os.path.join(base_path, folder) + + try: + folder_files = os.listdir(folder_path) + except PermissionError: + print(f"警告:没有权限访问文件夹 '{folder}',跳过") + continue + + # 筛选PNG文件 + png_filenames = [] + for file in folder_files: + file_path = os.path.join(folder_path, file) + if os.path.isfile(file_path) and file.lower().endswith('.png'): + png_filenames.append(file) + + # 按文件名排序 + png_filenames.sort() + + # 如果有PNG文件,添加到结果中 + if png_filenames: + all_png_files[folder] = png_filenames # 保存到JSON文件 try: with open(output_file, 'w', encoding='utf-8') as f: - json.dump(png_filenames, f, ensure_ascii=False, indent=2) - print(f"找到 {len(png_filenames)} 个PNG文件,文件名已保存到 {output_file}") + json.dump(all_png_files, f, ensure_ascii=False, indent=2) + print(f"PNG文件信息已保存到 {output_file}") except Exception as e: print(f"保存文件时出错: {e}") - # 显示找到的文件 - if png_filenames: - print("\n找到的PNG文件:") - for filename in png_filenames: - print(f" - {filename}") + # 显示统计信息 + total_folders = len(all_png_files) + total_files = sum(len(files) for files in all_png_files.values()) - return png_filenames + print(f"\n统计信息:") + print(f" 扫描了 {len(subfolders)} 个子文件夹") + print(f" 其中 {total_folders} 个文件夹包含PNG文件") + print(f" 总共找到 {total_files} 个PNG文件") + + # 显示找到的文件 + if all_png_files: + print("\n找到的PNG文件:") + for folder, files in all_png_files.items(): + print(f" {folder}/:") + for filename in files: + print(f" - {filename}") + + return all_png_files # 使用方法 if __name__ == "__main__": - # 指定要遍历的文件夹 - folder_to_scan = '../example/src/main/assets/pic' + # 可以指定要遍历的基础路径,默认为当前目录 + base_path_to_scan = '../example/src/main/assets/pic' # 当前目录 - simple_collect_png_filenames(folder_to_scan) \ No newline at end of file + collect_png_from_subfolders(base_path_to_scan) \ No newline at end of file diff --git a/vulkan/Application.cpp b/vulkan/Application.cpp index d3a5122..15bbffc 100644 --- a/vulkan/Application.cpp +++ b/vulkan/Application.cpp @@ -20,7 +20,7 @@ void Application::initWindow() glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE); - window = glfwCreateWindow(480*2, 480*2, "Vulkan", nullptr, nullptr); + window = glfwCreateWindow(480, 480, "Vulkan", nullptr, nullptr); #else #endif diff --git a/vulkan/FaceApp.cpp b/vulkan/FaceApp.cpp index 52e97ca..b1f3f6d 100644 --- a/vulkan/FaceApp.cpp +++ b/vulkan/FaceApp.cpp @@ -460,16 +460,16 @@ void FaceApp::setup_descriptor_pool() { // 保守估计:假设每个描述符集可能有多个绑定 const uint32_t setsCount = kMaxTexture; - const uint32_t multiplier = 3; // 安全系数 + //const uint32_t multiplier = 3; // 安全系数 std::vector pool_sizes = { { .type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, - .descriptorCount = setsCount * multiplier + .descriptorCount = 3 }, { .type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, - .descriptorCount = setsCount * multiplier + .descriptorCount = setsCount + 4 }, // 如果需要其他类型的描述符,在这里添加 }; @@ -478,7 +478,7 @@ void FaceApp::setup_descriptor_pool() descriptor_pool_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; descriptor_pool_info.poolSizeCount = static_cast(pool_sizes.size()); descriptor_pool_info.pPoolSizes = pool_sizes.data(); - descriptor_pool_info.maxSets = setsCount * 2; // 额外预留一些集合 + descriptor_pool_info.maxSets = setsCount + 7; // 额外预留一些集合 descriptor_pool_info.flags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT; VK_CHECK(vkCreateDescriptorPool(device, &descriptor_pool_info, nullptr, &descriptor_pool)); @@ -652,7 +652,7 @@ void FaceApp::render(VkCommandBuffer commandBuffer, long long frameTime) if (game_time > actionTime) { _curTexIndex++; - if (_curTexIndex >= _curMotion.png_num) + if (_curTexIndex >= _curMotion.png_names.size()) { _curTexIndex = 0; } @@ -1151,23 +1151,23 @@ void FaceApp::changeMotion(Motion& motion) return; } _curMotion = motion; - for (int i = 0; i < _curMotion.png_num; ++i) + for (int i = 0; i < _curMotion.png_names.size(); ++i) { #ifdef _WIN32 //string path = _curMotion.type + "/" + _curMotion.technique + "/" + _curMotion.step + "/" + _curMotion.show_type; string path = "pic"; - string path_name = path + "/" + _curMotion.png_name;// +std::to_string(i) + ".png"; + string path_name = path + "/" + _curMotion.type + "/" + _curMotion.png_names[i];// +std::to_string(i) + ".png"; loadTextureExample(UTF8ToWideString(path_name), m_texs[i], true); if (kThick) { - string path_name_ex = path + "/" + _curMotion.png_name + std::to_string(i) + "_thick.png"; + string path_name_ex = path + "/" + _curMotion.type + "/" + _curMotion.png_names[i] + std::to_string(i) + "_thick.png"; loadTextureExample(UTF8ToWideString(path_name_ex), m_texs_ex[i], true); } #else //string path = _curMotion.type + "/" + _curMotion.technique + "/" + _curMotion.step + "/" + _curMotion.show_type; string path = "pic"; - string path_name = path + "/" + _curMotion.png_name;// +std::to_string(i) + ".png"; + string path_name = path + "/" + _curMotion.type + "/" + _curMotion.png_names[i];// +std::to_string(i) + ".png"; loadTexture(path_name, m_texs[i], true); if (kThick) { diff --git a/vulkan/FaceApp.h b/vulkan/FaceApp.h index 4c00f36..ef18ee0 100644 --- a/vulkan/FaceApp.h +++ b/vulkan/FaceApp.h @@ -13,15 +13,11 @@ using json = nlohmann::json; struct Motion { string type; - string technique; - string step; - string show_type; - string png_name; - int png_num; + vector png_names; string getMotionId() { - return type + technique + step + show_type + png_name; + return type; } - NLOHMANN_DEFINE_TYPE_INTRUSIVE(Motion, type, technique, step, show_type, png_name, png_num) + NLOHMANN_DEFINE_TYPE_INTRUSIVE(Motion, type, png_names) }; struct InitArg @@ -104,7 +100,7 @@ private: VkPipelineLayout m_pipelineLayout = VK_NULL_HANDLE; VkDescriptorSetLayout m_descriptorSetLayout = VK_NULL_HANDLE; vector m_descriptor_sets; - const int kMaxTexture = 2; + const int kMaxTexture = 30; vector m_texs; vector m_texs_ex; diff --git a/vulkan/main.cpp b/vulkan/main.cpp index 9ff3f7f..cb5e29d 100644 --- a/vulkan/main.cpp +++ b/vulkan/main.cpp @@ -49,24 +49,27 @@ int main() { InitArg init_arg; Motion motion; - motion.type = "底妆"; - motion.technique = "基础上妆"; - motion.step = "2按压"; - motion.show_type = "方向示意图"; - motion.png_name = "4.png"; - motion.png_num = 1; + motion.type = "action24"; + for (int i = 0; i < 25; ++i) + { + if (i < 10) + { + motion.png_names.push_back("00000" + std::to_string(i) + ".png"); + } + else + { + motion.png_names.push_back("0000" + std::to_string(i) + ".png"); + + } + + } + # init_arg.motion = motion; - //motion.type = "底妆"; - //motion.technique = "基础上妆"; - //motion.step = "2按压"; - //motion.show_type = "区域"; - //motion.png_name = "pic"; - //motion.png_num = 1; - init_arg.action_fps = 3; + init_arg.action_fps = 10; init_arg.zoom = 1.5f; string json_str = json(init_arg).dump();