回答編集履歴
6
変数名変更
answer
CHANGED
@@ -66,25 +66,25 @@
|
|
66
66
|
```python
|
67
67
|
for dir in files_dir:
|
68
68
|
mocfiles = glob.glob('./live2D/' + str(dir) + '/**/*.moc')
|
69
|
-
|
69
|
+
model_value = str(mocfiles)[len(dir) + 13:-2].replace('\', '/')
|
70
70
|
|
71
71
|
phyfiles = glob.glob('./live2D/' + str(dir) + '/**/*physics.json')
|
72
|
-
|
72
|
+
physics_vslue = str(phyfiles)[len(dir) + 13:-2].replace('\', '/')
|
73
73
|
|
74
74
|
mtnfiles = glob.glob('./live2D/' + str(dir) + '/**/*.mtn')
|
75
|
-
|
75
|
+
motions_idle_value = [{"file": str(mtn)[len(dir) + 10:].replace('\', '/')} for mtn in mtnfiles]
|
76
76
|
|
77
77
|
dic = {
|
78
78
|
"name": "Live2D",
|
79
|
-
"model":
|
79
|
+
"model": model_value,
|
80
80
|
"textures": [
|
81
81
|
"Texture2D/texture_00.png"
|
82
82
|
],
|
83
83
|
"motions": {
|
84
|
-
"idle":
|
84
|
+
"idle": motions_idle_value,
|
85
85
|
"tap": [{"name": 0, "file": 0}]},
|
86
86
|
"expressions": [{"name": 0, "file": 0}],
|
87
|
-
"physics":
|
87
|
+
"physics": physics_value,
|
88
88
|
"lip_sync": "true"
|
89
89
|
}
|
90
90
|
(略)
|
5
追記
answer
CHANGED
@@ -58,4 +58,35 @@
|
|
58
58
|
print(json.dumps(dic, ensure_ascii=False, indent=4, sort_keys=False, separators=(',', ': ')))
|
59
59
|
```
|
60
60
|
|
61
|
-
`dic["motions"]["idle"]`を空リストで用意しておいて、**新しい辞書**をappendしていけばいいのでは。
|
61
|
+
`dic["motions"]["idle"]`を空リストで用意しておいて、**新しい辞書**をappendしていけばいいのでは。
|
62
|
+
|
63
|
+
----
|
64
|
+
|
65
|
+
というかこの感じなら
|
66
|
+
```python
|
67
|
+
for dir in files_dir:
|
68
|
+
mocfiles = glob.glob('./live2D/' + str(dir) + '/**/*.moc')
|
69
|
+
model_entry = str(mocfiles)[len(dir) + 13:-2].replace('\', '/')
|
70
|
+
|
71
|
+
phyfiles = glob.glob('./live2D/' + str(dir) + '/**/*physics.json')
|
72
|
+
physics_entry = str(phyfiles)[len(dir) + 13:-2].replace('\', '/')
|
73
|
+
|
74
|
+
mtnfiles = glob.glob('./live2D/' + str(dir) + '/**/*.mtn')
|
75
|
+
motions_idle_entry = [{"file": str(mtn)[len(dir) + 10:].replace('\', '/')} for mtn in mtnfiles]
|
76
|
+
|
77
|
+
dic = {
|
78
|
+
"name": "Live2D",
|
79
|
+
"model": model_entry,
|
80
|
+
"textures": [
|
81
|
+
"Texture2D/texture_00.png"
|
82
|
+
],
|
83
|
+
"motions": {
|
84
|
+
"idle": motions_idle_entry,
|
85
|
+
"tap": [{"name": 0, "file": 0}]},
|
86
|
+
"expressions": [{"name": 0, "file": 0}],
|
87
|
+
"physics": physics_entry,
|
88
|
+
"lip_sync": "true"
|
89
|
+
}
|
90
|
+
(略)
|
91
|
+
```
|
92
|
+
と構築するかな、と思いました。
|
4
文字数制限? かもしれないので省略
answer
CHANGED
@@ -13,27 +13,7 @@
|
|
13
13
|
... "motions":{
|
14
14
|
... "idle":[
|
15
15
|
... {"file":"../motion/angry01.mtn"},
|
16
|
-
... {"file":"../motion/angry02.mtn"},
|
17
|
-
... {"file":"../motion/bye01.mtn"},
|
18
|
-
... {"file":"../motion/cry01.mtn"},
|
19
|
-
... {"file":"../motion/idle01.mtn"},
|
20
|
-
... {"file":"../motion/idle02.mtn"},
|
21
|
-
... {"file":"../motion/kime01.mtn"},
|
22
|
-
|
16
|
+
(略)
|
23
|
-
... {"file":"../motion/nf02.mtn"},
|
24
|
-
... {"file":"../motion/nf03.mtn"},
|
25
|
-
... {"file":"../motion/nf04.mtn"},
|
26
|
-
... {"file":"../motion/nf05.mtn"},
|
27
|
-
... {"file":"../motion/nf_left01.mtn"},
|
28
|
-
... {"file":"../motion/nf_right01.mtn"},
|
29
|
-
... {"file":"../motion/pui01.mtn"},
|
30
|
-
... {"file":"../motion/sad01.mtn"},
|
31
|
-
... {"file":"../motion/serious01.mtn"},
|
32
|
-
... {"file":"../motion/shame01.mtn"},
|
33
|
-
... {"file":"../motion/smile01.mtn"},
|
34
|
-
... {"file":"../motion/smile02.mtn"},
|
35
|
-
... {"file":"../motion/smile03.mtn"},
|
36
|
-
... {"file":"../motion/sneeze01.mtn"},
|
37
17
|
... {"file":"../motion/surprised01.mtn"}
|
38
18
|
... ]
|
39
19
|
... }
|
@@ -42,28 +22,7 @@
|
|
42
22
|
>>> pprint(d)
|
43
23
|
{'model': 'XXX.moc',
|
44
24
|
'motions': {'idle': [{'file': '../motion/angry01.mtn'},
|
45
|
-
{'file': '../motion/angry02.mtn'},
|
46
|
-
{'file': '../motion/bye01.mtn'},
|
47
|
-
{'file': '../motion/cry01.mtn'},
|
48
|
-
{'file': '../motion/idle01.mtn'},
|
49
|
-
{'file': '../motion/idle02.mtn'},
|
50
|
-
{'file': '../motion/kime01.mtn'},
|
51
|
-
{'file': '../motion/nf01.mtn'},
|
52
|
-
{'file': '../motion/nf02.mtn'},
|
53
|
-
{'file': '../motion/nf03.mtn'},
|
54
|
-
{'file': '../motion/nf04.mtn'},
|
55
|
-
{'file': '../motion/nf05.mtn'},
|
56
|
-
{'file': '../motion/nf_left01.mtn'},
|
57
|
-
{'file': '../motion/nf_right01.mtn'},
|
58
|
-
{'file': '../motion/pui01.mtn'},
|
59
|
-
{'file': '../motion/sad01.mtn'},
|
60
|
-
{'file': '../motion/serious01.mtn'},
|
61
|
-
{'file': '../motion/shame01.mtn'},
|
62
|
-
{'file': '../motion/smile01.mtn'},
|
63
|
-
{'file': '../motion/smile02.mtn'},
|
64
|
-
{'file': '../motion/smile03.mtn'},
|
65
|
-
{'file': '../motion/sneeze01.mtn'},
|
66
|
-
{'file': '../motion/surprised01.mtn'}]},
|
25
|
+
(略) {'file': '../motion/surprised01.mtn'}]},
|
67
26
|
'textures': ['XXX.png']}
|
68
27
|
```
|
69
28
|
|
3
追記
answer
CHANGED
@@ -73,4 +73,30 @@
|
|
73
73
|
> ですが, "motions"以下のグループを書き出す際, Pythonの辞書配列では同階層に同じキーは存在することが出来ないため, 要素編集や辞書連結等を使って順々にキーを書き足していくことができず
|
74
74
|
|
75
75
|
この部分で、具体的にどういうコードを書いて何が起こったのかを書きましょう。
|
76
|
-
**あなたがなにをしたのかまったく伝わりません。**
|
76
|
+
**あなたがなにをしたのかまったく伝わりません。**
|
77
|
+
|
78
|
+
----
|
79
|
+
`"tap"`がわからないので手を付けませんが、"idle"はこうじゃないですか?
|
80
|
+
|
81
|
+
```python
|
82
|
+
for dir in files_dir :
|
83
|
+
# dic = {"name":"Live2D","model":"moc/Live2D.moc","textures":["Texture2D/texture_00.png"],"motions":{"idle":[{"name":0,"file":0}],"tap":[{"name":0,"file":0}]},"expressions":[{"name":0,"file":0}],"physics":"physics/physics.json","lip_sync":"true"}
|
84
|
+
dic = {"name":"Live2D","model":"moc/Live2D.moc","textures":["Texture2D/texture_00.png"],"motions":{"idle":[],"tap":[{"name":0,"file":0}]},"expressions":[{"name":0,"file":0}],"physics":"physics/physics.json","lip_sync":"true"}
|
85
|
+
|
86
|
+
mocfiles = glob.glob('./live2D/'+str(dir)+'/**/*.moc')
|
87
|
+
dic["model"] = str(mocfiles)[len(dir)+13:-2].replace('\','/')
|
88
|
+
phyfiles = glob.glob('./live2D/'+str(dir)+'/**/*physics.json')
|
89
|
+
dic["physics"] = str(phyfiles)[len(dir)+13:-2].replace('\','/')
|
90
|
+
|
91
|
+
mtnfiles = glob.glob('./live2D/'+str(dir)+'/**/*.mtn')
|
92
|
+
|
93
|
+
for mtn in mtnfiles:
|
94
|
+
# dic["motions"]["idle"] が list
|
95
|
+
dic["motions"]["idle"].append({"file":str(mtn)[len(dir)+10:].replace('\','/')})
|
96
|
+
|
97
|
+
with open (r"./Live2D/"+dir+"/model.json","w") as f:
|
98
|
+
f.write(json.dumps(dic, ensure_ascii=False, indent=4, sort_keys=False, separators=(',', ': ')))
|
99
|
+
print(json.dumps(dic, ensure_ascii=False, indent=4, sort_keys=False, separators=(',', ': ')))
|
100
|
+
```
|
101
|
+
|
102
|
+
`dic["motions"]["idle"]`を空リストで用意しておいて、**新しい辞書**をappendしていけばいいのでは。
|
2
意図を明確にした
answer
CHANGED
@@ -67,7 +67,8 @@
|
|
67
67
|
'textures': ['XXX.png']}
|
68
68
|
```
|
69
69
|
|
70
|
+
リテラルとして表現可能なオブジェクトである以上、Pythonの辞書で表現できないわけがありません。
|
70
|
-
|
71
|
+
純粋にコードに問題があるだけです。
|
71
72
|
|
72
73
|
> ですが, "motions"以下のグループを書き出す際, Pythonの辞書配列では同階層に同じキーは存在することが出来ないため, 要素編集や辞書連結等を使って順々にキーを書き足していくことができず
|
73
74
|
|
1
些細
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
質問がわかりません。
|
4
4
|
|
5
|
-
`"idle"`要素(array)の最初のデータの末尾に`,`が抜けていますが、これ自体普通にPythonのオブジェクトとして解釈可能
|
5
|
+
`"idle"`要素(array)の最初のデータの末尾に`,`が抜けていますが、そこさえ修正してしまえば、これ自体普通にPythonのオブジェクトとして解釈可能なコードになっています。
|
6
6
|
|
7
7
|
```
|
8
8
|
>>> d = {
|