pyjallib 0.1.6__py3-none-any.whl → 0.1.7__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.
pyjallib/__init__.py CHANGED
@@ -6,7 +6,7 @@ pyjallib Package
6
6
  Python library for game character development pipeline.
7
7
  """
8
8
 
9
- __version__ = '0.1.6'
9
+ __version__ = '0.1.7'
10
10
 
11
11
  # reload_modules 함수를 패키지 레벨에서 사용 가능하게 함
12
12
  from .namePart import NamePart, NamePartType
@@ -120,3 +120,50 @@ class AutoClavicle:
120
120
  ikGoal.parent = autoClavicleRotHelper
121
121
 
122
122
  return autoClavicleBones
123
+
124
+ def get_bones(self, inClavicle, inUpperArm):
125
+ """
126
+ 자동 쇄골 뼈를 가져옵니다.
127
+
128
+ Args:
129
+ inClavicle: 쇄골 뼈 객체
130
+ inUpperArm: 상완 뼈 객체
131
+
132
+ Returns:
133
+ 자동 쇄골 뼈대 배열
134
+ """
135
+ clavicleChildren = [item for item in self.bone.get_every_children(inClavicle) if rt.classOf(item) == rt.BoneGeometry]
136
+ upperArmChildren = [item for item in self.bone.get_every_children(inUpperArm) if rt.classOf(item) == rt.BoneGeometry]
137
+ returnVal = []
138
+ for item in clavicleChildren:
139
+ if item not in returnVal:
140
+ returnVal.append(item)
141
+ for item in upperArmChildren:
142
+ if item not in returnVal:
143
+ returnVal.append(item)
144
+
145
+ return returnVal
146
+
147
+ def get_helpers(self, inClavicle, inUpperArm):
148
+ """
149
+ 자동 쇄골 헬퍼를 가져옵니다.
150
+
151
+ Args:
152
+ inClavicle: 쇄골 뼈 객체
153
+ inUpperArm: 상완 뼈 객체
154
+
155
+ Returns:
156
+ 자동 쇄골 헬퍼 배열
157
+ """
158
+ clavicleChildren = [item for item in self.bone.get_every_children(inClavicle) if rt.classOf(item) == rt.Point]
159
+ upperArmChildren = [item for item in self.bone.get_every_children(inUpperArm) if rt.classOf(item) == rt.Point]
160
+ returnVal = []
161
+ for item in clavicleChildren:
162
+ if item not in returnVal:
163
+ returnVal.append(item)
164
+ for item in upperArmChildren:
165
+ if item not in returnVal:
166
+ returnVal.append(item)
167
+
168
+ return returnVal
169
+
pyjallib/max/header.py CHANGED
@@ -68,6 +68,8 @@ class Header:
68
68
  self.twistBone = TwistBone(nameService=self.name, animService=self.anim, constService=self.constraint, bipService=self.bip, boneService=self.bone)
69
69
  self.groinBone = GroinBone(nameService=self.name, animService=self.anim, helperService=self.helper, constService=self.constraint, bipService=self.bip, boneService=self.bone, twistBoneService=self.twistBone)
70
70
  self.autoClavicle = AutoClavicle(nameService=self.name, animService=self.anim, helperService=self.helper, boneService=self.bone, constraintService=self.constraint, bipService=self.bip)
71
+
72
+ self.tools = []
71
73
 
72
74
  # 모듈 레벨에서 전역 인스턴스 생성
73
75
  jal = Header.get_instance()
pyjallib/max/name.py CHANGED
@@ -6,6 +6,8 @@
6
6
  3ds Max에 특화된 네이밍 기능 (pymxs 의존)
7
7
  """
8
8
 
9
+ import os
10
+
9
11
  from pymxs import runtime as rt
10
12
  from pyjallib.naming import Naming
11
13
  from pyjallib.namePart import NamePart, NamePartType
@@ -35,35 +37,9 @@ class Name(Naming):
35
37
  # 사용자가 지정한 설정 파일 사용
