-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path__init__.py
More file actions
114 lines (94 loc) · 3.21 KB
/
Copy path__init__.py
File metadata and controls
114 lines (94 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
"""Neck Seam Removal Addon for Blender.
Automates the neck seam removal texture workflow based on the XNAMall tutorial.
https://xnamall.jimdofree.com/tutorials/general-edits/getting-rid-of-neck-seams-texture/
Supports: Blender 4.5 LTS and 5.0+
"""
bl_info = {
"name": "Neck Seam Removal",
"blender": (4, 5, 0),
"category": "Material",
"version": (1, 3, 0),
"author": "mugenrei",
"description": "Automate neck seam removal texture workflow",
"location": "View3D > N Panel > Neck Seam",
"doc_url": "https://xnamall.jimdofree.com/tutorials/general-edits/getting-rid-of-neck-seams-texture/",
}
import bpy
from bpy.props import StringProperty, FloatProperty, IntProperty, BoolProperty
from . import operators
from . import ui
def register():
"""Register the addon."""
# Register operators and UI
operators.register()
ui.register()
# Scene properties for addon settings
bpy.types.Scene.neckseam_head_material = StringProperty(
name="Head Material",
description="Material used on the head mesh",
default=""
)
bpy.types.Scene.neckseam_body_material = StringProperty(
name="Body Material",
description="Material used on the body mesh",
default=""
)
bpy.types.Scene.neckseam_output_folder = StringProperty(
name="Output Folder",
description="Folder to save baked images",
default="//textures/",
subtype='DIR_PATH'
)
bpy.types.Scene.neckseam_uv_scale = FloatProperty(
name="UV Scale Factor",
description="Scale factor for corner UV placement (smaller = tighter corner)",
default=0.15,
min=0.01,
max=0.5,
precision=3
)
bpy.types.Scene.neckseam_bake_resolution = IntProperty(
name="Bake Resolution",
description="Resolution for seam bake (Part 1)",
default=2048,
min=256,
max=8192,
step=256
)
bpy.types.Scene.neckseam_head_bake_resolution = IntProperty(
name="Head Bake Resolution",
description="Resolution for head bake (Part 2)",
default=4096,
min=256,
max=8192,
step=256
)
bpy.types.Scene.neckseam_body_bake_resolution = IntProperty(
name="Body Bake Resolution",
description="Resolution for body bake (Part 2)",
default=4096,
min=256,
max=8192,
step=256
)
bpy.types.Scene.neckseam_bake_originals = BoolProperty(
name="Bake Original Textures",
description="Bake original materials first as reference (helps match brightness)",
default=False
)
def unregister():
"""Unregister the addon."""
# Unregister operators and UI
operators.unregister()
ui.unregister()
# Remove scene properties
del bpy.types.Scene.neckseam_head_material
del bpy.types.Scene.neckseam_body_material
del bpy.types.Scene.neckseam_output_folder
del bpy.types.Scene.neckseam_uv_scale
del bpy.types.Scene.neckseam_bake_resolution
del bpy.types.Scene.neckseam_head_bake_resolution
del bpy.types.Scene.neckseam_body_bake_resolution
del bpy.types.Scene.neckseam_bake_originals
if __name__ == "__main__":
register()