Skip to content

Commit 0f81735

Browse files
authored
Merge pull request #4 from AiMiDi/ver_0.4.2
Ver 0.4.2
2 parents 7d82bf5 + a8edb6d commit 0f81735

40 files changed

+2615
-2065
lines changed

README.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,15 @@ If there is a problem with selecting multiple-parts when the model is imported,
138138

139139
​ 2. Add motion bake export.
140140

141-
​ 3. Improve Ik.
141+
​ 3.Improve Ik.
142+
143+
**version 0.4.2**
144+
145+
​ 1. Add import pose.
146+
147+
​ 2. Improve the function of PMX Control.
148+
149+
​ 3. Support R25.
142150

143151
## usage
144152

README_zh.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,13 @@ Cinema 4D的mmdtool。
140140

141141
​ 3. 优化Ik.
142142

143+
**version 0.4.2**
144+
145+
​ 1. 添加姿势(vpd)导入。
146+
147+
​ 2. 改进PMX控件。
148+
149+
​ 3. 支持 R25 版本.
143150

144151
## 使用方法
145152

res/c4d_symbols.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ enum
8080
IDS_VMD_MOT_IMPORT_MODEL_INFO,
8181
IDS_VMD_MOT_IMPORT_DELETE_PREVIOUS_ANIMATION,
8282
IDS_VMD_MOT_IMPORT_DETAIL,
83-
IDS_VMD_MOT_IMPORT_BUTTON,
83+
IDS_VMD_MOT_IMPORT_BUTTON,
8484

8585
IDS_VMD_MOT_EXPORT_TITLE,
8686
IDS_VMD_MOT_EXPORT_SIZE,
@@ -95,6 +95,9 @@ enum
9595
IDS_VMD_MOT_EXPORT_USE_BAKE,
9696
IDS_VMD_MOT_EXPORT_BUTTON,
9797

98+
IDS_VPD_POSE_IMPORT_TITLE,
99+
IDS_VPD_POSE_IMPORT_BUTTON,
100+
98101
IDS_PMX_MOD_TOOL_TITLE,
99102

100103
IDS_PMX_MOD_IMPORT_TITLE,

res/description/OMMDJoint.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ enum
1313
JOINT_LINK_RIGID_GRP,
1414
JOINT_LINK_RIGID_A_INDEX,
1515
JOINT_LINK_RIGID_B_INDEX,
16+
JOINT_LINK_RIGID_SET_NAME_BUTTON,
1617

1718
JOINT_ATTITUDE_GRP,
1819
JOINT_ATTITUDE_POSITION,

res/description/OMMDJoint.res

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,30 +44,33 @@ CONTAINER OMMDJoint {
4444

4545
GROUP JOINT_LINK_RIGID_GRP {
4646
DEFAULT 1;
47-
FIT_H;
48-
SCALE_H;
4947

5048
LONG JOINT_LINK_RIGID_A_INDEX {
51-
FIT_H;
52-
SCALE_H;
5349
ANIM OFF;
5450
MIN -1;
51+
FIT_H;
52+
SCALE_H;
5553

5654
CYCLE {
5755
JOINT_RIGID_NONE;
5856
}
5957
}
6058

6159
LONG JOINT_LINK_RIGID_B_INDEX {
62-
FIT_H;
63-
SCALE_H;
6460
ANIM OFF;
6561
MIN -1;
62+
FIT_H;
63+
SCALE_H;
6664

6765
CYCLE {
6866
JOINT_RIGID_NONE;
6967
}
7068
}
69+
70+
BUTTON JOINT_LINK_RIGID_SET_NAME_BUTTON {
71+
FIT_H;
72+
SCALE_H;
73+
}
7174
}
7275

7376
GROUP JOINT_ATTITUDE_GRP {

res/description/OMMDRigid.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,7 @@ enum
99
RIGID_NAME_LOCAL,
1010
RIGID_NAME_UNIVERSAL,
1111
RIGID_NAME_IS,
12-
13-
RIGID_RELATED_BONE_GRP,
1412
RIGID_RELATED_BONE_INDEX,
15-
RIGID_RELATED_BONE_LINK,
1613
RIGID_PHYSICS_MODE,
1714
RIGID_SIZE_POSTURE_GRP,
1815
RIGID_SHAPE_TYPE,
@@ -81,6 +78,8 @@ enum
8178
RIGID_GROUP_12,
8279
RIGID_GROUP_13,
8380
RIGID_GROUP_14,
84-
RIGID_GROUP_15
81+
RIGID_GROUP_15,
82+
83+
RIGID_BONE_NONE = -1,
8584
};
8685
#endif

res/description/OMMDRigid.res

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -72,16 +72,11 @@ CONTAINER OMMDRigid {
7272
}
7373
}
7474

