toto10 commited on
Commit
d5dede2
·
1 Parent(s): fb54f6e

ff0bf0840bb50586cff458b01f156c23afd134dc01c8dc1d81255e63135ce6ea

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +1 -0
  2. sd-webui-3d-open-pose-editor/Pipfile.lock +0 -0
  3. sd-webui-3d-open-pose-editor/README-ja.md +48 -0
  4. sd-webui-3d-open-pose-editor/README-zh.md +52 -0
  5. sd-webui-3d-open-pose-editor/README.md +48 -0
  6. sd-webui-3d-open-pose-editor/compress.ts +24 -0
  7. sd-webui-3d-open-pose-editor/docs/intro.png +0 -0
  8. sd-webui-3d-open-pose-editor/downloads/config.json +1 -0
  9. sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_landmark_full.tflite +3 -0
  10. sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_solution_packed_assets.data +3 -0
  11. sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_solution_packed_assets_loader.js +191 -0
  12. sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_solution_simd_wasm_bin.js +0 -0
  13. sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_solution_simd_wasm_bin.wasm +3 -0
  14. sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_web.binarypb +0 -0
  15. sd-webui-3d-open-pose-editor/index.html +21 -0
  16. sd-webui-3d-open-pose-editor/install.py +44 -0
  17. sd-webui-3d-open-pose-editor/javascript/index.js +1 -0
  18. sd-webui-3d-open-pose-editor/message.html +38 -0
  19. sd-webui-3d-open-pose-editor/models/foot.fbx +0 -0
  20. sd-webui-3d-open-pose-editor/models/hand.fbx +0 -0
  21. sd-webui-3d-open-pose-editor/package.json +63 -0
  22. sd-webui-3d-open-pose-editor/pages/android-chrome-192x192.png +0 -0
  23. sd-webui-3d-open-pose-editor/pages/android-chrome-512x512.png +0 -0
  24. sd-webui-3d-open-pose-editor/pages/apple-touch-icon.png +0 -0
  25. sd-webui-3d-open-pose-editor/pages/browserconfig.xml +9 -0
  26. sd-webui-3d-open-pose-editor/pages/favicon-16x16.png +0 -0
  27. sd-webui-3d-open-pose-editor/pages/favicon-32x32.png +0 -0
  28. sd-webui-3d-open-pose-editor/pages/favicon.ico +0 -0
  29. sd-webui-3d-open-pose-editor/pages/icons/icon-128x128.png +0 -0
  30. sd-webui-3d-open-pose-editor/pages/icons/icon-144x144.png +0 -0
  31. sd-webui-3d-open-pose-editor/pages/icons/icon-152x152.png +0 -0
  32. sd-webui-3d-open-pose-editor/pages/icons/icon-192x192.png +0 -0
  33. sd-webui-3d-open-pose-editor/pages/icons/icon-384x384.png +0 -0
  34. sd-webui-3d-open-pose-editor/pages/icons/icon-48x48.png +0 -0
  35. sd-webui-3d-open-pose-editor/pages/icons/icon-512x512.png +0 -0
  36. sd-webui-3d-open-pose-editor/pages/icons/icon-72x72.png +0 -0
  37. sd-webui-3d-open-pose-editor/pages/icons/icon-96x96.png +0 -0
  38. sd-webui-3d-open-pose-editor/pages/index.css +1 -0
  39. sd-webui-3d-open-pose-editor/pages/index.html +23 -0
  40. sd-webui-3d-open-pose-editor/pages/index.js +0 -0
  41. sd-webui-3d-open-pose-editor/pages/mstile-150x150.png +0 -0
  42. sd-webui-3d-open-pose-editor/pages/safari-pinned-tab.svg +61 -0
  43. sd-webui-3d-open-pose-editor/pnpm-lock.yaml +0 -0
  44. sd-webui-3d-open-pose-editor/public/android-chrome-192x192.png +0 -0
  45. sd-webui-3d-open-pose-editor/public/android-chrome-512x512.png +0 -0
  46. sd-webui-3d-open-pose-editor/public/apple-touch-icon.png +0 -0
  47. sd-webui-3d-open-pose-editor/public/browserconfig.xml +9 -0
  48. sd-webui-3d-open-pose-editor/public/favicon-16x16.png +0 -0
  49. sd-webui-3d-open-pose-editor/public/favicon-32x32.png +0 -0
  50. sd-webui-3d-open-pose-editor/public/favicon.ico +0 -0
.gitattributes CHANGED
@@ -42,3 +42,4 @@ posex/image/sample-webui2.png filter=lfs diff=lfs merge=lfs -text
42
  sd_feed/assets/pinterest.png filter=lfs diff=lfs merge=lfs -text
43
  sd-3dmodel-loader/models/Samba[[:space:]]Dancing.fbx filter=lfs diff=lfs merge=lfs -text
44
  sd-3dmodel-loader/models/pose.vrm filter=lfs diff=lfs merge=lfs -text
 
 
42
  sd_feed/assets/pinterest.png filter=lfs diff=lfs merge=lfs -text
43
  sd-3dmodel-loader/models/Samba[[:space:]]Dancing.fbx filter=lfs diff=lfs merge=lfs -text
44
  sd-3dmodel-loader/models/pose.vrm filter=lfs diff=lfs merge=lfs -text
45
+ sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_solution_packed_assets.data filter=lfs diff=lfs merge=lfs -text
sd-webui-3d-open-pose-editor/Pipfile.lock ADDED
The diff for this file is too large to render. See raw diff
 