36
38
  self.load_from_config_file(configPath=configPath)
37
39
  else:
38
- # 설정 파일이 없는 경우, 기본 설정값으로 초기화
39
- # Base 부분 (PREFIX 타입)
40
- basePart = NamePart("Base", NamePartType.PREFIX,
41
- ["b", "Bip001"],
42
- ["SkinBone", "Biped"])
43
- # Type 부분 (PREFIX 타입)
44
- typePart = NamePart("Type", NamePartType.PREFIX,
45
- ["P", "Dum", "Exp", "IK", "T"],
46
- ["Parent", "Dummy", "ExposeTM", "IK", "Target"])
47
- # Side 부분 (PREFIX 타입)
48
- sidePart = NamePart("Side", NamePartType.PREFIX,
49
- ["L", "R"],
50
- ["Left", "Right"],
51
- True)
52
- # FrontBack 부분 (PREFIX 타입)
53
- frontBackPart = NamePart("FrontBack", NamePartType.PREFIX,
54
- ["F", "B"],
55
- ["Front", "Back"],
56
- True)
57
- # RealName 부분 (REALNAME 타입)
58
- realNamePart = NamePart("RealName", NamePartType.REALNAME, [], [])
59
- # Index 부분 (INDEX 타입)
60
- indexPart = NamePart("Index", NamePartType.INDEX, [], [])
61
- # Nub 부분 (SUFFIX 타입)
62
- nubPart = NamePart("Nub", NamePartType.SUFFIX,
63
- ["Nub"],
64
- ["Nub"])
65
- # 기본 순서대로 설정
66
- self._nameParts = [basePart, typePart, sidePart, frontBackPart, realNamePart, indexPart, nubPart]
40
+ configDir = os.path.join(os.path.dirname(__file__), "ConfigFiles")
41
+ nameConfigDir = os.path.join(configDir, "3DSMaxNamingConfig.json")
42
+ self.load_from_config_file(configPath=nameConfigDir)
67
43
 
68
44
  # NamePart 직접 액세스 메소드들
69
45
  # get_<NamePart 이름>_values 메소드들
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyjallib
3
- Version: 0.1.6
3
+ Version: 0.1.7
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
@@ -1,4 +1,4 @@
1
- pyjallib/__init__.py,sha256=Vn47aG6w0P4VzzOm7lnSp7G38YVsI40nTwg5CClgdR4,460
1
+ pyjallib/__init__.py,sha256=oge4u43U_QPahJRRELfxEB4IBv65u5RaYkOpqgzvzdE,460
2
2
  pyjallib/namePart.py,sha256=D1hnFNnZbrNicAiW2ZUaIT0LU5pro3uFYrFYOEjt7_Y,24001
3
3
  pyjallib/nameToPath.py,sha256=61EWrc0Wc1K1Qsc4G6jewIccI0IHbiZWroRcU_lX1Wc,4664
4
4
  pyjallib/naming.py,sha256=jJ6w0n_nnUE2uZy_I4KFsMx95Ij3_KvSjhVvQQplxpw,36621
@@ -10,17 +10,17 @@ pyjallib/ConfigFiles/namingConfig.json,sha256=Ov4bbVJb6qodPaooU63e11YUMGXXPWFAA4
10
10
  pyjallib/max/__init__.py,sha256=JofFmmSDMs8hWSAnS3yKw9y_o0IniQiKfzLtVUI9v8w,888
11
11
  pyjallib/max/align.py,sha256=HKjCViQCuicGmtvHB6xxVv4BEGEBGtV2gO3NvR_6R2A,5183
12
12
  pyjallib/max/anim.py,sha256=-shQeE0WeAeCefc8FoI63dNDLHhz0uzOJ4shp5AL_Cs,25135
