forked from syoyo/tinyxpd
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVALIDATION_REPORT.txt
More file actions
159 lines (129 loc) · 4.09 KB
/
VALIDATION_REPORT.txt
File metadata and controls
159 lines (129 loc) · 4.09 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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
=================================================================
XPD READER VALIDATION REPORT
=================================================================
Test Date: 2026-01-28
Tool: xpd_reader_detailed.exe
=================================================================
FILE 1: box.xpd
=================================================================
Input: 29K
Output: 351K (box.json)
Header:
- fileVersion: 0
- primType: Spline
- primVersion: 3
- numCVs: 5
- coordSpace: Object
- numFaces: 6
- numBlocks: 1
- primSize: 51 (FULL FORMAT)
Block: "BakedGroom"
Keys:
- "vertex point xgClumpingGuide"
- "vertex float xgClumpingWeight"
- "box"
Primitives:
Face 0: 24 primitives
Face 1: 25 primitives
Face 2: 25 primitives
Face 3: 25 primitives
Face 4: 24 primitives
Face 5: 21 primitives
Total: 144 primitives
Data Fields Parsed (51 floats):
✓ primitiveId
✓ surfaceUV [u, v]
✓ cvs [5] with positions [x, y, z]
✓ guideId, guideWeight, guideType
✓ guideDirection [x, y, z]
✓ guidePrimRef
✓ guideUV [u, v]
✓ surfaceNormal [x, y, z]
✓ cvParameters [5] with t-values
✓ widthScale (base, tip, param1, param2)
✓ additionalAttributes [2 floats]
Status: ✅ PASS - All fields parsed correctly
=================================================================
FILE 2: samples/sample.xpd
=================================================================
Output: 225K (samples/sample.json)
Header:
- fileVersion: 0
- primType: Spline
- primVersion: 3
- numCVs: 5
- coordSpace: Object
- numFaces: 444
- numBlocks: 1
- primSize: 25 (BASIC FORMAT)
Block: "BakedGroom"
Keys: (none)
Primitives:
444 faces (sparse - most have 0 primitives)
Total: 126 primitives scattered across mesh
Data Fields Parsed (25 floats):
✓ primitiveId
✓ surfaceUV [u, v]
✓ cvs [5] with positions [x, y, z]
✓ guideId, guideWeight, guideType
✓ guideDirection [x, y, z]
✓ guidePrimRef
Status: ✅ PASS - Basic format handled correctly
=================================================================
FILE 3: samples/spline_1_taper_1.xpd
=================================================================
Output: 4.1K (samples/spline_1_taper_1.json)
Header:
- fileVersion: 0
- primType: Spline
- primVersion: 3
- numCVs: 5
- coordSpace: Object
- numFaces: 13
- numBlocks: 1
- primSize: 25 (BASIC FORMAT)
Block: "BakedGroom"
Keys: (none)
Primitives:
Face 12: 1 primitive
All other faces: 0 primitives
Total: 1 primitive
Data Fields Parsed (25 floats):
✓ primitiveId: 0
✓ surfaceUV: [0.347729, 0.430220]
✓ cvs [5] with positions
✓ guideId: 1, guideWeight: 0.1, guideType: 0
✓ guideDirection: [0.0, 1.0, 0.0]
✓ guidePrimRef: 0
Status: ✅ PASS - Minimal data case handled correctly
=================================================================
COMPATIBILITY ANALYSIS
=================================================================
Format Variations Tested:
✓ primSize 51 (full grooming data)
✓ primSize 25 (basic spline data)
✓ Sparse data (many faces with 0 primitives)
✓ Dense data (all faces with primitives)
✓ Small meshes (6 faces)
✓ Large meshes (444 faces)
✓ With keys (box.xpd)
✓ Without keys (sample files)
Parser Features Validated:
✓ Conditional field parsing based on primSize
✓ Handles missing/optional fields gracefully
✓ Correct JSON formatting for all cases
✓ Progress reporting during processing
✓ Automatic output filename generation
✓ No crashes or errors on any file
=================================================================
CONCLUSION
=================================================================
✅ ALL TESTS PASSED
The xpd_reader_detailed tool successfully handles:
- Multiple data format versions (primSize 25 and 51)
- Various mesh topologies (6 to 444 faces)
- Sparse and dense primitive distributions
- Optional metadata (keys)
- All files produce valid, well-formed JSON output
Data layout parsing is CONSISTENT and ROBUST across all tested files.
=================================================================