sd-webui-3d-open-pose-editor/README-ja.md ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 3D Openpose Editor (sd-webui-3d-open-pose-editor) [[English](README.md)] [[中文版](README-zh.md)]
2
+
3
+ [Online 3D Openpose Editor](https://github.com/ZhUyU1997/open-pose-editor)を[stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui)で使うための拡張機能です。
4
+
5
+ # プレビュー
6
+
7
+ ![Preview](https://user-images.githubusercontent.com/42905588/227674599-21610711-7276-413c-aa36-cc5108e74dc3.png)
8
+
9
+ # インストール
10
+
11
+ 1. WebUIの「Extension」タブを開きます
12
+ 2. 「Available」タブを開きます
13
+ 3. WebUIが古い場合は「Extension index URL」を `https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json` に変更してください
14
+ 4. 「Load from:」ボタンをクリックします
15
+ 5. 3D Openpose Editorの「Install」ボタンをクリックします
16
+ 6. 「Installed」タブを開き、「Apply and restart UI」ボタンをクリックします
17
+
18
+ # 特徴
19
+
20
+ - **ポーズの編集**: マウスで関節を選択し、回転させることで、3Dモデルのポーズを編集できます。
21
+
22
+ - **手の編集**: 手のボーンを選択し、色付きの円を調整することで、手の位置を微調整できます。
23
+
24
+ - **深度/法線/Cannyマップ**: 深度、法線、Cannyマップを生成して可視化することで、AIの描画力を向上させることができます。
25
+
26
+ - **シーンの保存/読み込み/復元**: シーンの保存・読み込み機能が備わっているため、作成中のシーンを保存して後で復元できます。
27
+
28
+ - **身体パラメータの調整**: 高さ、幅、脚の長さなどの身体パラメータを調整して、カスタム3Dモデルを作成できます。
29
+ # 使い方
30
+ ### カメラのナビゲーション:
31
+ - **カメラの回転**: 空いている場所を左クリックしながらマウスを移動します。
32
+ - **カメラの移動**: 空いている場所を右クリックしながらマウスを移動します。
33
+
34
+ ### スケルトンの操作:
35
+ - **関節の回転**: 関節を左クリックで選択してから、色付きの円のうちの1つを押しながらマウスを移動します。
36
+ - **手の編集**: 赤い点をクリックして手のボーンを選択し、色付きの円のうちの1つを押しながらマウスを移動します。
37
+ ### 身体パラメータの調整:
38
+ - **スケルトンの選択**: スケルトンをクリックして選択します。
39
+ - **身体パラメータを開く**: メニューの「身体パラメータ」をクリックして、パラメータを調整します。
40
+ ### 出力解像度の調整:
41
+ - **メニューで出力解像度を調整**: メニューの「幅」または「高さ」を変更して、出力解像度を調整します。
42
+ ### その他の機能:
43
+ - **移動モードに切り替え**: Xキーを押すと、移動モードに切り替わり、身体全体を移動できます。
44
+ - **ボディの削除**: Dキーを押して、身体全体を削除できます。
45
+
46
+ # 謝辞
47
+
48
+ * [ZhUyU1997 - Online 3D Openpose Editor](https://github.com/ZhUyU1997/open-pose-editor): オリジナル版
sd-webui-3d-open-pose-editor/README-zh.md ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 3D Openpose Editor (sd-webui-3d-open-pose-editor) [[English](README.md)] [[日本語版](README-ja.md)]
2
+
3
+ 这是一个用于在[stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui)中使用[Online 3D Openpose Editor](https://github.com/ZhUyU1997/open-pose-editor)的扩展功能。
4
+
5
+ # 预览
6
+
7
+ ![Preview](https://user-images.githubusercontent.com/42905588/227674599-21610711-7276-413c-aa36-cc5108e74dc3.png)
8
+
9
+ # 安装
10
+
11
+ 1. 打开Web UI的 "Extension" 选项卡
12
+ 2. 打开 "Available" 选项卡
13
+ 3. 如果您的Web UI版本过旧,请将 "Extension index URL" 更改为 `https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json`
14
+ 4. 点击 "Load from:" 按钮
15
+ 5. 点击3D Openpose Editor的 "Install" 按钮
16
+ 6. 打开 "Installed" 选项卡,点击 "Apply and restart UI" 按钮
17
+
18
+ # 特点
19
+
20
+ - **姿势编辑**: 通过选择关节并使用鼠标旋转编辑 3D 模型的姿势。
21
+
22
+ - **手部编辑**: 通过选择手部骨骼并使用彩色圆圈微调位置来精调手部位置。
23
+
24
+ - **深度 / 法线 / Canny 地图**: 生成和可视化深度、法线和 Canny 地图,以提高 AI 绘图的质量。
25
+
26
+ - **保存/加载/还原场景**: 使用内置的保存和加载功能保存进度并在以后恢复。
27
+
28
+ - **调整身体参数**: 调整各种身体参数,如身高、体重和肢体长度,创建自定义的 3D 模型。
29
+
30
+ # 用法
31
+ ### 场景导航:
32
+ - **旋转场景**: 单击空白处并按住鼠标左键拖动鼠标。
33
+ - **移动场景**: 单击空白处并按住鼠标右键拖动鼠标。
34
+
35
+ ### 身体操纵:
36
+ - **旋转身体**: 单击任何关节以选择它,然后按住彩色圆圈之一并移动鼠标以旋转所选关节。
37
+ - **手部编辑**: 单击红点以选择手部骨骼,然后按住红色圆圈之一并移动鼠标以旋转它们。
38
+
39
+ ### 调整身体参数:
40
+ - **选择身体**: 单击身体以选择它。
41
+ - **打开身体参数**: 单击菜单中的“Body Parameters”以调整身体参数。
42
+
43
+ ### 调整输出分辨率:
44
+ - **在菜单中调整输出分辨率**:更改菜单中的“宽度”或“高度”以控制输出分辨率。
45
+
46
+ ### 其他功能:
47
+ - **切换到移动模式**: 按 X 键切换到移动模式,允许您移动整个身体。
48
+ - **删除身体**: 按 D 键删除整个身体。
49
+
50
+ # 鸣谢
51
+
52
+ * [ZhUyU1997 - Online 3D Openpose Editor](https://github.com/ZhUyU1997/open-pose-editor): 原始版本
sd-webui-3d-open-pose-editor/README.md ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 3D Openpose Editor (sd-webui-3d-open-pose-editor) [[中文版](README-zh.md)] [[日本語版](README-ja.md)]
2
+
3
+ An extension of [stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui) to use [Online 3D Openpose Editor](https://github.com/ZhUyU1997/open-pose-editor).
4
+
5
+ # Preview
6
+
7
+ ![Preview](https://user-images.githubusercontent.com/42905588/227674599-21610711-7276-413c-aa36-cc5108e74dc3.png)
8
+
9
+ # Installation
10
+
11
+ 1. Open the "Extension" tab of the WebUI
12
+ 2. Open the "Available" tab
13
+ 3. If your WebUI is out of date, change the "Extension index URL" to `https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json`
14
+ 4. Click the "Load from:" button
15
+ 5. Click the "Install" button of 3D Openpose Editor
16
+ 6. Open the "Installed" tab and click the "Apply and restart UI" button
17
+
18
+ # Feature
19
+
20
+ - **Pose Editing**: Edit the pose of the 3D model by selecting a joint and rotating it with the mouse.
21
+
22
+ - **Hand Editing**: Fine-tune the position of the hands by selecting the hand bones and adjusting them with the colored circles.
23
+
24
+ - **Depth/Normal/Canny Maps**: Generate and visualize depth, normal, and canny maps to enhance your AI drawing.
25
+
26
+ - **Save/Load/Restore Scene**: Save your progress and restore it later by using the built-in save and load functionality.
27
+
28
+ - **Adjust Body Parameters**: Adjust various body parameters such as height, weight, and limb lengths to create a custom 3D model.
29
+ # Usage
30
+ ### Scene Navigation:
31
+ - **Rotate Scene**: Click and hold the blank space, then move the mouse while holding down the left mouse button.
32
+ - **Move Scene**: Click and hold the blank space, then move the mouse while holding down the right mouse button.
33
+
34
+ ### Body Manipulation:
35
+ - **Rotate Body**: Click on any joint to select it, then hold down one of the colored circles and move the mouse to rotate the selected joint.
36
+ - **Hand Editing**: Click on the red dot to select the hand bones, then rotate them by holding down one of the red circles and moving the mouse.
37
+ ### Adjust Body Parameters:
38
+ - **Select Body**: Click on the body to select it.
39
+ - **Open Body Parameters**: Click on "Body Parameters" in the menu to adjust the body's parameters.
40
+ ### Adjust Output Resolution:
41
+ - **Adjust Output Resolution in Menu**: Change the "Width" or "Height" in the menu to control the output resolution.
42
+ ### Other Functions:
43
+ - **Switch to Move Mode**: Press the X key to switch to move mode, allowing you to move the entire body.
44
+ - **Delete Body**: Press the D key to delete the entire body.
45
+
46
+ # Credits
47
+
48
+ * [ZhUyU1997 - Online 3D Openpose Editor](https://github.com/ZhUyU1997/open-pose-editor): Original version
sd-webui-3d-open-pose-editor/compress.ts ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import avsc from 'avsc'
2
+ import fs from 'fs-extra'
3
+
4
+ const data = fs.readJSONSync('src/poses/data.json')
5
+ const data0: [number, number, number][][] = data
6
+ .map((i) =>
7
+ i.map((value) => {
8
+ if (value) {
9
+ return [
10
+ Math.round(value[0] * 1000),
11
+ Math.round(value[1] * 1000),
12
+ Math.round(value[2] * 1000),
13
+ ]
14
+ } else return [0, 0, 0]
15
+ })
16
+ )
17
+ .filter((i) => {
18
+ const [a, b, c] = i[1]
19
+ return b > 30 * 1000
20
+ })
21
+
22
+ const int32Buffer = new Int32Array(data0.flat(2))
23
+ fs.writeFileSync('src/poses/data.bin', Buffer.from(int32Buffer.buffer))
24
+ console.log(data0.length, int32Buffer.byteLength)
sd-webui-3d-open-pose-editor/docs/intro.png ADDED
sd-webui-3d-open-pose-editor/downloads/config.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"assets": {"models/hand.fbx": "/file=/content/microsoftexcel/extensions/sd-webui-3d-open-pose-editor/models/hand.fbx?v=1685857223.112788", "models/foot.fbx": "/file=/content/microsoftexcel/extensions/sd-webui-3d-open-pose-editor/models/foot.fbx?v=1685857223.1107879", "src/poses/data.bin": "/file=/content/microsoftexcel/extensions/sd-webui-3d-open-pose-editor/src/poses/data.bin?v=1685857223.1317894", "pose_landmark_full.tflite": "/file=/content/microsoftexcel/extensions/sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_landmark_full.tflite?v=1685857223.7808428", "pose_web.binarypb": "/file=/content/microsoftexcel/extensions/sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_web.binarypb?v=1685857223.8048449", "pose_solution_packed_assets.data": "/file=/content/microsoftexcel/extensions/sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_solution_packed_assets.data?v=1685857223.8708503", "pose_solution_simd_wasm_bin.wasm": "/file=/content/microsoftexcel/extensions/sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_solution_simd_wasm_bin.wasm?v=1685857223.954857", "pose_solution_packed_assets_loader.js": "/file=/content/microsoftexcel/extensions/sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_solution_packed_assets_loader.js?v=1685857223.977859", "pose_solution_simd_wasm_bin.js": "/file=/content/microsoftexcel/extensions/sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_solution_simd_wasm_bin.js?v=1685857224.012862"}}
sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_landmark_full.tflite ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e9a5c5cb17f736fafd4c2ec1da3b3d331d6edbe8a0d32395855aeb2cdfd64b9f
3
+ size 6440512
sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_solution_packed_assets.data ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a63c614bef30d35947f13be361820b1e4e3bec9cfeebf4d11216a18373108e85
3
+ size 2962288
sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_solution_packed_assets_loader.js ADDED
@@ -0,0 +1,191 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ var Module = typeof createMediapipeSolutionsPackedAssets !== 'undefined' ? createMediapipeSolutionsPackedAssets : {};
3
+
4
+ if (!Module.expectedDataFileDownloads) {
5
+ Module.expectedDataFileDownloads = 0;
6
+ }
7
+
8
+ Module.expectedDataFileDownloads++;
9
+ (function() {
10
+ // When running as a pthread, FS operations are proxied to the main thread, so we don't need to
11
+ // fetch the .data bundle on the worker
12
+ if (Module['ENVIRONMENT_IS_PTHREAD']) return;
13
+ var loadPackage = function(metadata) {
14
+
15
+ var PACKAGE_PATH = '';
16
+ if (typeof window === 'object') {
17
+ PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/');
18
+ } else if (typeof process === 'undefined' && typeof location !== 'undefined') {
19
+ // web worker
20
+ PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/');
21
+ }
22
+ var PACKAGE_NAME = 'blaze-out/k8-opt/genfiles/third_party/mediapipe/web/solutions/pose/pose_solution_packed_assets.data';
23
+ var REMOTE_PACKAGE_BASE = 'pose_solution_packed_assets.data';
24
+ if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) {
25
+ Module['locateFile'] = Module['locateFilePackage'];
26
+ err('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)');
27
+ }
28
+ var REMOTE_PACKAGE_NAME = Module['locateFile'] ? Module['locateFile'](REMOTE_PACKAGE_BASE, '') : REMOTE_PACKAGE_BASE;
29
+ var REMOTE_PACKAGE_SIZE = metadata['remote_package_size'];
30
+
31
+ function fetchRemotePackage(packageName, packageSize, callback, errback) {
32
+ if (typeof process === 'object' && typeof process.versions === 'object' && typeof process.versions.node === 'string') {
33
+ require('fs').readFile(packageName, function(err, contents) {
34
+ if (err) {
35
+ errback(err);
36
+ } else {
37
+ callback(contents.buffer);
38
+ }
39
+ });
40
+ return;
41
+ }
42
+ var xhr = new XMLHttpRequest();
43
+ xhr.open('GET', packageName, true);
44
+ xhr.responseType = 'arraybuffer';
45
+ xhr.onprogress = function(event) {
46
+ var url = packageName;
47
+ var size = packageSize;
48
+ if (event.total) size = event.total;
49
+ if (event.loaded) {
50
+ if (!xhr.addedTotal) {
51
+ xhr.addedTotal = true;
52
+ if (!Module.dataFileDownloads) Module.dataFileDownloads = {};
53
+ Module.dataFileDownloads[url] = {
54
+ loaded: event.loaded,
55
+ total: size
56
+ };
57
+ } else {
58
+ Module.dataFileDownloads[url].loaded = event.loaded;
59
+ }
60
+ var total = 0;
61
+ var loaded = 0;
62
+ var num = 0;
63
+ for (var download in Module.dataFileDownloads) {
64
+ var data = Module.dataFileDownloads[download];
65
+ total += data.total;
66
+ loaded += data.loaded;
67
+ num++;
68
+ }
69
+ total = Math.ceil(total * Module.expectedDataFileDownloads/num);
70
+ if (Module['setStatus']) Module['setStatus']('Downloading data... (' + loaded + '/' + total + ')');
71
+ } else if (!Module.dataFileDownloads) {
72
+ if (Module['setStatus']) Module['setStatus']('Downloading data...');
73
+ }
74
+ };
75
+ xhr.onerror = function(event) {
76
+ throw new Error("NetworkError for: " + packageName);
77
+ }
78
+ xhr.onload = function(event) {
79
+ if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
80
+ var packageData = xhr.response;
81
+ callback(packageData);
82
+ } else {
83
+ throw new Error(xhr.statusText + " : " + xhr.responseURL);
84
+ }
85
+ };
86
+ xhr.send(null);
87
+ };
88
+
89
+ function handleError(error) {
90
+ console.error('package error:', error);
91
+ };
92
+
93
+ var fetchedCallback = null;
94
+ var fetched = Module['getPreloadedPackage'] ? Module['getPreloadedPackage'](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null;
95
+
96
+ if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) {
97
+ if (fetchedCallback) {
98
+ fetchedCallback(data);
99
+ fetchedCallback = null;
100
+ } else {
101
+ fetched = data;
102
+ }
103
+ }, handleError);
104
+
105
+ function runWithFS() {
106
+
107
+ function assert(check, msg) {
108
+ if (!check) throw msg + new Error().stack;
109
+ }
110
+ Module['FS_createPath']("/", "third_party", true, true);
111
+ Module['FS_createPath']("/third_party", "mediapipe", true, true);
112
+ Module['FS_createPath']("/third_party/mediapipe", "modules", true, true);
113
+ Module['FS_createPath']("/third_party/mediapipe/modules", "pose_detection", true, true);
114
+
115
+ /** @constructor */
116
+ function DataRequest(start, end, audio) {
117
+ this.start = start;
118
+ this.end = end;
119
+ this.audio = audio;
120
+ }
121
+ DataRequest.prototype = {
122
+ requests: {},
123
+ open: function(mode, name) {
124
+ this.name = name;
125
+ this.requests[name] = this;
126
+ Module['addRunDependency']('fp ' + this.name);
127
+ },
128
+ send: function() {},
129
+ onload: function() {
130
+ var byteArray = this.byteArray.subarray(this.start, this.end);
131
+ this.finish(byteArray);
132
+ },
133
+ finish: function(byteArray) {
134
+ var that = this;
135
+
136
+ Module['FS_createPreloadedFile'](this.name, null, byteArray, true, true, function() {
137
+ Module['removeRunDependency']('fp ' + that.name);
138
+ }, function() {
139
+ if (that.audio) {
140
+ Module['removeRunDependency']('fp ' + that.name); // workaround for chromium bug 124926 (still no audio with this, but at least we don't hang)
141
+ } else {
142
+ err('Preloading file ' + that.name + ' failed');
143
+ }
144
+ }, false, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change
145
+
146
+ this.requests[this.name] = null;
147
+ }
148
+ };
149
+
150
+ var files = metadata['files'];
151
+ for (var i = 0; i < files.length; ++i) {
152
+ new DataRequest(files[i]['start'], files[i]['end'], files[i]['audio'] || 0).open('GET', files[i]['filename']);
153
+ }
154
+
155
+ function processPackageData(arrayBuffer) {
156
+ assert(arrayBuffer, 'Loading data file failed.');
157
+ assert(arrayBuffer.constructor.name === ArrayBuffer.name, 'bad input to processPackageData');
158
+ var byteArray = new Uint8Array(arrayBuffer);
159
+ var curr;
160
+ // Reuse the bytearray from the XHR as the source for file reads.
161
+ DataRequest.prototype.byteArray = byteArray;
162
+ var files = metadata['files'];
163
+ for (var i = 0; i < files.length; ++i) {
164
+ DataRequest.prototype.requests[files[i].filename].onload();
165
+ } Module['removeRunDependency']('datafile_blaze-out/k8-opt/genfiles/third_party/mediapipe/web/solutions/pose/pose_solution_packed_assets.data');
166
+
167
+ };
168
+ Module['addRunDependency']('datafile_blaze-out/k8-opt/genfiles/third_party/mediapipe/web/solutions/pose/pose_solution_packed_assets.data');
169
+
170
+ if (!Module.preloadResults) Module.preloadResults = {};
171
+
172
+ Module.preloadResults[PACKAGE_NAME] = {fromCache: false};
173
+ if (fetched) {
174
+ processPackageData(fetched);
175
+ fetched = null;
176
+ } else {
177
+ fetchedCallback = processPackageData;
178
+ }
179
+
180
+ }
181
+ if (Module['calledRun']) {
182
+ runWithFS();
183
+ } else {
184
+ if (!Module['preRun']) Module['preRun'] = [];
185
+ Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it
186
+ }
187
+
188
+ }
189
+ loadPackage({"files": [{"filename": "/third_party/mediapipe/modules/pose_detection/pose_detection.tflite", "start": 0, "end": 2962288}], "remote_package_size": 2962288});
190
+
191
+ })();
sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_solution_simd_wasm_bin.js ADDED
The diff for this file is too large to render. See raw diff
 
sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_solution_simd_wasm_bin.wasm ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:195a929430e2ce130b3efb82e64ba27c8e68cb0f6bad870b715688060ea6f7e2
3
+ size 6104372
sd-webui-3d-open-pose-editor/downloads/pose/0.5.1675469404/pose_web.binarypb ADDED
Binary file (1.01 kB). View file
 
sd-webui-3d-open-pose-editor/index.html ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>3D Openpose Editor</title>
8
+ <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
9
+ <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
10
+ <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
11
+ <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
12
+ <meta name="msapplication-TileColor" content="#2d89ef">
13
+ <meta name="theme-color" content="#ffffff">
14
+ </head>
15
+
16
+ <body>
17
+ <div id="root"></div>
18
+ <script type="module" src="/src/entry.ts"></script>
19
+ </body>
20
+
21
+ </html>
sd-webui-3d-open-pose-editor/install.py ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pathlib
2
+
3
+ import requests
4
+
5
+ try:
6
+ root_path = pathlib.Path(__file__).resolve().parents[0]
7
+ except NameError:
8
+ import inspect
9
+
10
+ root_path = pathlib.Path(inspect.getfile(lambda: None)).resolve().parents[0]
11
+
12
+
13
+ def download(url: str, dest: pathlib.Path):
14
+ try:
15
+ with requests.get(url, stream=True) as r:
16
+ with open(dest, "wb") as f:
17
+ for chunk in r.iter_content(chunk_size=1024):
18
+ f.write(chunk)
19
+ except requests.exceptions.RequestException as e:
20
+ print(e)
21
+
22
+
23
+ def main():
24
+ MEDIAPIPE_POSE_VERSION = "0.5.1675469404"
25
+ mediapipe_dir = root_path / "downloads" / "pose" / MEDIAPIPE_POSE_VERSION
26
+ mediapipe_dir.mkdir(mode=0o755, parents=True, exist_ok=True)
27
+
28
+ for file_name in [
29
+ "pose_landmark_full.tflite",
30
+ "pose_web.binarypb",
31
+ "pose_solution_packed_assets.data",
32
+ "pose_solution_simd_wasm_bin.wasm",
33
+ "pose_solution_packed_assets_loader.js",
34
+ "pose_solution_simd_wasm_bin.js",
35
+ ]:
36
+ file_path = mediapipe_dir / file_name
37
+ if file_path.exists():
38
+ continue
39
+ url = f"https://cdn.jsdelivr.net/npm/@mediapipe/pose@{MEDIAPIPE_POSE_VERSION}/{file_name}"
40
+ print(f"Downloading {file_name}...")
41
+ download(url, file_path)
42
+
43
+
44
+ main()
sd-webui-3d-open-pose-editor/javascript/index.js ADDED
@@ -0,0 +1 @@
 
 
1
+ (function(){"use strict";var it=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof{}<"u"?{}:typeof self<"u"?self:{},G={},rt={get exports(){return G},set exports(r){G=r}};(function(r,i){(function(c,f){r.exports=f()})(it,function(){var c=1e3,f=6e4,y=36e5,w="millisecond",$="second",S="minute",_="hour",v="day",O="week",M="month",A="quarter",h="year",Y="date",et="Invalid Date",ht=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,mt=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,pt={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(s){var n=["th","st","nd","rd"],t=s%100;return"["+s+(n[(t-20)%10]||n[t]||n[0])+"]"}},V=function(s,n,t){var o=String(s);return!o||o.length>=n?s:""+Array(n+1-o.length).join(t)+s},$t={s:V,z:function(s){var n=-s.utcOffset(),t=Math.abs(n),o=Math.floor(t/60),e=t%60;return(n<=0?"+":"-")+V(o,2,"0")+":"+V(e,2,"0")},m:function s(n,t){if(n.date()<t.date())return-s(t,n);var o=12*(t.year()-n.year())+(t.month()-n.month()),e=n.clone().add(o,M),u=t-e<0,a=n.clone().add(o+(u?-1:1),M);return+(-(o+(t-e)/(u?e-a:a-e))||0)},a:function(s){return s<0?Math.ceil(s)||0:Math.floor(s)},p:function(s){return{M,y:h,w:O,d:v,D:Y,h:_,m:S,s:$,ms:w,Q:A}[s]||String(s||"").toLowerCase().replace(/s$/,"")},u:function(s){return s===void 0}},I="en",q={};q[I]=pt;var Z=function(s){return s instanceof U},P=function s(n,t,o){var e;if(!n)return I;if(typeof n=="string"){var u=n.toLowerCase();q[u]&&(e=u),t&&(q[u]=t,e=u);var a=n.split("-");if(!e&&a.length>1)return s(a[0])}else{var d=n.name;q[d]=n,e=d}return!o&&e&&(I=e),e||!o&&I},g=function(s,n){if(Z(s))return s.clone();var t=typeof n=="object"?n:{};return t.date=s,t.args=arguments,new U(t)},l=$t;l.l=P,l.i=Z,l.w=function(s,n){return g(s,{locale:n.$L,utc:n.$u,x:n.$x,$offset:n.$offset})};var U=function(){function s(t){this.$L=P(t.locale,null,!0),this.parse(t)}var n=s.prototype;return n.parse=function(t){this.$d=function(o){var e=o.date,u=o.utc;if(e===null)return new Date(NaN);if(l.u(e))return new Date;if(e instanceof Date)return new Date(e);if(typeof e=="string"&&!/Z$/i.test(e)){var a=e.match(ht);if(a){var d=a[2]-1||0,p=(a[7]||"0").substring(0,3);return u?new Date(Date.UTC(a[1],d,a[3]||1,a[4]||0,a[5]||0,a[6]||0,p)):new Date(a[1],d,a[3]||1,a[4]||0,a[5]||0,a[6]||0,p)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},n.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},n.$utils=function(){return l},n.isValid=function(){return this.$d.toString()!==et},n.isSame=function(t,o){var e=g(t);return this.startOf(o)<=e&&e<=this.endOf(o)},n.isAfter=function(t,o){return g(t)<this.startOf(o)},n.isBefore=function(t,o){return this.endOf(o)<g(t)},n.$g=function(t,o,e){return l.u(t)?this[o]:this.set(e,t)},n.unix=function(){return Math.floor(this.valueOf()/1e3)},n.valueOf=function(){return this.$d.getTime()},n.startOf=function(t,o){var e=this,u=!!l.u(o)||o,a=l.p(t),d=function(E,D){var C=l.w(e.$u?Date.UTC(e.$y,D,E):new Date(e.$y,D,E),e);return u?C:C.endOf(v)},p=function(E,D){return l.w(e.toDate()[E].apply(e.toDate("s"),(u?[0,0,0,0]:[23,59,59,999]).slice(D)),e)},m=this.$W,b=this.$M,x=this.$D,T="set"+(this.$u?"UTC":"");switch(a){case h:return u?d(1,0):d(31,11);case M:return u?d(1,b):d(0,b+1);case O:var k=this.$locale().weekStart||0,N=(m<k?m+7:m)-k;return d(u?x-N:x+(6-N),b);case v:case Y:return p(T+"Hours",0);case _:return p(T+"Minutes",1);case S:return p(T+"Seconds",2);case $:return p(T+"Milliseconds",3);default:return this.clone()}},n.endOf=function(t){return this.startOf(t,!1)},n.$set=function(t,o){var e,u=l.p(t),a="set"+(this.$u?"UTC":""),d=(e={},e[v]=a+"Date",e[Y]=a+"Date",e[M]=a+"Month",e[h]=a+"FullYear",e[_]=a+"Hours",e[S]=a+"Minutes",e[$]=a+"Seconds",e[w]=a+"Milliseconds",e)[u],p=u===v?this.$D+(o-this.$W):o;if(u===M||u===h){var m=this.clone().set(Y,1);m.$d[d](p),m.init(),this.$d=m.set(Y,Math.min(this.$D,m.daysInMonth())).$d}else d&&this.$d[d](p);return this.init(),this},n.set=function(t,o){return this.clone().$set(t,o)},n.get=function(t){return this[l.p(t)]()},n.add=function(t,o){var e,u=this;t=Number(t);var a=l.p(o),d=function(b){var x=g(u);return l.w(x.date(x.date()+Math.round(b*t)),u)};if(a===M)return this.set(M,this.$M+t);if(a===h)return this.set(h,this.$y+t);if(a===v)return d(1);if(a===O)return d(7);var p=(e={},e[S]=f,e[_]=y,e[$]=c,e)[a]||1,m=this.$d.getTime()+t*p;return l.w(m,this)},n.subtract=function(t,o){return this.add(-1*t,o)},n.format=function(t){var o=this,e=this.$locale();if(!this.isValid())return e.invalidDate||et;var u=t||"YYYY-MM-DDTHH:mm:ssZ",a=l.z(this),d=this.$H,p=this.$m,m=this.$M,b=e.weekdays,x=e.months,T=function(D,C,B,F){return D&&(D[C]||D(o,u))||B[C].slice(0,F)},k=function(D){return l.s(d%12||12,D,"0")},N=e.meridiem||function(D,C,B){var F=D<12?"AM":"PM";return B?F.toLowerCase():F},E={YY:String(this.$y).slice(-2),YYYY:this.$y,M:m+1,MM:l.s(m+1,2,"0"),MMM:T(e.monthsShort,m,x,3),MMMM:T(x,m),D:this.$D,DD:l.s(this.$D,2,"0"),d:String(this.$W),dd:T(e.weekdaysMin,this.$W,b,2),ddd:T(e.weekdaysShort,this.$W,b,3),dddd:b[this.$W],H:String(d),HH:l.s(d,2,"0"),h:k(1),hh:k(2),a:N(d,p,!0),A:N(d,p,!1),m:String(p),mm:l.s(p,2,"0"),s:String(this.$s),ss:l.s(this.$s,2,"0"),SSS:l.s(this.$ms,3,"0"),Z:a};return u.replace(mt,function(D,C){return C||E[D]||a.replace(":","")})},n.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},n.diff=function(t,o,e){var u,a=l.p(o),d=g(t),p=(d.utcOffset()-this.utcOffset())*f,m=this-d,b=l.m(this,d);return b=(u={},u[h]=b/12,u[M]=b,u[A]=b/3,u[O]=(m-p)/6048e5,u[v]=(m-p)/864e5,u[_]=m/y,u[S]=m/f,u[$]=m/c,u)[a]||m,e?b:l.a(b)},n.daysInMonth=function(){return this.endOf(M).$D},n.$locale=function(){return q[this.$L]},n.locale=function(t,o){if(!t)return this.$L;var e=this.clone(),u=P(t,o,!0);return u&&(e.$L=u),e},n.clone=function(){return l.w(this.$d,this)},n.toDate=function(){return new Date(this.valueOf())},n.toJSON=function(){return this.isValid()?this.toISOString():null},n.toISOString=function(){return this.$d.toISOString()},n.toString=function(){return this.$d.toUTCString()},s}(),nt=U.prototype;return g.prototype=nt,[["$ms",w],["$s",$],["$m",S],["$H",_],["$W",v],["$M",M],["$y",h],["$D",Y]].forEach(function(s){nt[s[1]]=function(n){return this.$g(n,s[0],s[1])}}),g.extend=function(s,n){return s.$i||(s(n,U,g),s.$i=!0),g},g.locale=P,g.isDayjs=Z,g.unix=function(s){return g(1e3*s)},g.en=q[I],g.Ls=q,g.p={},g})})(rt);const st=G;function ot(r="YYYY_MM_DD_HH_mm_ss"){return st(new Date).format(r)}function at(r,i){const c=document.createElement("a");c.setAttribute("href",r),c.setAttribute("download",i),c.click()}const Q=async(r,i,c)=>new Promise(f=>{const y=new MutationObserver(()=>{!!r.querySelector(i)==c&&(y.disconnect(),f(void 0))});y.observe(r,{childList:!0,subtree:!0}),!!r.querySelector(i)==c&&f(void 0)}),K=r=>new Promise(function(i,c){setTimeout(()=>c("Timeout"),r)}),X=(r,i)=>Promise.race([Q(r,i,!0),K(1e4)]),ut=(r,i)=>Promise.race([Q(r,i,!1),K(1e4)]),H=async(r,i,c)=>{const f=await(await fetch(i)).blob(),y=new File([f],c),w=new DataTransfer;w.items.add(y),r.querySelector("button[aria-label='Clear']")?.click(),await ut(r,"button[aria-label='Clear']");const $=r.querySelector("input[type='file']");$.value="",$.files=w.files,$.dispatchEvent(new Event("change",{bubbles:!0,composed:!0})),await X(r,"button[aria-label='Clear']")},L=(r,i)=>{r.querySelectorAll("button")[i].click()},ct=r=>{const i=r.querySelector(":scope > .label-wrap");i&&(i.classList.contains("open")||i.click())},dt=r=>{gradioApp().querySelector("#openpose3d_iframe").contentWindow.postMessage(r,"*")},z={},J={},lt=()=>{window.addEventListener("message",r=>{const{data:i}=r;if(i&&i.cmd&&i.cmd=="openpose-3d"&&i.method){const c=i.method;console.log("Method",c,r),i.type=="return"?z[c]?.(i.payload):i.type=="event"&&(console.log(J),J[c]?.(i.payload))}})},ft=r=>{Object.assign(J,r)};function W(r,...i){return new Promise((c,f)=>{const y=setTimeout(()=>{delete z[r],f({method:r,status:"Timeout"})},1e3),w=$=>{clearTimeout(y),c($)};z[r]=w,dt({cmd:"openpose-3d",method:r,type:"call",payload:i})})}const tt=()=>{const r=gradioApp().querySelector("#tab_threedopenpose");return r&&r.style.display!="none"};let R=!1,j=!1;onUiLoaded(async()=>{console.log("sd-webui-3d-open-pose-editor: onUiLoaded");const r=async(i,c,f,y,w,$,S,_,v)=>{let O=i.querySelector("#controlnet");if(O)ct(O);else{for(const h of i.querySelectorAll(".cursor-pointer > span"))h.textContent?.includes("ControlNet")&&(h.textContent?.includes("M2M")||(O=h.parentElement?.parentElement));if(!O){console.error("ControlNet element not found");return}}await X(O,'div[data-testid="image"]');const M=O.querySelectorAll('div[data-testid="image"]'),A=O.querySelector(".tab-nav");if(c&&f!=""&&f!="-"){const h=Number(f);A&&L(A,h),await H(M[h],c,"pose.png")}if(y&&w!=""&&w!="-"){const h=Number(w);A&&L(A,h),await H(M[h],y,"depth.png")}if($&&S!=""&&S!="-"){const h=Number(S);A&&L(A,h),await H(M[h],$,"normal.png")}if(_&&v!=""&&v!="-"){const h=Number(v);A&&L(A,h),await H(M[h],_,"canny.png")}};window.openpose3d={sendTxt2img:async(i,c,f,y,w,$,S,_)=>{const v=gradioApp().querySelector("#txt2img_script_container");switch_to_txt2img(),await r(v,i,c,f,y,w,$,S,_)},sendImg2img:async(i,c,f,y,w,$,S,_)=>{const v=gradioApp().querySelector("#img2img_script_container");switch_to_img2img(),await r(v,i,c,f,y,w,$,S,_)},downloadImage:(i,c)=>{if(!i)return;const f=c+"_"+ot()+".png";at(i,f)}},lt(),ft({MakeImages:async i=>{for(const[f,y]of Object.entries(i)){const w=gradioApp().querySelector(`#openpose3d_${f}_image`);await H(w,y,f+".png")}const c=gradioApp().querySelector("#openpose3d_main");L(c,1)}});for(let i=0;i<30;++i)try{await W("GetAppVersion"),R=!0;break}catch(c){if(c.status!="Timeout")throw c}if(!R){console.error("sd-webui-3d-open-pose-editor: Timeout");return}tt()||await W("Pause")}),onUiUpdate(async()=>{R&&(tt()?j&&(j=!1,await W("Resume")):j||(j=!0,await W("Pause")))})})();
sd-webui-3d-open-pose-editor/message.html ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>open pose editor</title>
7
+ </head>
8
+
9
+ <body>
10
+ <div id="root"></div>
11
+ <script type="module" src="/src/message-test.ts"></script>
12
+ <div>
13
+ <iframe
14
+ id="open-pose-editor"
15
+ src="http://localhost:5173/open-pose-editor/"
16
+ style="resize: both"
17
+ width="600px"
18
+ height="900px"
19
+ ></iframe>
20
+ </div>
21
+ <button id="GetAPIs">GetAPIs</button>
22
+ <button id="GetAppVersion">GetAppVersion</button>
23
+ <button id="MakeImages">MakeImages</button>
24
+ <button id="Pause">Pause</button>
25
+ <button id="Resume">Resume</button>
26
+ <button id="OutputWidth">OutputWidth</button>
27
+ <button id="OutputHeight">OutputHeight</button>
28
+ <button id="OnlyHand">OnlyHand</button>
29
+ <button id="MoveMode">MoveMode</button>
30
+ <button id="GetWidth">GetWidth</button>
31
+ <button id="GetHeight">GetHeight</button>
32
+ <button id="GetSceneData">GetSceneData</button>
33
+ <button id="LockView">LockView</button>
34
+ <button id="UnlockView">UnlockView</button>
35
+ <button id="RestoreView">RestoreView</button>
36
+ <div id="output" style="background-color: gray;"></div>
37
+ </body>
38
+ </html>
sd-webui-3d-open-pose-editor/models/foot.fbx ADDED
Binary file (435 kB). View file
 
sd-webui-3d-open-pose-editor/models/hand.fbx ADDED
Binary file (376 kB). View file
 
sd-webui-3d-open-pose-editor/package.json ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "open-pose-editor",
3
+ "private": true,
4
+ "version": "0.0.0",
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite --mode online",
8
+ "dev-extension": "$npm_execpath run build-extension && python scripts/openpose_editor.py",
9
+ "build": "tsc && vite build --mode online",
10
+ "build-singlefile": "tsx tools/generate_assets.ts && tsc && vite build --mode singlefile && tsx tools/fix-singlefile.ts ",
11
+ "build-extension": "tsc && vite build --mode extension-editor && vite build --mode extension-entry",
12
+ "preview": "vite preview",
13
+ "format": "prettier --write src",
14
+ "translate": "tsx tools/translate.ts"
15
+ },
16
+ "dependencies": {
17
+ "@ebay/nice-modal-react": "^1.2.9",
18
+ "@mediapipe/pose": "^0.5.1675469404",
19
+ "@radix-ui/colors": "^0.1.8",
20
+ "@radix-ui/react-alert-dialog": "^1.0.3",
21
+ "@radix-ui/react-dialog": "^1.0.3",
22
+ "@radix-ui/react-icons": "^1.3.0",
23
+ "@radix-ui/react-menubar": "^1.0.2",
24
+ "@radix-ui/react-popover": "^1.0.5",
25
+ "@radix-ui/react-slider": "^1.1.1",
26
+ "@radix-ui/react-toast": "^1.1.3",
27
+ "@react-hookz/web": "^23.0.0",
28
+ "@typescript-eslint/eslint-plugin": "^5.54.1",
29
+ "@typescript-eslint/parser": "^5.54.1",
30
+ "browser-fs-access": "^0.33.0",
31
+ "classnames": "^2.3.2",
32
+ "dat.gui": "^0.7.9",
33
+ "dayjs": "^1.11.7",
34
+ "eslint": "^8.35.0",
35
+ "eslint-config-prettier": "^8.7.0",
36
+ "fs-extra": "^11.1.0",
37
+ "i18next": "^22.4.11",
38
+ "i18next-browser-languagedetector": "^7.0.1",
39
+ "lodash-es": "^4.17.21",
40
+ "prettier": "^2.8.4",
41
+ "react": "^18.2.0",
42
+ "react-dom": "^18.2.0",
43
+ "rollup-plugin-visualizer": "^5.9.0",
44
+ "three": "^0.150.1",
45
+ "tsx": "^3.12.5",
46
+ "type-fest": "^3.6.1",
47
+ "vite-plugin-pwa": "^0.14.4",
48
+ "workbox-window": "^6.5.4"
49
+ },
50
+ "devDependencies": {
51
+ "@types/dat.gui": "^0.7.7",
52
+ "@types/fs-extra": "^11.0.1",
53
+ "@types/lodash-es": "^4.17.7",
54
+ "@types/react": "^18.0.27",
55
+ "@types/react-dom": "^18.0.10",
56
+ "@types/three": "^0.149.0",
57
+ "@vitejs/plugin-react": "^3.1.0",
58
+ "typescript": "^4.9.3",
59
+ "vite": "^4.1.0",
60
+ "vite-plugin-conditional-compiler": "^0.1.1",
61
+ "zip-a-folder": "^1.1.5"
62
+ }
63
+ }
sd-webui-3d-open-pose-editor/pages/android-chrome-192x192.png ADDED
sd-webui-3d-open-pose-editor/pages/android-chrome-512x512.png ADDED
sd-webui-3d-open-pose-editor/pages/apple-touch-icon.png ADDED
sd-webui-3d-open-pose-editor/pages/browserconfig.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <browserconfig>
3
+ <msapplication>
4
+ <tile>
5
+ <square150x150logo src="/mstile-150x150.png"/>
6
+ <TileColor>#2d89ef</TileColor>
7
+ </tile>
8
+ </msapplication>
9
+ </browserconfig>
sd-webui-3d-open-pose-editor/pages/favicon-16x16.png ADDED
sd-webui-3d-open-pose-editor/pages/favicon-32x32.png ADDED
sd-webui-3d-open-pose-editor/pages/favicon.ico ADDED
sd-webui-3d-open-pose-editor/pages/icons/icon-128x128.png ADDED
sd-webui-3d-open-pose-editor/pages/icons/icon-144x144.png ADDED
sd-webui-3d-open-pose-editor/pages/icons/icon-152x152.png ADDED
sd-webui-3d-open-pose-editor/pages/icons/icon-192x192.png ADDED
sd-webui-3d-open-pose-editor/pages/icons/icon-384x384.png ADDED
sd-webui-3d-open-pose-editor/pages/icons/icon-48x48.png ADDED
sd-webui-3d-open-pose-editor/pages/icons/icon-512x512.png ADDED
sd-webui-3d-open-pose-editor/pages/icons/icon-72x72.png ADDED
sd-webui-3d-open-pose-editor/pages/icons/icon-96x96.png ADDED
sd-webui-3d-open-pose-editor/pages/index.css ADDED
@@ -0,0 +1 @@
 
 
1
+ ._DialogOverlay_1bzhl_6{background-color:var(--blackA9);position:fixed;inset:0;animation:_overlayShow_1bzhl_1 .15s cubic-bezier(.16,1,.3,1);font-family:var(--openpose-editor-font-family)}._DialogContent_1bzhl_14{font-family:var(--openpose-editor-font-family);background-color:#fff;border-radius:6px;box-shadow:#0e121659 0 10px 38px -10px,#0e121633 0 10px 20px -15px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:90vw;max-width:450px;max-height:85vh;padding:25px;animation:_contentShow_1bzhl_1 .15s cubic-bezier(.16,1,.3,1)}._DialogContent_1bzhl_14:focus{outline:none}._DialogTitle_1bzhl_34{margin:0;font-weight:500;color:var(--mauve12);font-size:32px}._DialogDescription_1bzhl_41{margin:10px 0 20px;color:var(--mauve11);font-size:15px;line-height:1.5;overflow-y:auto;word-break:break-all;max-height:60vh}._Button_1bzhl_51{all:unset;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;padding:0 15px;font-size:15px;line-height:1;font-weight:500;height:35px}._Button_1bzhl_51._violet_1bzhl_63{background-color:#fff;color:var(--violet11);box-shadow:0 2px 10px var(--blackA7)}._Button_1bzhl_51._violet_1bzhl_63:hover{background-color:var(--mauve3)}._Button_1bzhl_51._violet_1bzhl_63:focus{box-shadow:0 0 0 2px #000}._Button_1bzhl_51._green_1bzhl_74{background-color:var(--green4);color:var(--green11)}._Button_1bzhl_51._green_1bzhl_74:hover{background-color:var(--green5)}._Button_1bzhl_51._green_1bzhl_74:focus{box-shadow:0 0 0 2px var(--green7)}._IconButton_1bzhl_85{all:unset;font-family:inherit;border-radius:100%;height:25px;width:25px;display:inline-flex;align-items:center;justify-content:center;color:var(--violet11);position:absolute;top:10px;right:10px}._IconButton_1bzhl_85:hover{background-color:var(--violet4)}._IconButton_1bzhl_85:focus{box-shadow:0 0 0 2px var(--violet7)}@keyframes _overlayShow_1bzhl_1{0%{opacity:0}to{opacity:1}}@keyframes _contentShow_1bzhl_1{0%{opacity:0;transform:translate(-50%,-48%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}:root{--openpose-editor-font-family: -apple-system, BlinkMacSystemFont, Tahoma, Arial, "Hiragino Sans GB", "Microsoft YaHei", sans-serif}*{margin:0;padding:0;outline:none}body,#root{width:100vw;height:100vh;position:relative}#root *{font-family:var(--openpose-editor-font-family)}._app_1w6pk_1{width:100vw;height:100vh;position:absolute;top:0;left:0}._threejsCanvas_1w6pk_9{display:block;width:100vw;height:100vh}._gallery_1w6pk_15{user-select:none;height:140px;position:fixed;bottom:50px;right:50px;display:flex;justify-content:flex-end}._gallery_1w6pk_15 img{width:100px;height:140px;object-fit:contain;background-color:gray;user-select:none;margin-right:2px;margin-left:2px}._background_1w6pk_35{width:100vw;height:100vh;background-color:#d6d6d6;background-position:center;background-repeat:no-repeat;background-size:contain}._MenubarRoot_1qs9g_5{display:flex;background-color:#fff;padding:3px;border-radius:6px;box-shadow:0 2px 10px var(--blackA7);font-family:var(--openpose-editor-font-family)}._MenubarTrigger_1qs9g_14{all:unset;padding:8px 12px;outline:none;user-select:none;font-weight:500;line-height:1;border-radius:4px;color:var(--violet11);font-size:13px;display:flex;align-items:center;justify-content:space-between;gap:2px}._MenubarTrigger_1qs9g_14[data-highlighted],._MenubarTrigger_1qs9g_14[data-state=open]{background-color:var(--violet4)}._MenubarTrigger_1qs9g_14._Blue_1qs9g_35{background-color:var(--violet9);color:#fff}._MenubarContent_1qs9g_40,._MenubarSubContent_1qs9g_41{min-width:220px;background-color:#fff;border-radius:6px;padding:5px;box-shadow:0 10px 38px -10px #16171859,0 10px 20px -15px #16171833;animation-duration:.4s;animation-timing-function:cubic-bezier(.16,1,.3,1);will-change:transform,opacity}._MenubarItem_1qs9g_53,._MenubarSubTrigger_1qs9g_54,._MenubarCheckboxItem_1qs9g_55,._MenubarRadioItem_1qs9g_56{all:unset;font-size:13px;line-height:1;color:var(--violet11);border-radius:4px;display:flex;align-items:center;height:25px;padding:0 10px;position:relative;user-select:none;font-family:var(--openpose-editor-font-family)}._MenubarItem_1qs9g_53._inset_1qs9g_71,._MenubarSubTrigger_1qs9g_54._inset_1qs9g_71,._MenubarCheckboxItem_1qs9g_55._inset_1qs9g_71,._MenubarRadioItem_1qs9g_56._inset_1qs9g_71{padding-left:20px}._MenubarItem_1qs9g_53[data-state=open],._MenubarSubTrigger_1qs9g_54[data-state=open]{background-color:var(--violet4);color:var(--violet11)}._MenubarItem_1qs9g_53[data-highlighted],._MenubarSubTrigger_1qs9g_54[data-highlighted],._MenubarCheckboxItem_1qs9g_55[data-highlighted],._MenubarRadioItem_1qs9g_56[data-highlighted]{background-image:linear-gradient(135deg,var(--violet9) 0%,var(--violet10) 100%);color:var(--violet1)}._MenubarItem_1qs9g_53[data-disabled],._MenubarSubTrigger_1qs9g_54[data-disabled],._MenubarCheckboxItem_1qs9g_55[data-disabled],._MenubarRadioItem_1qs9g_56[data-disabled]{color:var(--mauve8);pointer-events:none}._MenubarItemIndicator_1qs9g_104{position:absolute;left:0;width:20px;display:inline-flex;align-items:center;justify-content:center}._MenubarSeparator_1qs9g_113{height:1px;background-color:var(--violet6);margin:5px}._RightSlot_1qs9g_119{margin-left:auto;padding-left:20px;color:var(--mauve9)}[data-highlighted]>._RightSlot_1qs9g_119{color:#fff}[data-disabled]>._RightSlot_1qs9g_119{color:var(--mauve8)}:root{--red1: hsl(359, 100%, 99.4%);--red2: hsl(359, 100%, 98.6%);--red3: hsl(360, 100%, 96.8%);--red4: hsl(360, 97.9%, 94.8%);--red5: hsl(360, 90.2%, 91.9%);--red6: hsl(360, 81.7%, 87.8%);--red7: hsl(359, 74.2%, 81.7%);--red8: hsl(359, 69.5%, 74.3%);--red9: hsl(358, 75%, 59%);--red10: hsl(358, 69.4%, 55.2%);--red11: hsl(358, 65%, 48.7%);--red12: hsl(354, 50%, 14.6%)}._AlertDialogOverlay_4rriq_6{font-family:var(--openpose-editor-font-family);background-color:var(--blackA9);position:fixed;inset:0;animation:_overlayShow_4rriq_1 .15s cubic-bezier(.16,1,.3,1)}._AlertDialogContent_4rriq_14{font-family:var(--openpose-editor-font-family);background-color:#fff;border-radius:6px;box-shadow:#0e121659 0 10px 38px -10px,#0e121633 0 10px 20px -15px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:90vw;max-width:500px;max-height:85vh;padding:25px;animation:_contentShow_4rriq_1 .15s cubic-bezier(.16,1,.3,1)}._AlertDialogContent_4rriq_14:focus{outline:none}._AlertDialogTitle_4rriq_34{margin:0;color:var(--mauve12);font-size:27px;font-weight:500;display:flex;justify-content:flex-start;align-items:center}@keyframes _overlayShow_4rriq_1{0%{opacity:0}to{opacity:1}}@keyframes _contentShow_4rriq_1{0%{opacity:0;transform:translate(-50%,-48%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}._lds-roller_4rriq_64{display:inline-block;position:relative;min-width:100px;min-height:80px}._lds-roller_4rriq_64 div{animation:_lds-roller_4rriq_64 1.2s cubic-bezier(.5,0,.5,1) infinite;transform-origin:40px 40px}._lds-roller_4rriq_64 div:after{content:" ";display:block;position:absolute;width:7px;height:7px;border-radius:50%;background:gray;margin:-4px 0 0 -4px}._lds-roller_4rriq_64 div:nth-child(1){animation-delay:-36ms}._lds-roller_4rriq_64 div:nth-child(1):after{top:63px;left:63px}._lds-roller_4rriq_64 div:nth-child(2){animation-delay:-72ms}._lds-roller_4rriq_64 div:nth-child(2):after{top:68px;left:56px}._lds-roller_4rriq_64 div:nth-child(3){animation-delay:-.108s}._lds-roller_4rriq_64 div:nth-child(3):after{top:71px;left:48px}._lds-roller_4rriq_64 div:nth-child(4){animation-delay:-.144s}._lds-roller_4rriq_64 div:nth-child(4):after{top:72px;left:40px}._lds-roller_4rriq_64 div:nth-child(5){animation-delay:-.18s}._lds-roller_4rriq_64 div:nth-child(5):after{top:71px;left:32px}._lds-roller_4rriq_64 div:nth-child(6){animation-delay:-.216s}._lds-roller_4rriq_64 div:nth-child(6):after{top:68px;left:24px}._lds-roller_4rriq_64 div:nth-child(7){animation-delay:-.252s}._lds-roller_4rriq_64 div:nth-child(7):after{top:63px;left:17px}._lds-roller_4rriq_64 div:nth-child(8){animation-delay:-.288s}._lds-roller_4rriq_64 div:nth-child(8):after{top:56px;left:12px}@keyframes _lds-roller_4rriq_64{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:root{--green1: hsl(136, 50%, 98.9%);--green2: hsl(138, 62.5%, 96.9%);--green3: hsl(139, 55.2%, 94.5%);--green4: hsl(140, 48.7%, 91%);--green5: hsl(141, 43.7%, 86%);--green6: hsl(143, 40.3%, 79%);--green7: hsl(146, 38.5%, 69%);--green8: hsl(151, 40.2%, 54.1%);--green9: hsl(151, 55%, 41.5%);--green10: hsl(152, 57.5%, 37.6%);--green11: hsl(153, 67%, 28.5%);--green12: hsl(155, 40%, 14%)}:root{--slate1: hsl(206, 30%, 98.8%);--slate2: hsl(210, 16.7%, 97.6%);--slate3: hsl(209, 13.3%, 95.3%);--slate4: hsl(209, 12.2%, 93.2%);--slate5: hsl(208, 11.7%, 91.1%);--slate6: hsl(208, 11.3%, 88.9%);--slate7: hsl(207, 11.1%, 85.9%);--slate8: hsl(205, 10.7%, 78%);--slate9: hsl(206, 6%, 56.1%);--slate10: hsl(206, 5.8%, 52.3%);--slate11: hsl(206, 6%, 43.5%);--slate12: hsl(206, 24%, 9%)}._ToastViewport_1gbkr_7{font-family:var(--openpose-editor-font-family);--viewport-padding: 25px;position:fixed;bottom:0;right:0;display:flex;flex-direction:column;padding:var(--viewport-padding);gap:10px;width:390px;max-width:100vw;margin:0;list-style:none;z-index:2147483647;outline:none}._ToastRoot_1gbkr_25{background-color:#fff;border-radius:6px;box-shadow:#0e121659 0 10px 38px -10px,#0e121633 0 10px 20px -15px;padding:15px;display:grid;grid-template-areas:"title action" "description action";grid-template-columns:auto max-content;column-gap:15px;align-items:center}._ToastRoot_1gbkr_25[data-state=open]{animation:_slideIn_1gbkr_1 .15s cubic-bezier(.16,1,.3,1)}._ToastRoot_1gbkr_25[data-state=closed]{animation:_hide_1gbkr_1 .1s ease-in}._ToastRoot_1gbkr_25[data-swipe=move]{transform:translate(var(--radix-toast-swipe-move-x))}._ToastRoot_1gbkr_25[data-swipe=cancel]{transform:translate(0);transition:transform .2s ease-out}._ToastRoot_1gbkr_25[data-swipe=end]{animation:_swipeOut_1gbkr_1 .1s ease-out}@keyframes _hide_1gbkr_1{0%{opacity:1}to{opacity:0}}@keyframes _slideIn_1gbkr_1{0%{transform:translate(calc(100% + var(--viewport-padding)))}to{transform:translate(0)}}@keyframes _swipeOut_1gbkr_1{0%{transform:translate(var(--radix-toast-swipe-end-x))}to{transform:translate(calc(100% + var(--viewport-padding)))}}._ToastTitle_1gbkr_81{grid-area:title;margin-bottom:5px;font-weight:500;color:var(--slate12);font-size:15px}._ToastDescription_1gbkr_89{grid-area:description;margin:0;color:var(--slate11);font-size:13px;line-height:1.3}._ToastAction_1gbkr_97{grid-area:action}._Button_1gbkr_101{all:unset;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;font-weight:500}._Button_1gbkr_101._small_1gbkr_109{font-size:12px;padding:0 10px;line-height:25px;height:25px}._Button_1gbkr_101._large_1gbkr_115{font-size:15px;padding:0 15px;line-height:35px;height:35px}._Button_1gbkr_101._violet_1gbkr_121{background-color:#fff;color:var(--violet11);box-shadow:0 2px 10px var(--blackA7)}._Button_1gbkr_101._violet_1gbkr_121:hover{background-color:var(--mauve3)}._Button_1gbkr_101._violet_1gbkr_121:focus{box-shadow:0 0 0 2px #000}._Button_1gbkr_101._green_1gbkr_132{background-color:var(--green2);color:var(--green11);box-shadow:inset 0 0 0 1px var(--green7)}._Button_1gbkr_101._green_1gbkr_132:hover{box-shadow:inset 0 0 0 1px var(--green8)}._Button_1gbkr_101._green_1gbkr_132:focus{box-shadow:0 0 0 2px var(--green8)}._Root_ofrr6_5{position:fixed;top:0;left:0;width:100%;height:100%}._ContextMenuContent_ofrr6_13{animation-name:_slideDownAndFade_ofrr6_1;position:fixed;top:0;left:0}._ContextMenuContent_ofrr6_13{min-width:220px;background-color:#fff;border-radius:6px;padding:5px;box-shadow:0 10px 38px -10px #16171859,0 10px 20px -15px #16171833;animation-duration:.4s;animation-timing-function:cubic-bezier(.16,1,.3,1);will-change:transform,opacity}._ContextMenuItem_ofrr6_32{font-size:13px;line-height:1;color:var(--violet11);border-radius:3px;display:flex;align-items:center;height:25px;position:relative;padding:0 5px 0 25px;user-select:none;outline:none}._ContextMenuItem_ofrr6_32:hover{background-color:var(--violet9);color:var(--violet1)}._ContextMenuSeparator_ofrr6_52{height:1px;background-color:var(--violet6);margin:5px}._IconButton_ofrr6_58{all:unset;font-family:inherit;border-radius:100%;height:35px;width:35px;display:inline-flex;align-items:center;justify-content:center;color:var(--violet11);background-color:#fff;box-shadow:0 2px 10px var(--blackA7);width:100%;height:100%}._IconButton_ofrr6_58:hover{background-color:var(--violet3)}._IconButton_ofrr6_58:focus{box-shadow:0 0 0 2px #000}._RightSlot_ofrr6_80{margin-left:auto;padding-left:20px;color:var(--mauve11)}._ContextMenuItem_ofrr6_32:hover>._RightSlot_ofrr6_80{color:#fff}@keyframes _slideUpAndFade_ofrr6_1{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}@keyframes _slideRightAndFade_ofrr6_1{0%{opacity:0;transform:translate(-2px)}to{opacity:1;transform:translate(0)}}@keyframes _slideDownAndFade_ofrr6_1{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}@keyframes _slideLeftAndFade_ofrr6_1{0%{opacity:0;transform:translate(2px)}to{opacity:1;transform:translate(0)}}:root{--mauve1: hsl(300, 20%, 99%);--mauve2: hsl(300, 7.7%, 97.5%);--mauve3: hsl(294, 5.5%, 95.3%);--mauve4: hsl(289, 4.7%, 93.3%);--mauve5: hsl(283, 4.4%, 91.3%);--mauve6: hsl(278, 4.1%, 89.1%);--mauve7: hsl(271, 3.9%, 86.3%);--mauve8: hsl(255, 3.7%, 78.8%);--mauve9: hsl(252, 4%, 57.3%);--mauve10: hsl(253, 3.5%, 53.5%);--mauve11: hsl(252, 4%, 44.8%);--mauve12: hsl(260, 25%, 11%)}._PopoverContent_1f240_5{border-radius:4px;padding:20px;background-color:#fff;box-shadow:#0e121659 0 10px 38px -10px,#0e121633 0 10px 20px -15px;animation-duration:.4s;animation-timing-function:cubic-bezier(.16,1,.3,1);will-change:transform,opacity;font-family:var(--openpose-editor-font-family)}._PopoverContent_1f240_5:focus{box-shadow:#0e121659 0 10px 38px -10px,#0e121633 0 10px 20px -15px,0 0 0 2px var(--violet7)}._PopoverContent_1f240_5[data-state=open][data-side=top]{animation-name:_slideDownAndFade_1f240_1}._PopoverContent_1f240_5[data-state=open][data-side=right]{animation-name:_slideLeftAndFade_1f240_1}._PopoverContent_1f240_5[data-state=open][data-side=bottom]{animation-name:_slideUpAndFade_1f240_1}._PopoverContent_1f240_5[data-state=open][data-side=left]{animation-name:_slideRightAndFade_1f240_1}._PopoverArrow_1f240_35{fill:#fff}._IconButton_1f240_39{all:unset;font-family:inherit;border-radius:100%;height:35px;width:35px;display:inline-flex;align-items:center;justify-content:center;color:var(--violet11);background-color:#fff;box-shadow:0 2px 10px var(--blackA7)}._IconButton_1f240_39:hover{background-color:var(--violet3)}._IconButton_1f240_39:focus{box-shadow:0 0 0 2px var(--violet6)}@keyframes _slideUpAndFade_1f240_1{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}@keyframes _slideRightAndFade_1f240_1{0%{opacity:0;transform:translate(-2px)}to{opacity:1;transform:translate(0)}}@keyframes _slideDownAndFade_1f240_1{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}@keyframes _slideLeftAndFade_1f240_1{0%{opacity:0;transform:translate(2px)}to{opacity:1;transform:translate(0)}}Input{background-color:var(--violet5);border:none;box-sizing:border-box;padding-left:5px;padding-right:5px;border-radius:7px}Input:focus{border:2px var(--violet11) solid;border-radius:5}:root{--blackA1: hsla(0, 0%, 0%, .012);--blackA2: hsla(0, 0%, 0%, .027);--blackA3: hsla(0, 0%, 0%, .047);--blackA4: hsla(0, 0%, 0%, .071);--blackA5: hsla(0, 0%, 0%, .09);--blackA6: hsla(0, 0%, 0%, .114);--blackA7: hsla(0, 0%, 0%, .141);--blackA8: hsla(0, 0%, 0%, .22);--blackA9: hsla(0, 0%, 0%, .439);--blackA10: hsla(0, 0%, 0%, .478);--blackA11: hsla(0, 0%, 0%, .565);--blackA12: hsla(0, 0%, 0%, .91)}:root{--violet1: hsl(255, 65%, 99.4%);--violet2: hsl(252, 100%, 99%);--violet3: hsl(252, 96.9%, 97.4%);--violet4: hsl(252, 91.5%, 95.5%);--violet5: hsl(252, 85.1%, 93%);--violet6: hsl(252, 77.8%, 89.4%);--violet7: hsl(252, 71%, 83.7%);--violet8: hsl(252, 68.6%, 76.3%);--violet9: hsl(252, 56%, 57.5%);--violet10: hsl(251, 48.1%, 53.5%);--violet11: hsl(250, 43%, 48%);--violet12: hsl(254, 60%, 18.5%)}._SliderRoot_1ofoi_4{position:relative;display:flex;align-items:center;user-select:none;touch-action:none;height:20px}._SliderTrack_1ofoi_13{background-color:var(--violet5);position:relative;flex-grow:1;border-radius:9999px;height:10px}._SliderRange_1ofoi_21{position:absolute;background-color:var(--violet9);border-radius:9999px;height:100%}
sd-webui-3d-open-pose-editor/pages/index.html ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>3D Openpose Editor</title>
8
+ <link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon.png">
9
+ <link rel="icon" type="image/png" sizes="32x32" href="./favicon-32x32.png">
10
+ <link rel="icon" type="image/png" sizes="16x16" href="./favicon-16x16.png">
11
+ <link rel="mask-icon" href="./safari-pinned-tab.svg" color="#5bbad5">
12
+ <meta name="msapplication-TileColor" content="#2d89ef">
13
+ <meta name="theme-color" content="#ffffff">
14
+ <script type="module" crossorigin src="./index.js?a83964bb"></script>
15
+ <link rel="stylesheet" href="./index.css?20db99c0">
16
+ </head>
17
+
18
+ <body>
19
+ <div id="root"></div>
20
+
21
+ </body>
22
+
23
+ </html>
sd-webui-3d-open-pose-editor/pages/index.js ADDED
The diff for this file is too large to render. See raw diff
 
sd-webui-3d-open-pose-editor/pages/mstile-150x150.png ADDED
sd-webui-3d-open-pose-editor/pages/safari-pinned-tab.svg ADDED
sd-webui-3d-open-pose-editor/pnpm-lock.yaml ADDED
The diff for this file is too large to render. See raw diff
 
sd-webui-3d-open-pose-editor/public/android-chrome-192x192.png ADDED
sd-webui-3d-open-pose-editor/public/android-chrome-512x512.png ADDED
sd-webui-3d-open-pose-editor/public/apple-touch-icon.png ADDED
sd-webui-3d-open-pose-editor/public/browserconfig.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <browserconfig>
3
+ <msapplication>
4
+ <tile>
5
+ <square150x150logo src="/mstile-150x150.png"/>
6
+ <TileColor>#2d89ef</TileColor>
7
+ </tile>
8
+ </msapplication>
9
+ </browserconfig>
sd-webui-3d-open-pose-editor/public/favicon-16x16.png ADDED
sd-webui-3d-open-pose-editor/public/favicon-32x32.png ADDED
sd-webui-3d-open-pose-editor/public/favicon.ico ADDED