75-
GROUP RIGID_RELATED_BONE_GRP {
76-
DEFAULT 1;
77-
COLUMNS 2;
78-
79-
LONG RIGID_RELATED_BONE_INDEX {
80-
ANIM OFF;
81-
}
8275

83-
LINK RIGID_RELATED_BONE_LINK {
84-
ANIM OFF;
76+
LONG RIGID_RELATED_BONE_INDEX {
77+
ANIM OFF;
78+
CYCLE {
79+
RIGID_BONE_NONE;
8580
}
8681
}
8782

res/description/TMMDBone.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
enum
55
{
66
PMX_BONE_INFO_GRP = 10000,
7+
PMX_BONE_INDEX_TEXT,
78
PMX_BONE_INDEX,
89
PMX_BONE_NAME_LOCAL,//骨骼本地名称
910
PMX_BONE_NAME_UNIVERSAL,//骨骼通用名称
@@ -12,9 +13,9 @@ enum
1213

1314
PMX_BONE_POSITION,//位置
1415

15-
PMX_BONE_PARENT_BONE_GRP,//亲骨组
16+
PMX_BONE_PARENT_BONE_TEXT,
1617
PMX_BONE_PARENT_BONE_INDEX,//亲骨索引
17-
PMX_BONE_PARENT_BONE_LINK,//亲骨
18+
PMX_BONE_PARENT_BONE_NAME,//亲骨名称
1819

1920
PMX_BONE_FLAG_GRP,//骨骼特征组
2021
PMX_BONE_ROTATABLE,//启用旋转

res/description/TMMDBone.res

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,29 @@ CONTAINER TMMDBone {
55
GROUP PMX_BONE_INFO_GRP {
66
DEFAULT 1;
77

8-
STATICTEXT PMX_BONE_INDEX {
9-
ANIM OFF;
8+
GROUP {
9+
DEFAULT 1;
10+
COLUMNS 2;
11+
12+
STATICTEXT PMX_BONE_INDEX_TEXT {
13+
}
14+
15+
STATICTEXT PMX_BONE_INDEX {
16+
}
17+
}
18+
19+
GROUP {
20+
DEFAULT 1;
21+
COLUMNS 3;
22+
23+
STATICTEXT PMX_BONE_PARENT_BONE_TEXT {
24+
}
25+
26+
STATICTEXT PMX_BONE_PARENT_BONE_INDEX {
27+
}
28+
29+
STATICTEXT PMX_BONE_PARENT_BONE_NAME {
30+
}
1031
}
1132

1233
STRING PMX_BONE_NAME_LOCAL {
@@ -32,20 +53,6 @@ CONTAINER TMMDBone {
3253
ANIM OFF;
3354
}
3455

35-
GROUP PMX_BONE_PARENT_BONE_GRP {
36-
DEFAULT 1;
37-
COLUMNS 2;
38-
39-
LONG PMX_BONE_PARENT_BONE_INDEX {
40-
MIN -1;
41-
ANIM OFF;
42-
}
43-
44-
LINK PMX_BONE_PARENT_BONE_LINK {
45-
ANIM OFF;
46-
}
47-
}
48-
4956
GROUP PMX_BONE_FLAG_GRP {
5057
DEFAULT 1;
5158
COLUMNS 5;

res/strings_en-US/c4d_strings.str

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ STRINGTABLE
4343

4444
IDS_VMD_TOOL_TITLE "MMD Tool";
4545
IDS_VMD_CAM_TOOL_TITLE "Camera";
46-
IDS_VMD_CAM_IMPORT_TITLE "Camera Import";
46+
IDS_VMD_CAM_IMPORT_TITLE "Camera Import(VMD)";
4747
IDS_VMD_CAM_IMPORT_SIZE "Size";
4848
IDS_VMD_CAM_IMPORT_OFFSET "Offset";
4949
IDS_VMD_CAM_IMPORT_BUTTON "Import";
5050

51-
IDS_VMD_CAM_EXPORT_TITLE "Camera Export";
51+
IDS_VMD_CAM_EXPORT_TITLE "Camera Export(VMD)";
5252
IDS_VMD_CAM_EXPORT_SIZE "Size";
5353
IDS_VMD_CAM_EXPORT_OFFSET "Offset";
5454
IDS_VMD_CAM_EXPORT_USE_BAKE "Export after baking";
@@ -67,7 +67,7 @@ STRINGTABLE
6767
IDS_VMD_CAM_CONVER_BUTTON "Conversion";
6868

6969
IDS_VMD_MOT_TOOL_TITLE "Motion";
70-
IDS_VMD_MOT_IMPORT_TITLE "Motion Import";
70+
IDS_VMD_MOT_IMPORT_TITLE "Motion Import(VMD)";
7171
IDS_VMD_MOT_IMPORT_SIZE "Size";
7272
IDS_VMD_MOT_IMPORT_OFFSET "Offset";
7373
IDS_VMD_MOT_IMPORT_MOTION "Import motion";
@@ -77,7 +77,7 @@ STRINGTABLE
7777
IDS_VMD_MOT_IMPORT_DETAIL "Detail report";
7878
IDS_VMD_MOT_IMPORT_BUTTON "Import";
7979

80-
IDS_VMD_MOT_EXPORT_TITLE "Motion Export";
80+
IDS_VMD_MOT_EXPORT_TITLE "Motion Export(VMD)";
8181
IDS_VMD_MOT_EXPORT_SIZE "Size";
8282
IDS_VMD_MOT_EXPORT_OFFSET "Offset";
8383
IDS_VMD_MOT_EXPORT_ROTATION_TWEEN "Use rotation curve";
@@ -90,8 +90,11 @@ STRINGTABLE
9090
IDS_VMD_MOT_EXPORT_USE_BAKE "Export after baking";
9191
IDS_VMD_MOT_EXPORT_BUTTON "Export";
9292

93+
IDS_VPD_POSE_IMPORT_TITLE "Pose Import(VPD)";
94+
IDS_VPD_POSE_IMPORT_BUTTON "Import";
95+
9396
IDS_PMX_MOD_TOOL_TITLE "Model";
94-
IDS_PMX_MOD_IMPORT_TITLE "Model Import";
97+
IDS_PMX_MOD_IMPORT_TITLE "Model Import(PMX)";
9598
IDS_PMX_MOD_IMPORT_SIZE "Size";
9699
IDS_PMX_MOD_IMPORT_SETTINGS "Import settings";
97100
IDS_PMX_MOD_IMPORT_POLYGON "Polygon";

res/strings_en-US/description/OMMDJoint.str

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ STRINGTABLE OMMDJoint
1111
JOINT_LINK_RIGID_GRP "Joint link rigid body";
1212
JOINT_LINK_RIGID_A_INDEX "Rigid body A";
1313
JOINT_LINK_RIGID_B_INDEX "Rigid body B";
14+
JOINT_LINK_RIGID_SET_NAME_BUTTON "Set joint name by link rigid body";
1415

1516
JOINT_ATTITUDE_GRP "Position/Rotation";
1617
JOINT_ATTITUDE_POSITION "Position";

res/strings_en-US/description/OMMDRigid.str

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,5 @@ STRINGTABLE OMMDRigid
7676
RIGID_GROUP_13 "14";
7777
RIGID_GROUP_14 "15";
7878
RIGID_GROUP_15 "16";
79+
RIGID_BONE_NONE "-";
7980
}

res/strings_en-US/description/TMMDBone.str

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,18 @@ STRINGTABLE TMMDBone
22
{
33
TMMDBone "MMD Bone Tag";
44
PMX_BONE_INFO_GRP "MMD Bone info";
5-
PMX_BONE_INDEX " Bone index";
5+
PMX_BONE_INDEX_TEXT " Bone index ";
6+
PMX_BONE_INDEX "";
67
PMX_BONE_NAME_LOCAL "Bone local name";
78
PMX_BONE_NAME_UNIVERSAL "Bone universal name";
89
PMX_BONE_NAME_IS "Bone display name";
910
PMX_BONE_NAME_IS_LOCAL "Bone local name";
1011
PMX_BONE_NAME_IS_UNIVERSAL "Bone universal name";
1112
PMX_BONE_POSITION "Position";
1213

13-
PMX_BONE_PARENT_BONE_GRP "Parent bone";
14-
PMX_BONE_PARENT_BONE_INDEX "Parent bone Index";
15-
PMX_BONE_PARENT_BONE_LINK "";
14+
PMX_BONE_PARENT_BONE_TEXT " Parent bone Index";
15+
PMX_BONE_PARENT_BONE_INDEX "";
16+
PMX_BONE_PARENT_BONE_NAME "";
1617

1718
PMX_BONE_FLAG_GRP "Bone features";
1819
PMX_BONE_ROTATABLE "Is rotatable";

res/strings_zh-CN/c4d_strings.str

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ STRINGTABLE {
3434
IDS_MES_DELETE_CAM_ALL_CURVE "\u662f\u5426\u786e\u5b9a\u8981\u5220\u9664\u9009\u4e2d\u6444\u50cf\u673a\u7684\u6240\u6709\u5173\u952e\u5e27\uff1f";
3535
IDS_VMD_TOOL_TITLE "MMD Tool";
3636
IDS_VMD_CAM_TOOL_TITLE "\u6444\u50cf\u673a";
37-
IDS_VMD_CAM_IMPORT_TITLE "\u5bfc\u5165\u6444\u50cf\u673a";
37+
IDS_VMD_CAM_IMPORT_TITLE "\u5bfc\u5165\u6444\u50cf\u673a(VMD)";
3838
IDS_VMD_CAM_IMPORT_SIZE "\u5927\u5c0f\u7f29\u653e";
3939
IDS_VMD_CAM_IMPORT_OFFSET "\u8d77\u59cb\u504f\u79fb";
4040
IDS_VMD_CAM_IMPORT_BUTTON "\u5bfc\u5165";
41-
IDS_VMD_CAM_EXPORT_TITLE "\u5bfc\u51fa\u6444\u50cf\u673a";
41+
IDS_VMD_CAM_EXPORT_TITLE "\u5bfc\u51fa\u6444\u50cf\u673a(VMD)";
4242
IDS_VMD_CAM_EXPORT_SIZE "\u5927\u5c0f\u7f29\u653e";
4343
IDS_VMD_CAM_EXPORT_OFFSET "\u8d77\u59cb\u504f\u79fb";
4444
IDS_VMD_CAM_EXPORT_USE_BAKE "\u70d8\u7119\u540e\u5bfc\u51fa";
@@ -55,7 +55,7 @@ STRINGTABLE {
5555
IDS_VMD_CAM_CONVER_ROTATION_TWEEN_Z "X";
5656
IDS_VMD_CAM_CONVER_BUTTON "\u8f6c\u6362";
5757
IDS_VMD_MOT_TOOL_TITLE "\u52a8\u4f5c";
58-
IDS_VMD_MOT_IMPORT_TITLE "\u5bfc\u5165\u52a8\u4f5c";
58+
IDS_VMD_MOT_IMPORT_TITLE "\u5bfc\u5165\u52a8\u4f5c(VMD)";
5959
IDS_VMD_MOT_IMPORT_SIZE "\u5927\u5c0f\u7f29\u653e";
6060
IDS_VMD_MOT_IMPORT_OFFSET "\u8d77\u59cb\u504f\u79fb";
6161
IDS_VMD_MOT_IMPORT_MOTION "\u5bfc\u5165\u9aa8\u9abc\u52a8\u4f5c";
@@ -64,7 +64,7 @@ STRINGTABLE {
6464
IDS_VMD_MOT_IMPORT_DELETE_PREVIOUS_ANIMATION "\u5220\u9664\u5148\u524d\u52a8\u753b";
6565
IDS_VMD_MOT_IMPORT_DETAIL "\u8be6\u7ec6\u62a5\u544a";
6666
IDS_VMD_MOT_IMPORT_BUTTON "\u5bfc\u5165";
67-
IDS_VMD_MOT_EXPORT_TITLE "\u5bfc\u51fa\u52a8\u4f5c";
67+
IDS_VMD_MOT_EXPORT_TITLE "\u5bfc\u51fa\u52a8\u4f5c(VMD)";
6868
IDS_VMD_MOT_EXPORT_SIZE "\u5927\u5c0f\u7f29\u653e";
6969
IDS_VMD_MOT_EXPORT_OFFSET "\u8d77\u59cb\u504f\u79fb";
7070
IDS_VMD_MOT_EXPORT_ROTATION_TWEEN "\u4f7f\u7528\u65cb\u8f6c\u66f2\u7ebf";
@@ -76,8 +76,10 @@ STRINGTABLE {
7676
IDS_VMD_MOT_EXPORT_MODEL_INFO "\u5bfc\u51fa\u6a21\u578b\u4fe1\u606f";
7777
IDS_VMD_MOT_EXPORT_USE_BAKE "\u70d8\u7119\u540e\u5bfc\u51fa";
7878
IDS_VMD_MOT_EXPORT_BUTTON "\u5bfc\u51fa";
79+
IDS_VPD_POSE_IMPORT_TITLE "\u5bfc\u5165\u59ff\u52bf(VPD)";
80+
IDS_VPD_POSE_IMPORT_BUTTON "\u5bfc\u5165";
7981
IDS_PMX_MOD_TOOL_TITLE "\u6a21\u578b";
80-
IDS_PMX_MOD_IMPORT_TITLE "\u5bfc\u5165\u6a21\u578b";
82+
IDS_PMX_MOD_IMPORT_TITLE "\u5bfc\u5165\u6a21\u578b(PMX)";
8183
IDS_PMX_MOD_IMPORT_SIZE "\u5927\u5c0f";
8284
IDS_PMX_MOD_IMPORT_SETTINGS "\u5bfc\u5165\u8bbe\u7f6e";
8385
IDS_PMX_MOD_IMPORT_POLYGON "\u591a\u8fb9\u5f62";

res/strings_zh-CN/description/OMMDJoint.str

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ STRINGTABLE OMMDJoint
1111
JOINT_LINK_RIGID_GRP "Joint\u5173\u8054\u521a\u4f53";
1212
JOINT_LINK_RIGID_A_INDEX "\u521a\u4f53A";
1313
JOINT_LINK_RIGID_B_INDEX "\u521a\u4f53B";
14+
JOINT_LINK_RIGID_SET_NAME_BUTTON "\u901a\u8fc7\u521a\u4f53\u540d\u79f0\u8bbe\u7f6ejoint\u540d\u79f0";
1415

1516
JOINT_ATTITUDE_GRP "\u4f4d\u7f6e/\u65cb\u8f6c";
1617
JOINT_ATTITUDE_POSITION "\u4f4d\u7f6e";

res/strings_zh-CN/description/OMMDRigid.str

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,5 @@ STRINGTABLE OMMDRigid
7676
RIGID_GROUP_13 "14";
7777
RIGID_GROUP_14 "15";
7878
RIGID_GROUP_15 "16";
79+
RIGID_BONE_NONE "-";
7980
}

res/strings_zh-CN/description/TMMDBone.str

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,18 @@ STRINGTABLE TMMDBone
22
{
33
TMMDBone "MMD \u9aa8\u9abc\u6807\u7b7e";
44
PMX_BONE_INFO_GRP "MMD \u9aa8\u9abc\u4fe1\u606f";
5-
PMX_BONE_INDEX " \u9aa8\u9abc\u7d22\u5f15";
5+
PMX_BONE_INDEX_TEXT " \u9aa8\u9abc\u7d22\u5f15 ";
6+
PMX_BONE_INDEX "";
67
PMX_BONE_NAME_LOCAL "\u9aa8\u9abc\u672c\u5730\u540d\u79f0(\u548c)";
78
PMX_BONE_NAME_UNIVERSAL "\u9aa8\u9abc\u901a\u7528\u540d\u79f0(\u82f1)";
89
PMX_BONE_NAME_IS "\u9aa8\u9abc\u663e\u793a\u540d\u79f0";
910
PMX_BONE_NAME_IS_LOCAL "\u9aa8\u9abc\u672c\u5730\u540d\u79f0(\u548c)";
1011
PMX_BONE_NAME_IS_UNIVERSAL "\u9aa8\u9abc\u901a\u7528\u540d\u79f0(\u82f1)";
1112
PMX_BONE_POSITION "\u4f4d\u7f6e";
1213

13-
PMX_BONE_PARENT_BONE_GRP "\u4eb2\u9aa8\u9abc";
14-
PMX_BONE_PARENT_BONE_INDEX "\u4eb2\u9aa8\u9abc\u7d22\u5f15";
15-
PMX_BONE_PARENT_BONE_LINK "";
14+
PMX_BONE_PARENT_BONE_TEXT " \u4eb2\u9aa8\u9abc\u7d22\u5f15";
15+
PMX_BONE_PARENT_BONE_INDEX "";
16+
PMX_BONE_PARENT_BONE_NAME "";
1617

1718
PMX_BONE_FLAG_GRP "\u9aa8\u9abc\u7279\u6027";
1819
PMX_BONE_ROTATABLE "\u53ef\u65cb\u8f6c";

source/BulletTest.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -191,19 +191,14 @@ namespace mmd
191191

192192
BaseObject* kinematicObject = nullptr;
193193
bool overrideNode = true;
194-
BaseLink* bonelink = bc->GetBaseLink(RIGID_RELATED_BONE_LINK);
195194
BaseObject* node = nullptr;
196-
if (bonelink != nullptr)
197-
{
198-
node = static_cast<BaseObject*>(bonelink->GetLink(pmxRigidBody->Get()->GetDocument()));
199-
}
200195
if (node != nullptr)
201196
{
202197
m_offsetMat = ~MatToGLMat(node->GetMl()) * rbMat;
203198
kinematicObject = node;
204199
}
205200
else {
206-
kinematicObject = pmxRigidBody->RigidRoot;
201+
kinematicObject = pmxRigidBody->GetRootObject();
207202
m_offsetMat = ~MatToGLMat(kinematicObject->GetMl()) * rbMat;
208203
overrideNode = false;
209204
}

0 commit comments

Comments
 (0)