13
- pyjallib/max/autoClavicle.py,sha256=rJtXVcTEksstaXF4s1i-0FwhVkPWJFRxlVq8Gyw45Rg,5792
13
+ pyjallib/max/autoClavicle.py,sha256=FQGFkucRu670TpkEUs8lQRJyNUykvtxF9rZiPjHoH3s,7517
14
14
  pyjallib/max/bip.py,sha256=m6eA-rg-MghYSxbzj-YXa0KJFPm1wiOsOqyJu76_hlY,16967
15
15
  pyjallib/max/bone.py,sha256=GYs3Uohc0AMkLWZAqZTc1DET-WDgZlvlkhSUaBeszvk,33161
16
16
  pyjallib/max/constraint.py,sha256=WXB6fJ0er4EIZBZ7voQK_bFeqtgjopCKCpwiBn3QyiI,40055
17
17
  pyjallib/max/groinBone.py,sha256=rEZQ7tAXgcZ3NedFacIyvfG07nI8rgF_pVufy-hnKuo,3830
18
- pyjallib/max/header.py,sha256=06rzzaOGDtxQGD4SwAFX8nlxNn8lP_gQ_qY0FGZYBFk,2736
18
+ pyjallib/max/header.py,sha256=OLiIuZMJ_KlE1EJ0SHXyRjZMWL1e-jt7crNXYbe7cE8,2771
19
19
  pyjallib/max/helper.py,sha256=s_rEhY1wNUrwyEN6osuUuOsnqFAQo8_X0Dcf3R89NY0,18526
20
20
  pyjallib/max/layer.py,sha256=e9Mn8h7xf0oBYST3QIpyBpLMl8qpWTExO9Y6yH6rKc0,8795
21
21
  pyjallib/max/link.py,sha256=J3z9nkP8ZxAh9yYhR16tjQFCJTCYZMSB0MGbSHfA7uI,2592
22
22
  pyjallib/max/mirror.py,sha256=j8LnsXowyTINzvtWsvCNaDsQ6v7u2RjlY50R8v5JCuc,14517
23
- pyjallib/max/name.py,sha256=z_fclfutesFxhk2hVliqZGnRQauKcB8LJpRbKQ5cYAc,16703
23
+ pyjallib/max/name.py,sha256=DcJt2td-N7vfUGyWazdGTD4-0JW-noa7z5nwc6SHm6I,15337
24
24
  pyjallib/max/select.py,sha256=HMJD2WNX3zVBEeYrj0UX2YXM3fHNItfw6UtQSItNsoU,9487
25
25
  pyjallib/max/skin.py,sha256=5mBzG2wSUxoGlkFeb9Ys8uUxOwuZRGeqUMTI9LiWWZU,41937
26
26
  pyjallib/max/twistBone.py,sha256=0Z-Z-OiTPM0fXAnzgol0tiY7Kms6-qrEuVCHsCVVbUc,20338
@@ -31,6 +31,6 @@ pyjallib/max/macro/jal_macro_constraint.py,sha256=0gpfan7hXES9jhnpZVlxWtCbqUCyGx
31
31
  pyjallib/max/macro/jal_macro_helper.py,sha256=ODwAl4C6WK2UE45dqpfw90TgN5vDjLJvODvYeO8tj4o,12906
32
32
  pyjallib/max/macro/jal_macro_link.py,sha256=xkgcCX0fJw4vLfMYybtfUklT3dgcO0tHfpt2X9BfWLw,1193
33
33
  pyjallib/max/macro/jal_macro_select.py,sha256=-r24l84XmDEM4W6H0r1jOBErp3q0UxNrr0m9oAHSgkE,2289
34
- pyjallib-0.1.6.dist-info/METADATA,sha256=CcIpikrV2_YUnr8eiNH2Aggz2DKCsqWx_d81e5N9ORM,869
35
- pyjallib-0.1.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
36
- pyjallib-0.1.6.dist-info/RECORD,,
34
+ pyjallib-0.1.7.dist-info/METADATA,sha256=fJnyAXI4ow6VcSaZM2KMjD-q2unSbDNeSkSgRM_AhcI,869
35
+ pyjallib-0.1.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
36
+ pyjallib-0.1.7.dist-info/RECORD,,