-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathqtmesh.example.yml
More file actions
125 lines (111 loc) · 3.71 KB
/
Copy pathqtmesh.example.yml
File metadata and controls
125 lines (111 loc) · 3.71 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
115
116
117
118
119
120
121
122
123
124
125
# qtmesh.yml — 3D asset pipeline linting configuration
# Copy this file as qtmesh.yml in your project root and customize.
# See: https://github.com/fernandotonon/QtMeshEditor
#
# The scan command picks up qtmesh.yml (or qtmesh.yaml / qtmesh.json)
# automatically from the current directory. Override with --config <path>.
#
# QtMesh Cloud: with QTMESH_TOKEN, QTMESH_CLOUD_TOKEN, or --token <ingest>, and no local
# qtmesh.yml|yaml|json, `qtmesh scan` loads remote rules from the API and uploads the scan
# JSON after each run unless --no-upload is set (see CLI --help).
#
# Run:
# qtmesh scan ./assets
# qtmesh scan ./assets --json
# qtmesh scan ./assets --fix --dry-run
version: 1
# Optional built-in platform profile (bundled with QtMesh — no local profiles/ folder required).
# Profiles validate glTF/FBX source budgets; they do not export engine/cooked platform formats.
# Examples: modern-console, switch-like, steamdeck, mobile-low, webgl, vr, ps1, n64
# profile: mobile-low
scan:
roots:
- assets/
include:
- "**/*.fbx"
- "**/*.glb"
- "**/*.gltf"
- "**/*.vrm"
- "**/*.obj"
exclude:
- "**/third_party/**"
- "**/vendor/**"
- "**/.git/**"
- "**/build/**"
rules:
# Format restrictions
allowed_formats: [fbx, glb, gltf, vrm, obj]
forbidden_extensions: [dae, 3ds]
# Size & complexity limits
max_file_size_mb: 50
max_mesh_count: 8
max_material_count: 16
max_vertex_count: 100000
# Skeleton & animation existence checks
require_skeleton: false
require_animations: false
# Animation content limits
max_anim_keyframes: 500
max_anim_duration: 30.0
# Redundant-keyframe / animation simplification (opt-in)
# Walks each animation's atomic node keys under the configured tolerances
# and warns when >= N% of keyframes could be folded out (same maths as
# `qtmesh anim --simplify`). `qtmesh scan ... --fix` will then rewrite
# the asset (currently FBX) to drop those keys — this is destructive,
# so the rule is disabled by default. Set the threshold to any positive
# value to enable. Recommended starting point: 40 (warns at >=40%).
# redundant_keyframes_pct: 40
# redundant_keyframes_translation_tol: 0.001 # ~1mm
# redundant_keyframes_rotation_deg_tol: 0.5
# redundant_keyframes_scale_tol: 0.001
# Animation & bone name requirements (wildcard: * = any, ? = one char)
# These are checked globally. Use scopes for path-specific requirements.
# require_animation_names: [idle, walk, run]
# require_bone_names: [Hips, Spine, Head]
# Texture & material hygiene
allow_embedded_textures: true
require_textures_exist: true
allow_missing_materials: false
# Naming convention: snake_case, kebab-case, camelCase, PascalCase, lowercase
file_name_case: snake_case
# Scoped rules — override global rules for specific paths.
# Each key is a glob pattern matched against the asset's relative path.
# Only rule fields present in the scope override the global value.
scopes:
"characters/**":
require_skeleton: true
require_animations: true
max_anim_keyframes: 300
max_anim_duration: 10.0
require_animation_names:
- idle
- walk
- run
- jump
- "attack*"
- "dance_*"
require_bone_names:
- r_hand_attach
- l_hand_attach
- backpack
- top_head
"props/**":
require_skeleton: false
require_animations: false
max_vertex_count: 5000
max_material_count: 4
"environments/**":
max_vertex_count: 500000
max_material_count: 32
fix:
enabled: false
dry_run: false
optimize_meshes: false
rename_animations: false
convert_to_format: ""
output_dir: ""
report:
format: both
output: .qtmesh/scan-report.json
sarif_output: .qtmesh/scan-report.sarif
fail_on: error