pyjallib 0.1.0__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 (36) hide show
  1. pyjallib-0.1.0/PKG-INFO +28 -0
  2. pyjallib-0.1.0/README.md +20 -0
  3. pyjallib-0.1.0/pyproject.toml +14 -0
  4. pyjallib-0.1.0/setup.cfg +4 -0
  5. pyjallib-0.1.0/src/pyjallib/__init__.py +17 -0
  6. pyjallib-0.1.0/src/pyjallib/max/__init__.py +46 -0
  7. pyjallib-0.1.0/src/pyjallib/max/align.py +112 -0
  8. pyjallib-0.1.0/src/pyjallib/max/anim.py +594 -0
  9. pyjallib-0.1.0/src/pyjallib/max/bip.py +508 -0
  10. pyjallib-0.1.0/src/pyjallib/max/bone.py +910 -0
  11. pyjallib-0.1.0/src/pyjallib/max/constraint.py +973 -0
  12. pyjallib-0.1.0/src/pyjallib/max/header.py +57 -0
  13. pyjallib-0.1.0/src/pyjallib/max/helper.py +433 -0
  14. pyjallib-0.1.0/src/pyjallib/max/layer.py +262 -0
  15. pyjallib-0.1.0/src/pyjallib/max/link.py +78 -0
  16. pyjallib-0.1.0/src/pyjallib/max/macro/jal_macro_align.py +155 -0
  17. pyjallib-0.1.0/src/pyjallib/max/macro/jal_macro_bone.py +358 -0
  18. pyjallib-0.1.0/src/pyjallib/max/macro/jal_macro_constraint.py +140 -0
  19. pyjallib-0.1.0/src/pyjallib/max/macro/jal_macro_helper.py +321 -0
  20. pyjallib-0.1.0/src/pyjallib/max/macro/jal_macro_link.py +55 -0
  21. pyjallib-0.1.0/src/pyjallib/max/macro/jal_macro_select.py +91 -0
  22. pyjallib-0.1.0/src/pyjallib/max/mirror.py +388 -0
  23. pyjallib-0.1.0/src/pyjallib/max/name.py +521 -0
  24. pyjallib-0.1.0/src/pyjallib/max/select.py +278 -0
  25. pyjallib-0.1.0/src/pyjallib/max/skin.py +996 -0
  26. pyjallib-0.1.0/src/pyjallib/max/twistBone.py +418 -0
  27. pyjallib-0.1.0/src/pyjallib/namePart.py +633 -0
  28. pyjallib-0.1.0/src/pyjallib/nameToPath.py +113 -0
  29. pyjallib-0.1.0/src/pyjallib/naming.py +1066 -0
  30. pyjallib-0.1.0/src/pyjallib/namingConfig.py +844 -0
  31. pyjallib-0.1.0/src/pyjallib/perforce.py +735 -0
  32. pyjallib-0.1.0/src/pyjallib/reloadModules.py +33 -0
  33. pyjallib-0.1.0/src/pyjallib.egg-info/PKG-INFO +28 -0
  34. pyjallib-0.1.0/src/pyjallib.egg-info/SOURCES.txt +34 -0
  35. pyjallib-0.1.0/src/pyjallib.egg-info/dependency_links.txt +1 -0
  36. pyjallib-0.1.0/src/pyjallib.egg-info/top_level.txt +1 -0
@@ -0,0 +1,28 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyjallib
3
+ Version: 0.1.0
4
+ Summary: A utility library for 3D game character development pipelines.
5
+ Author-email: Dongseok Kim <jalnagakds@gmail.com>
6
+ Requires-Python: >=3.10
7
+ Description-Content-Type: text/markdown
8
+
9
+ # pyjallib
10
+
11
+ pyjallib Package is a Python library designed to streamline the game character development pipeline. It provides tools and utilities to assist game developers in creating, managing, and optimizing character assets.
12
+
13
+ ## Features
14
+ - Character asset management
15
+ - Pipeline automation tools
16
+ - Asset optimization utilities
17
+ - Easy integration with common game engines
18
+
19
+ ## Installation
20
+ ```bash
21
+ pip install pyjallib
22
+ ```
23
+
24
+ ## Documentation
25
+ For detailed documentation, please visit our wiki page.
26
+
27
+ ## License
28
+ This project is licensed under the MIT License - see the LICENSE file for details.
@@ -0,0 +1,20 @@
1
+ # pyjallib
2
+
3
+ pyjallib Package is a Python library designed to streamline the game character development pipeline. It provides tools and utilities to assist game developers in creating, managing, and optimizing character assets.
4
+
5
+ ## Features
6
+ - Character asset management
7
+ - Pipeline automation tools
8
+ - Asset optimization utilities
9
+ - Easy integration with common game engines
10
+
11
+ ## Installation
12
+ ```bash
13
+ pip install pyjallib
14
+ ```
15
+
16
+ ## Documentation
17
+ For detailed documentation, please visit our wiki page.
18
+
19
+ ## License
20
+ This project is licensed under the MIT License - see the LICENSE file for details.
@@ -0,0 +1,14 @@
1
+ [project]
2
+ name = "pyjallib"
3
+ version = "0.1.0"
4
+ description = "A utility library for 3D game character development pipelines."
5
+ authors = [
6
+ { name="Dongseok Kim", email="jalnagakds@gmail.com"}
7
+ ]
8
+ readme = "README.md"
9
+ requires-python = ">=3.10"
10
+ dependencies = []
11
+
12
+ [build-system]
13
+ requires = ["setuptools", "wheel"]
14
+ build-backend = "setuptools.build_meta"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+ """
5
+ pyjallib Package
6
+ Python library for game character development pipeline.
7
+ """
8
+
9
+ __version__ = '1.0.0'
10
+
11
+ # reload_modules 함수를 패키지 레벨에서 사용 가능하게 함
12
+ from .namePart import NamePartType
13
+ from .naming import Naming
14
+ from .namingConfig import NamingConfig
15
+ from .nameToPath import NameToPath
16
+ from .perforce import Perforce
17
+ from .reloadModules import reload_jallib_modules
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+ """
5
+ JalTools 3DS 패키지
6
+ 3DS Max 작업을 위한 모듈 모음
7
+ """
8
+
9
+ # 모듈 임포트
10
+ from .header import Header
11
+
12
+ from .name import Name
13
+ from .anim import Anim
14
+
15
+ from .helper import Helper
16
+ from .constraint import Constraint
17
+ from .bone import Bone
18
+
19
+ from .mirror import Mirror
20
+ from .layer import Layer
21
+ from .align import Align
22
+ from .select import Select
23
+ from .link import Link
24
+
25
+ from .bip import Bip
26
+ from .skin import Skin
27
+
28
+ from .twistBone import TwistBone
29
+
30
+ # 모듈 내보내기
31
+ __all__ = [
32
+ 'Header',
33
+ 'Name',
34
+ 'Anim',
35
+ 'Helper',
36
+ 'Constraint',
37
+ 'Bone',
38
+ 'Mirror',
39
+ 'Layer',
40
+ 'Align',
41
+ 'Select',
42
+ 'Link',
43
+ 'Bip',
44
+ 'Skin',
45
+ 'TwistBone'
46
+ ]
@@ -0,0 +1,112 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+ """
5
+ 정렬 모듈 - 3ds Max용 객체 정렬 관련 기능 제공
6
+ 원본 MAXScript의 align.ms를 Python으로 변환하였으며, pymxs 모듈 기반으로 구현됨
7
+ """
8
+
9
+ from pymxs import runtime as rt
10
+
11
+
12
+ class Align:
13
+ """
14
+ 객체 정렬 관련 기능을 제공하는 클래스.
15
+ MAXScript의 _Align 구조체 개념을 Python으로 재구현한 클래스이며, 3ds Max의 기능들을 pymxs API를 통해 제어합니다.
16
+ """
17
+
18
+ def __init__(self):
19
+ """클래스 초기화 (현재 특별한 초기화 동작은 없음)"""
20
+ pass
21
+
22
+ def align_to_last_sel_center(self):
23
+ """
24
+ 선택된 객체들을 마지막 선택된 객체의 중심점으로 정렬.
25
+
26
+ 모든 객체의 트랜스폼은 마지막 선택된 객체의 트랜스폼을 가지며,
27
+ 위치는 마지막 선택된 객체의 중심점(center)으로 설정됩니다.
28
+ """
29
+ selection_count = rt.selection.count
30
+
31
+ if selection_count > 1:
32
+ for i in range(selection_count):
33
+ rt.setProperty(rt.selection[i], "transform", rt.selection[selection_count-1].transform)
34
+ rt.setProperty(rt.selection[i], "position", rt.selection[selection_count-1].center)
35
+
36
+ def align_to_last_sel(self):
37
+ """
38
+ 선택된 객체들을 마지막 선택된 객체의 트랜스폼으로 정렬.
39
+
40
+ 모든 객체의 트랜스폼은 마지막 선택된 객체의 트랜스폼을 가지게 됩니다.
41
+ """
42
+ selection_count = rt.selection.count
43
+
44
+ if selection_count > 1:
45
+ for i in range(selection_count):
46
+ # 인덱스가 0부터 시작하는 Python과 달리 MAXScript는 1부터 시작하므로 i+1 사용
47
+ rt.selection[i].transform = rt.selection[selection_count-1].transform
48
+
49
+ def align_to_last_sel_pos(self):
50
+ """
51
+ 선택된 객체들을 마지막 선택된 객체의 위치로 정렬 (회전은 유지).
52
+
53
+ 위치는 마지막 선택된 객체를 따르고,
54
+ 회전은 원래 객체의 회전을 유지합니다.
55
+ """
56
+ selection_count = rt.selection.count
57
+
58
+ if selection_count > 1:
59
+ for i in range(selection_count):
60
+ # 임시 포인트 객체 생성
61
+ pos_dum_point = rt.Point()
62
+ # 위치와 회전 제약 컨트롤러 생성
63
+ pos_const = rt.Position_Constraint()
64
+ rot_const = rt.Orientation_Constraint()
65
+
66
+ # 포인트에 컨트롤러 할당
67
+ rt.setPropertyController(pos_dum_point.controller, "Position", pos_const)
68
+ rt.setPropertyController(pos_dum_point.controller, "Rotation", rot_const)
69
+
70
+ # 위치는 마지막 선택된 객체 기준, 회전은 현재 처리 중인 객체 기준
71
+ pos_const.appendTarget(rt.selection[selection_count-1], 100.0)
72
+ rot_const.appendTarget(rt.selection[i], 100.0)
73
+
74
+ # 계산된 변환 행렬을 객체에 적용
75
+ rt.setProperty(rt.selection[i], "transform", pos_dum_point.transform)
76
+
77
+ # 임시 객체 삭제
78
+ rt.delete(pos_dum_point)
79
+
80
+ def align_to_last_sel_rot(self):
81
+ """
82
+ 선택된 객체들을 마지막 선택된 객체의 회전으로 정렬 (위치는 유지).
83
+
84
+ 회전은 마지막 선택된 객체를 따르고,
85
+ 위치는 원래 객체의 위치를 유지합니다.
86
+ """
87
+ selection_count = rt.selection.count
88
+
89
+ if selection_count > 1:
90
+ for i in range(selection_count):
91
+ # 인덱스가 0부터 시작하는 Python과 달리 MAXScript는 1부터 시작하므로 i+1 사용
92
+ # 임시 포인트 객체 생성
93
+ rot_dum_point = rt.Point()
94
+ # 위치와 회전 제약 컨트롤러 생성
95
+ pos_const = rt.Position_Constraint()
96
+ rot_const = rt.Orientation_Constraint()
97
+
98
+ # 포인트에 컨트롤러 할당
99
+ rot_dum_point.position.controller = pos_const
100
+ rot_dum_point.rotation.controller = rot_const
101
+ rt.setPropertyController(rot_dum_point.controller, "Position", pos_const)
102
+ rt.setPropertyController(rot_dum_point.controller, "Rotation", rot_const)
103
+
104
+ # 위치는 현재 처리 중인 객체 기준, 회전은 마지막 선택된 객체 기준
105
+ pos_const.appendTarget(rt.selection[i], 100.0)
106
+ rot_const.appendTarget(rt.selection[selection_count-1], 100.0)
107
+
108
+ # 계산된 변환 행렬을 객체에 적용
109
+ rt.setProperty(rt.selection[i], "transform", rot_dum_point.transform)
110
+
111
+ # 임시 객체 삭제
112
+ rt.delete(rot_dum_point)