pyjallib 0.1.6__tar.gz → 0.1.7__tar.gz

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.
Files changed (53) hide show
  1. {pyjallib-0.1.6 → pyjallib-0.1.7}/PKG-INFO +1 -1
  2. {pyjallib-0.1.6 → pyjallib-0.1.7}/pyproject.toml +1 -1
  3. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/__init__.py +1 -1
  4. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/autoClavicle.py +47 -0
  5. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/header.py +2 -0
  6. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/name.py +5 -29
  7. {pyjallib-0.1.6 → pyjallib-0.1.7}/.gitignore +0 -0
  8. {pyjallib-0.1.6 → pyjallib-0.1.7}/.python-version +0 -0
  9. {pyjallib-0.1.6 → pyjallib-0.1.7}/README.md +0 -0
  10. {pyjallib-0.1.6 → pyjallib-0.1.7}/docs/.nojekyll +0 -0
  11. {pyjallib-0.1.6 → pyjallib-0.1.7}/docs/index.html +0 -0
  12. {pyjallib-0.1.6 → pyjallib-0.1.7}/docs/max.html +0 -0
  13. {pyjallib-0.1.6 → pyjallib-0.1.7}/docs/namePart.html +0 -0
  14. {pyjallib-0.1.6 → pyjallib-0.1.7}/docs/nameToPath.html +0 -0
  15. {pyjallib-0.1.6 → pyjallib-0.1.7}/docs/naming.html +0 -0
  16. {pyjallib-0.1.6 → pyjallib-0.1.7}/docs/namingConfig.html +0 -0
  17. {pyjallib-0.1.6 → pyjallib-0.1.7}/docs/perforce.html +0 -0
  18. {pyjallib-0.1.6 → pyjallib-0.1.7}/docs/pymxs.html +0 -0
  19. {pyjallib-0.1.6 → pyjallib-0.1.7}/docs/reloadModules.html +0 -0
  20. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/ConfigFiles/namingConfig.json +0 -0
  21. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/ConfigFiles/3DSMaxNamingConfig.json +0 -0
  22. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/__init__.py +0 -0
  23. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/align.py +0 -0
  24. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/anim.py +0 -0
  25. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/bip.py +0 -0
  26. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/bone.py +0 -0
  27. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/constraint.py +0 -0
  28. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/groinBone.py +0 -0
  29. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/helper.py +0 -0
  30. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/layer.py +0 -0
  31. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/link.py +0 -0
  32. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/macro/jal_macro_align.py +0 -0
  33. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/macro/jal_macro_bone.py +0 -0
  34. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/macro/jal_macro_constraint.py +0 -0
  35. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/macro/jal_macro_helper.py +0 -0
  36. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/macro/jal_macro_link.py +0 -0
  37. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/macro/jal_macro_select.py +0 -0
  38. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/mirror.py +0 -0
  39. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/select.py +0 -0
  40. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/skin.py +0 -0
  41. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/max/twistBone.py +0 -0
  42. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/namePart.py +0 -0
  43. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/nameToPath.py +0 -0
  44. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/naming.py +0 -0
  45. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/namingConfig.py +0 -0
  46. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/perforce.py +0 -0
  47. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/py.typed +0 -0
  48. {pyjallib-0.1.6 → pyjallib-0.1.7}/src/pyjallib/reloadModules.py +0 -0
  49. {pyjallib-0.1.6 → pyjallib-0.1.7}/tests/autoclavicle.ms +0 -0
  50. {pyjallib-0.1.6 → pyjallib-0.1.7}/tests/autoclavicleTest.py +0 -0
  51. {pyjallib-0.1.6 → pyjallib-0.1.7}/tests/globalVarTest.py +0 -0
  52. {pyjallib-0.1.6 → pyjallib-0.1.7}/tests/moduleImportTest.py +0 -0
  53. {pyjallib-0.1.6 → pyjallib-0.1.7}/uv.lock +0 -0
@@ -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,6 +1,6 @@
1
1
  [project]
2
2
  name = "pyjallib"
3
- version = "0.1.6"
3
+ version = "0.1.7"
4
4
  description = "A utility library for 3D game character development pipelines."
5
5
  readme = "README.md"
6
6
  authors = [
@@ -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
+
@@ -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()
@@ -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 메소드들
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes