pyjallib 0.1.8__py3-none-any.whl → 0.1.10__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyjallib
3
- Version: 0.1.8
3
+ Version: 0.1.10
4
4
  Summary: A utility library for 3D game character development pipelines.
5
5
  Author-email: Dongseok Kim <jalnagakds@gmail.com>
6
6
  Requires-Python: >=3.10
@@ -0,0 +1,46 @@
1
+ pyjallib/__init__.py,sha256=pix9ja-vl7MYU3dJ4pgQicVCVwd1SyiQxD-BgWPILY8,461
2
+ pyjallib/namePart.py,sha256=lKIiOVkWrtAW-D3nuv--vHmdAnlQeVPaXLYUDhcr8QU,24177
3
+ pyjallib/nameToPath.py,sha256=aBeezepLYdpv3VYxnQ2c4ZWzz2WjticXjkdbAIlVa1k,4676
4
+ pyjallib/naming.py,sha256=gJcD4wLAySFExlLiVQzF-amCbFbUnOwmxoio8Eyfrbw,36756
5
+ pyjallib/namingConfig.py,sha256=3w8Xjs_HR3R0K25eySivJn58N9MZwfpk80ySZYVI7Qw,34005
6
+ pyjallib/perforce.py,sha256=K_FAeDvecdaMT4INUcDluSB6k2NQ8R1NaddTzqLu-q0,24211
7
+ pyjallib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ pyjallib/reloadModules.py,sha256=RAEG3IxzJ0TlsjvnZwJt56JOkc2j8voqAnRbfQuZ44g,1151
9
+ pyjallib/ConfigFiles/namingConfig.json,sha256=Ov4bbVJb6qodPaooU63e11YUMGXXPWFAA4AQq1sLBYU,1486
10
+ pyjallib/max/__init__.py,sha256=Zh3ZZD1ELmS1zFALW47OYlgdhBdZ7b1C_bCrN7vTuIw,1403
11
+ pyjallib/max/align.py,sha256=HKjCViQCuicGmtvHB6xxVv4BEGEBGtV2gO3NvR_6R2A,5183
12
+ pyjallib/max/anim.py,sha256=QTpR8T047IMpV40wnMMNo080wY9rHMV9k7ISrh4P61I,26083
13
+ pyjallib/max/autoClavicle.py,sha256=9Y-ytNP5Wv40JX1Cvm_13oAhfyug_uCpafAdcX1U2bk,8178
14
+ pyjallib/max/autoClavicleChain.py,sha256=fjBpd4ads148bRBxkXfG5auC4x2Ec198yk-Wpv9V3Js,5098
15
+ pyjallib/max/bip.py,sha256=wT1Lg_j2BVoLtRqVN3Rhm5WHj-_OHK_3hcl8PYjy8RY,27117
16
+ pyjallib/max/bone.py,sha256=JgwnnWSbTa77ml4-CNtQkdROCgBUlNBkInD7g5WJgVI,48579
17
+ pyjallib/max/constraint.py,sha256=93g-X0aZHtZMKXVKr8xMjIhbKou61yc2b3ubQKJquBs,40589
18
+ pyjallib/max/groinBone.py,sha256=4MvLkXFfdMioyFr4jOMemR26IxNyHtEHOpYRvbsNx9k,7386
19
+ pyjallib/max/groinBoneChain.py,sha256=E75yHfvse3QJ-Yo__OUBox_dbv_j-bOSzxr_FwetDZA,5604
20
+ pyjallib/max/header.py,sha256=nuNCVfm5bfYMS0KxB8IRR67D30CXXHRUXHfFYkLG0jU,4120
21
+ pyjallib/max/helper.py,sha256=Na3jFRwLsjHh4rz0Tk_r_CwHQxOA6n8LhDRA9x5xcSk,18018
22
+ pyjallib/max/hip.py,sha256=7Mw2Fu_vgWkdm-5m8KoRXDOmphK8apiOiBQQQV1u2KU,11144
23
+ pyjallib/max/kneeBone.py,sha256=BPob7KL62_B0_ErHIGkVa-DkBMHau_-dhmBHSQgeWkY,22832
24
+ pyjallib/max/layer.py,sha256=e9Mn8h7xf0oBYST3QIpyBpLMl8qpWTExO9Y6yH6rKc0,8795
25
+ pyjallib/max/link.py,sha256=J3z9nkP8ZxAh9yYhR16tjQFCJTCYZMSB0MGbSHfA7uI,2592
26
+ pyjallib/max/mirror.py,sha256=TcbfZXSk-VJQstNqAmD6VGCqYBF9bMuJtFTg-6SiGdQ,14505
27
+ pyjallib/max/morph.py,sha256=I8HRYx4NznL6GZL4CbT9iTv05SeaBW_mJJ4PzMxCBkw,12664
28
+ pyjallib/max/name.py,sha256=DcJt2td-N7vfUGyWazdGTD4-0JW-noa7z5nwc6SHm6I,15337
29
+ pyjallib/max/select.py,sha256=HMJD2WNX3zVBEeYrj0UX2YXM3fHNItfw6UtQSItNsoU,9487
30
+ pyjallib/max/skin.py,sha256=5mBzG2wSUxoGlkFeb9Ys8uUxOwuZRGeqUMTI9LiWWZU,41937
31
+ pyjallib/max/twistBone.py,sha256=RnyqXVq4LQRqk-QxaB_gKBkJ9ih5A0c8yvbErpOFGeE,16275
32
+ pyjallib/max/twistBoneChain.py,sha256=A0F-43SbB-qdjo6U5TcenXapHcGIc4gxatxKiWnNv7M,5503
33
+ pyjallib/max/volumeBone.py,sha256=fCFJ8YTrjhLkZdpkEekT45VN17DtTJngzJT5uHYZVno,12336
34
+ pyjallib/max/volumeBoneChain.py,sha256=bS6OwPDSCk0Wrm0Hv9OZ9uGdygikMs98Z-S1koAGrKQ,13481
35
+ pyjallib/max/ConfigFiles/3DSMaxNamingConfig.json,sha256=PBUYawCELG0aLNRdTh6j-Yka4eNdmpF4P8iRyp0Ngpg,3717
36
+ pyjallib/max/ConfigFiles/Default_3DSMaxNamingConfig.json,sha256=PBUYawCELG0aLNRdTh6j-Yka4eNdmpF4P8iRyp0Ngpg,3717
37
+ pyjallib/max/macro/jal_macro_align.py,sha256=_Iqwskz0i4AVlP_AhDrqHwhLml6zoDWkVAxPF3AKqEQ,4286
38
+ pyjallib/max/macro/jal_macro_bone.py,sha256=I3MYM7fk-_LQonORRD0hJoip0TAk0suS-xDBamhySPQ,12422
39
+ pyjallib/max/macro/jal_macro_constraint.py,sha256=jJnNHCjsFJNYRqaBEPjzW-dnCDJT6JRZXH7dqBPkeiw,4160
40
+ pyjallib/max/macro/jal_macro_helper.py,sha256=hd8e5x56aq7Qt0g-hP5bY0p-njVy8ja77_qMPZyvDag,12906
41
+ pyjallib/max/macro/jal_macro_link.py,sha256=E8i3z2xsrQiGDEz4Qoxc75hkpalzS95mOMcIic0J-Fc,1193
42
+ pyjallib/max/macro/jal_macro_select.py,sha256=jeSFR_mqqudTTrZE1rU6qifJ4g441cYxXWcHPTWh1CU,2289
43
+ pyjallib/max/ui/Container.py,sha256=QSk3oCqhfiR4aglSSkherRGAyPFqMRUt83L-0ENBz-s,5571
44
+ pyjallib-0.1.10.dist-info/METADATA,sha256=WRIWnsOSWqSf4NdHVw8RkNAqb6uPE-N78eFUD67q8fQ,870
45
+ pyjallib-0.1.10.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
46
+ pyjallib-0.1.10.dist-info/RECORD,,
@@ -1,171 +0,0 @@
1
- #!/usr/bin/env python
2
- # -*- coding: utf-8 -*-
3
-
4
- """
5
- 관절 부피 유지 본(Volume preserve Bone) 모듈 - 3ds Max용 관절의 부피를 유지하기 위해 추가되는 중간본들을 위한 모듈
6
- """
7
-
8
- from pymxs import runtime as rt
9
-
10
- # Import necessary service classes for default initialization
11
- from .name import Name
12
- from .anim import Anim
13
- from .constraint import Constraint
14
- from .bone import Bone
15
- from .helper import Helper
16
-
17
- class VolumePreserveBone:
18
- """
19
- 관절 부피 유지 본(Volume preserve Bone) 클래스
20
- 3ds Max에서 관절의 부피를 유지하기 위해 추가되는 중간본들을 위한 클래스
21
- """
22
- def __init__(self, nameService=None, animService=None, constService=None, boneService=None, helperService=None):
23
- self.name = nameService if nameService else Name()
24
- self.anim = animService if animService else Anim()
25
- # Ensure dependent services use the potentially newly created instances
26
- self.const = constService if constService else Constraint(nameService=self.name)
27
- self.bone = boneService if boneService else Bone(nameService=self.name, animService=self.anim)
28
- self.helper = helperService if helperService else Helper(nameService=self.name)
29
-
30
- def create_rot_helpers(self, inObj, inRotScale=0.5):
31
- if rt.isValidNode(inObj) == False or rt.isValidNode(inObj.parent) == False:
32
- return False
33
-
34
- volName = self.name.get_RealName(inObj.name)
35
- volName = volName + "Vol"
36
-
37
- parentObj = inObj.parent
38
-
39
- rt.select(inObj)
40
- rotHelpers = self.helper.create_helper(make_two=True)
41
- rotHelpers[0].parent = inObj
42
- rotHelpers[1].parent = parentObj
43
-
44
- rotHelpers[0].name = self.name.replace_RealName(rotHelpers[0].name, volName)
45
- rotHelpers[1].name = self.name.replace_RealName(rotHelpers[1].name, volName + self.name.get_name_part_value_by_description("Type", "Target"))
46
-
47
- rotConst = self.const.assign_rot_const_multi(rotHelpers[0], [inObj, rotHelpers[1]])
48
- rotConst.setWeight(1, inRotScale * 100.0)
49
- rotConst.setWeight(2, (1.0 - inRotScale) * 100.0)
50
-
51
- return rotHelpers
52
-
53
- def create_init_bone(self, inObj, inVolumeSize, inRotHelpers, inRotAxis="Z", inTransAxis="PosY", inTransScale=1.0):
54
- if rt.isValidNode(inObj) == False or rt.isValidNode(inObj.parent) == False:
55
- return False
56
-
57
- returnVal = {
58
- "Bones": [],
59
- "Helpers": []
60
- }
61
-
62
- volName = self.name.get_RealName(inObj.name)
63
- volName = volName + "Vol"
64
-
65
- # ExposeTM을 사용하여 회전값을 가져오는 방법
66
- # rt.select(inObj)
67
- # expHelper = self.helper.create_exp_tm()[0]
68
- # expHelper.parent = parentObj
69
- # expHelper.exposeNode = rotHelpers[0]
70
- # expHelper.useParent = False
71
- # expHelper.localReferenceNode = rotHelpers[1]
72
- # expHelper.eulerXOrder = 5
73
- # expHelper.eulerYOrder = 5
74
- # expHelper.eulerZOrder = 5
75
-
76
- # expHelper.name = self.name.replace_RealName(expHelper.name, volName)
77
-
78
- boneGenHelperA = rt.point()
79
- boneGenHelperB = rt.point()
80
- boneGenHelperA.transform = inObj.transform
81
- boneGenHelperB.transform = inObj.transform
82
-
83
- if inTransAxis == "PosX":
84
- self.anim.move_local(boneGenHelperB, inVolumeSize, 0, 0)
85
- elif inTransAxis == "NegX":
86
- self.anim.move_local(boneGenHelperB, -inVolumeSize, 0, 0)
87
- elif inTransAxis == "PosY":
88
- self.anim.move_local(boneGenHelperB, 0, inVolumeSize, 0)
89
- elif inTransAxis == "NegY":
90
- self.anim.move_local(boneGenHelperB, 0, -inVolumeSize, 0)
91
- elif inTransAxis == "PosZ":
92
- self.anim.move_local(boneGenHelperB, 0, 0, inVolumeSize)
93
- elif inTransAxis == "NegZ":
94
- self.anim.move_local(boneGenHelperB, 0, 0, -inVolumeSize)
95
-
96
- row = ""
97
- sourceUpAxist = 0
98
- upAxis = 0
99
- if inRotAxis == "X":
100
- row = "row1"
101
- sourceUpAxist = 1
102
- upAxis = 1
103
- elif inRotAxis == "Y":
104
- row = "row3"
105
- sourceUpAxist = 2
106
- upAxis = 2
107
- elif inRotAxis == "Z":
108
- row = "row2"
109
- sourceUpAxist = 3
110
- upAxis = 3
111
-
112
- volumeBoneName = self.name.replace_RealName(self.name.get_string(inObj.name), volName + inRotAxis + inTransAxis)
113
-
114
- volumeBones = self.bone.create_simple_bone(inVolumeSize, volumeBoneName)
115
- volumeBones[0].transform = inObj.transform
116
- lookatConst = self.const.assign_lookat(volumeBones[0], boneGenHelperB)
117
- lookatConst.pickUpNode = inObj
118
- lookatConst.upnode_world = False
119
- lookatConst.StoUP_axis = sourceUpAxist
120
- lookatConst.upnode_axis = upAxis
121
- self.const.collapse(volumeBones[0])
122
-
123
- rt.delete(boneGenHelperA)
124
- rt.delete(boneGenHelperB)
125
-
126
- volumeBones[0].parent = inRotHelpers[0]
127
- rt.select(volumeBones[0])
128
- parentHelper = self.helper.create_parent_helper()[0]
129
-
130
- posConst = self.const.assign_pos_script_controller(volumeBones[0])
131
- # posConst.AddNode("rotExp", expHelper)
132
- posConst.AddNode("rotObj", inRotHelpers[0])
133
- posConst.AddNode("rotParent", inRotHelpers[1])
134
-
135
- posConstCode = f""
136
- posConstCode += f"local parentXAxis = (normalize rotParent.objectTransform.{row})\n"
137
- posConstCode += f"local rotObjXAxis = (normalize rotObj.objectTransform.{row})\n"
138
- posConstCode += f"local rotAmount = (1.0 - (dot parentXAxis rotObjXAxis))/2.0\n"
139
- posConstCode += f"local posX = rotAmount * {inVolumeSize*inTransScale}\n"
140
- posConstCode += f"[posX, 0.0, 0.0]\n"
141
-
142
- posConst.SetExpression(posConstCode)
143
-
144
- returnVal["Bones"] = volumeBones
145
- returnVal["Helpers"] = [parentHelper]
146
-
147
- return returnVal
148
-
149
- def create_bones(self,inObj, inVolumeSize, inRotAxises, inRotScale, inTransAxiese, inTransScales):
150
- if rt.isValidNode(inObj) == False or rt.isValidNode(inObj.parent) == False:
151
- return False
152
-
153
- if not len(inTransAxiese) == len(inTransScales) == len(inTransAxiese) == len(inRotAxises):
154
- return False
155
-
156
- rotHelpers = self.create_rot_helpers(inObj, inRotScale=inRotScale)
157
-
158
- returnVal = {
159
- "Bones": [],
160
- "Helpers": []
161
- }
162
-
163
- for i in range(len(inRotAxises)):
164
- genResult = self.create_init_bone(inObj, inVolumeSize, rotHelpers, inRotAxises[i], inTransAxiese[i], inTransScales[i])
165
- returnVal["Bones"].extend(genResult["Bones"])
166
- returnVal["Helpers"].extend(genResult["Helpers"])
167
-
168
- returnVal["Helpers"].insert(0, rotHelpers[0])
169
- returnVal["Helpers"].insert(1, rotHelpers[1])
170
-
171
- return returnVal
@@ -1,39 +0,0 @@
1
- pyjallib/__init__.py,sha256=FD41BluMZ_gDt-gXhEAzIwNyWn_tokcUoZMKTpn_fN8,460
2
- pyjallib/namePart.py,sha256=D1hnFNnZbrNicAiW2ZUaIT0LU5pro3uFYrFYOEjt7_Y,24001
3
- pyjallib/nameToPath.py,sha256=61EWrc0Wc1K1Qsc4G6jewIccI0IHbiZWroRcU_lX1Wc,4664
4
- pyjallib/naming.py,sha256=jJ6w0n_nnUE2uZy_I4KFsMx95Ij3_KvSjhVvQQplxpw,36621
5
- pyjallib/namingConfig.py,sha256=6Wyk3h1dFrzOslSoqjLftSUqt7U00tnR2WcgxYWVx5I,33969
6
- pyjallib/perforce.py,sha256=YnKAKlbBss4cl66R4nQbr-bsYjTneLzGYaZ187kOSpA,29872
7
- pyjallib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- pyjallib/reloadModules.py,sha256=RAEG3IxzJ0TlsjvnZwJt56JOkc2j8voqAnRbfQuZ44g,1151
9
- pyjallib/ConfigFiles/namingConfig.json,sha256=Ov4bbVJb6qodPaooU63e11YUMGXXPWFAA4AQq1sLBYU,1486
10
- pyjallib/max/__init__.py,sha256=1058Mvp_Ebf3DG_DVkAC4o_frQPq7F6-m-C-Ccme64k,1064
11
- pyjallib/max/align.py,sha256=HKjCViQCuicGmtvHB6xxVv4BEGEBGtV2gO3NvR_6R2A,5183
12
- pyjallib/max/anim.py,sha256=-shQeE0WeAeCefc8FoI63dNDLHhz0uzOJ4shp5AL_Cs,25135
13
- pyjallib/max/autoClavicle.py,sha256=FQGFkucRu670TpkEUs8lQRJyNUykvtxF9rZiPjHoH3s,7517
14
- pyjallib/max/bip.py,sha256=m6eA-rg-MghYSxbzj-YXa0KJFPm1wiOsOqyJu76_hlY,16967
15
- pyjallib/max/bone.py,sha256=GYs3Uohc0AMkLWZAqZTc1DET-WDgZlvlkhSUaBeszvk,33161
16
- pyjallib/max/constraint.py,sha256=gVdGezkRmzWRtUZeAdLnWfmvhgy8HAhD_dXmyI4xvUw,41282
17
- pyjallib/max/groinBone.py,sha256=rEZQ7tAXgcZ3NedFacIyvfG07nI8rgF_pVufy-hnKuo,3830
18
- pyjallib/max/header.py,sha256=s2no3jRenY4b-xjofKwV9TGbO9doE4KH8paeBQA7qko,3071
19
- pyjallib/max/helper.py,sha256=WPoxSoHAFXmAPx_CRJFWBNXn4S2k04UK-1J9x6nIv84,18674
20
- pyjallib/max/layer.py,sha256=e9Mn8h7xf0oBYST3QIpyBpLMl8qpWTExO9Y6yH6rKc0,8795
21
- pyjallib/max/link.py,sha256=J3z9nkP8ZxAh9yYhR16tjQFCJTCYZMSB0MGbSHfA7uI,2592
22
- pyjallib/max/mirror.py,sha256=j8LnsXowyTINzvtWsvCNaDsQ6v7u2RjlY50R8v5JCuc,14517
23
- pyjallib/max/morph.py,sha256=I8HRYx4NznL6GZL4CbT9iTv05SeaBW_mJJ4PzMxCBkw,12664
24
- pyjallib/max/name.py,sha256=DcJt2td-N7vfUGyWazdGTD4-0JW-noa7z5nwc6SHm6I,15337
25
- pyjallib/max/select.py,sha256=HMJD2WNX3zVBEeYrj0UX2YXM3fHNItfw6UtQSItNsoU,9487
26
- pyjallib/max/skin.py,sha256=5mBzG2wSUxoGlkFeb9Ys8uUxOwuZRGeqUMTI9LiWWZU,41937
27
- pyjallib/max/twistBone.py,sha256=0Z-Z-OiTPM0fXAnzgol0tiY7Kms6-qrEuVCHsCVVbUc,20338
28
- pyjallib/max/volumePreserveBone.py,sha256=mTtbAOKRjkbVO-PQQMt6FZzAawtUMbwGgj8XO1n9SV8,7193
29
- pyjallib/max/ConfigFiles/3DSMaxNamingConfig.json,sha256=PBUYawCELG0aLNRdTh6j-Yka4eNdmpF4P8iRyp0Ngpg,3717
30
- pyjallib/max/macro/jal_macro_align.py,sha256=t0gQjybkHYAvPtjT5uWjUQd1vsXIsxOkdYfhFWduxJU,4270
31
- pyjallib/max/macro/jal_macro_bone.py,sha256=QS492tskLrARGIFDmbKEwJw7122xJga0ZP5z8WVVRn8,12422
32
- pyjallib/max/macro/jal_macro_constraint.py,sha256=0gpfan7hXES9jhnpZVlxWtCbqUCyGxjtSmVMbp7nUh8,4160
33
- pyjallib/max/macro/jal_macro_helper.py,sha256=ODwAl4C6WK2UE45dqpfw90TgN5vDjLJvODvYeO8tj4o,12906
34
- pyjallib/max/macro/jal_macro_link.py,sha256=xkgcCX0fJw4vLfMYybtfUklT3dgcO0tHfpt2X9BfWLw,1193
35
- pyjallib/max/macro/jal_macro_select.py,sha256=-r24l84XmDEM4W6H0r1jOBErp3q0UxNrr0m9oAHSgkE,2289
36
- pyjallib/max/ui/Container.py,sha256=QSk3oCqhfiR4aglSSkherRGAyPFqMRUt83L-0ENBz-s,5571
37
- pyjallib-0.1.8.dist-info/METADATA,sha256=7dGxma4w0wrSzOlLcLnI1dN0ha3emWufRpVDWxkCaXY,869
38
- pyjallib-0.1.8.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
39
- pyjallib-0.1.8.dist-info/RECORD,,