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.
- pyjallib-0.1.0/PKG-INFO +28 -0
- pyjallib-0.1.0/README.md +20 -0
- pyjallib-0.1.0/pyproject.toml +14 -0
- pyjallib-0.1.0/setup.cfg +4 -0
- pyjallib-0.1.0/src/pyjallib/__init__.py +17 -0
- pyjallib-0.1.0/src/pyjallib/max/__init__.py +46 -0
- pyjallib-0.1.0/src/pyjallib/max/align.py +112 -0
- pyjallib-0.1.0/src/pyjallib/max/anim.py +594 -0
- pyjallib-0.1.0/src/pyjallib/max/bip.py +508 -0
- pyjallib-0.1.0/src/pyjallib/max/bone.py +910 -0
- pyjallib-0.1.0/src/pyjallib/max/constraint.py +973 -0
- pyjallib-0.1.0/src/pyjallib/max/header.py +57 -0
- pyjallib-0.1.0/src/pyjallib/max/helper.py +433 -0
- pyjallib-0.1.0/src/pyjallib/max/layer.py +262 -0
- pyjallib-0.1.0/src/pyjallib/max/link.py +78 -0
- pyjallib-0.1.0/src/pyjallib/max/macro/jal_macro_align.py +155 -0
- pyjallib-0.1.0/src/pyjallib/max/macro/jal_macro_bone.py +358 -0
- pyjallib-0.1.0/src/pyjallib/max/macro/jal_macro_constraint.py +140 -0
- pyjallib-0.1.0/src/pyjallib/max/macro/jal_macro_helper.py +321 -0
- pyjallib-0.1.0/src/pyjallib/max/macro/jal_macro_link.py +55 -0
- pyjallib-0.1.0/src/pyjallib/max/macro/jal_macro_select.py +91 -0
- pyjallib-0.1.0/src/pyjallib/max/mirror.py +388 -0
- pyjallib-0.1.0/src/pyjallib/max/name.py +521 -0
- pyjallib-0.1.0/src/pyjallib/max/select.py +278 -0
- pyjallib-0.1.0/src/pyjallib/max/skin.py +996 -0
- pyjallib-0.1.0/src/pyjallib/max/twistBone.py +418 -0
- pyjallib-0.1.0/src/pyjallib/namePart.py +633 -0
- pyjallib-0.1.0/src/pyjallib/nameToPath.py +113 -0
- pyjallib-0.1.0/src/pyjallib/naming.py +1066 -0
- pyjallib-0.1.0/src/pyjallib/namingConfig.py +844 -0
- pyjallib-0.1.0/src/pyjallib/perforce.py +735 -0
- pyjallib-0.1.0/src/pyjallib/reloadModules.py +33 -0
- pyjallib-0.1.0/src/pyjallib.egg-info/PKG-INFO +28 -0
- pyjallib-0.1.0/src/pyjallib.egg-info/SOURCES.txt +34 -0
- pyjallib-0.1.0/src/pyjallib.egg-info/dependency_links.txt +1 -0
- pyjallib-0.1.0/src/pyjallib.egg-info/top_level.txt +1 -0
pyjallib-0.1.0/PKG-INFO
ADDED
@@ -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.
|
pyjallib-0.1.0/README.md
ADDED
@@ -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"
|
pyjallib-0.1.0/setup.cfg
ADDED
@@ -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)
|