File size: 1,411 Bytes
b6a3ea1
 
 
e66e0ce
 
 
 
b6a3ea1
e5f2a2b
b6a3ea1
 
 
 
 
 
 
 
 
 
 
 
e0ee6b2
 
b6a3ea1
 
 
 
 
 
 
 
 
6cad89f
 
 
 
 
 
e5f2a2b
b6a3ea1
093fc19
 
6cad89f
ed3d05d
6cad89f
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
TEXTURE_REFERENCE_SIZE = 2048
REFERENCE_FACE_BUDGET = 100000
MAX_FACE_BUDGET = 200000
REFERENCE_TEXTURE_STEPS = 1000
MAX_TEXTURE_STEPS = 1000
TEXTURE_INIT = "zeros"
TEXTURE_LEARNING_RATE = 1e-2
MAX_SIMPLIFY_RATIO = 0.999
BAKE_RENDER_VIEWS = 100


def texture_scale(texture_size):
    return texture_size / TEXTURE_REFERENCE_SIZE


def faces_for_texture_size(texture_size):
    budget = REFERENCE_FACE_BUDGET * texture_scale(texture_size) ** 2
    return int(round(min(budget, MAX_FACE_BUDGET)))


def texture_steps_for_texture_size(texture_size):
    steps = REFERENCE_TEXTURE_STEPS * texture_scale(texture_size)
    return max(1, int(round(min(steps, MAX_TEXTURE_STEPS))))


def simplify_ratio_for_texture_size(texture_size, source_faces):
    target_faces = faces_for_texture_size(texture_size)
    if source_faces <= target_faces:
        return 0.0
    return min(MAX_SIMPLIFY_RATIO, 1.0 - target_faces / source_faces)


def balanced_export_settings(simplify, texture_size):
    return {
        "simplify": simplify,
        "texture_size": texture_size,
        "fill_holes": True,
        "fill_holes_num_views": 250,
        "render_views": BAKE_RENDER_VIEWS,
        "texture_optimization_steps": texture_steps_for_texture_size(texture_size),
        "texture_init": TEXTURE_INIT,
        "texture_lr": TEXTURE_LEARNING_RATE,
        "uv_backend": "cumesh",
        "decimate_backend": "cumesh",
    }