dracox 0.0.1__cp39-cp39-win_amd64.whl

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.
Files changed (214) hide show
  1. bin/draco_decoder.exe +0 -0
  2. bin/draco_encoder.exe +0 -0
  3. dracox/__init__.py +252 -0
  4. dracox/dracox_ext.cp39-win_amd64.pyd +0 -0
  5. dracox-0.0.1.dist-info/METADATA +14 -0
  6. dracox-0.0.1.dist-info/RECORD +214 -0
  7. dracox-0.0.1.dist-info/WHEEL +5 -0
  8. include/draco/animation/keyframe_animation.h +107 -0
  9. include/draco/animation/keyframe_animation_decoder.h +34 -0
  10. include/draco/animation/keyframe_animation_encoder.h +39 -0
  11. include/draco/attributes/attribute_octahedron_transform.h +81 -0
  12. include/draco/attributes/attribute_quantization_transform.h +102 -0
  13. include/draco/attributes/attribute_transform.h +76 -0
  14. include/draco/attributes/attribute_transform_data.h +71 -0
  15. include/draco/attributes/attribute_transform_type.h +30 -0
  16. include/draco/attributes/geometry_attribute.h +541 -0
  17. include/draco/attributes/geometry_indices.h +54 -0
  18. include/draco/attributes/point_attribute.h +196 -0
  19. include/draco/compression/attributes/attributes_decoder.h +97 -0
  20. include/draco/compression/attributes/attributes_decoder_interface.h +62 -0
  21. include/draco/compression/attributes/attributes_encoder.h +154 -0
  22. include/draco/compression/attributes/kd_tree_attributes_decoder.h +50 -0
  23. include/draco/compression/attributes/kd_tree_attributes_encoder.h +51 -0
  24. include/draco/compression/attributes/kd_tree_attributes_shared.h +28 -0
  25. include/draco/compression/attributes/linear_sequencer.h +51 -0
  26. include/draco/compression/attributes/mesh_attribute_indices_encoding_data.h +58 -0
  27. include/draco/compression/attributes/normal_compression_utils.h +372 -0
  28. include/draco/compression/attributes/point_d_vector.h +288 -0
  29. include/draco/compression/attributes/points_sequencer.h +63 -0
  30. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_decoder.h +236 -0
  31. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_encoder.h +413 -0
  32. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_shared.h +34 -0
  33. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h +72 -0
  34. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h +46 -0
  35. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h +46 -0
  36. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_decoder.h +176 -0
  37. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_encoder.h +180 -0
  38. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor_area.h +117 -0
  39. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor_base.h +96 -0
  40. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_decoder.h +128 -0
  41. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_encoder.h +133 -0
  42. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_encoder.h +111 -0
  43. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h +78 -0
  44. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_decoder.h +372 -0
  45. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_encoder.h +318 -0
  46. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_decoder.h +143 -0
  47. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_encoder.h +136 -0
  48. include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_predictor.h +282 -0
  49. include/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder.h +90 -0
  50. include/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h +194 -0
  51. include/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_interface.h +53 -0
  52. include/draco/compression/attributes/prediction_schemes/prediction_scheme_decoding_transform.h +65 -0
  53. include/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_decoder.h +65 -0
  54. include/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_encoder.h +69 -0
  55. include/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder.h +90 -0
  56. include/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h +134 -0
  57. include/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_interface.h +55 -0
  58. include/draco/compression/attributes/prediction_schemes/prediction_scheme_encoding_transform.h +77 -0
  59. include/draco/compression/attributes/prediction_schemes/prediction_scheme_factory.h +85 -0
  60. include/draco/compression/attributes/prediction_schemes/prediction_scheme_interface.h +60 -0
  61. include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_decoding_transform.h +118 -0
  62. include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_encoding_transform.h +116 -0
  63. include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_base.h +102 -0
  64. include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_decoding_transform.h +115 -0
  65. include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_encoding_transform.h +105 -0
  66. include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_base.h +90 -0
  67. include/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_decoding_transform.h +88 -0
  68. include/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_encoding_transform.h +81 -0
  69. include/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform_base.h +120 -0
  70. include/draco/compression/attributes/sequential_attribute_decoder.h +86 -0
  71. include/draco/compression/attributes/sequential_attribute_decoders_controller.h +61 -0
  72. include/draco/compression/attributes/sequential_attribute_encoder.h +134 -0
  73. include/draco/compression/attributes/sequential_attribute_encoders_controller.h +115 -0
  74. include/draco/compression/attributes/sequential_integer_attribute_decoder.h +76 -0
  75. include/draco/compression/attributes/sequential_integer_attribute_encoder.h +67 -0
  76. include/draco/compression/attributes/sequential_normal_attribute_decoder.h +83 -0
  77. include/draco/compression/attributes/sequential_normal_attribute_encoder.h +82 -0
  78. include/draco/compression/attributes/sequential_quantization_attribute_decoder.h +52 -0
  79. include/draco/compression/attributes/sequential_quantization_attribute_encoder.h +52 -0
  80. include/draco/compression/bit_coders/adaptive_rans_bit_coding_shared.h +43 -0
  81. include/draco/compression/bit_coders/adaptive_rans_bit_decoder.h +54 -0
  82. include/draco/compression/bit_coders/adaptive_rans_bit_encoder.h +61 -0
  83. include/draco/compression/bit_coders/direct_bit_decoder.h +89 -0
  84. include/draco/compression/bit_coders/direct_bit_encoder.h +89 -0
  85. include/draco/compression/bit_coders/folded_integer_bit_decoder.h +77 -0
  86. include/draco/compression/bit_coders/folded_integer_bit_encoder.h +82 -0
  87. include/draco/compression/bit_coders/rans_bit_decoder.h +55 -0
  88. include/draco/compression/bit_coders/rans_bit_encoder.h +57 -0
  89. include/draco/compression/bit_coders/symbol_bit_decoder.h +36 -0
  90. include/draco/compression/bit_coders/symbol_bit_encoder.h +36 -0
  91. include/draco/compression/config/compression_shared.h +155 -0
  92. include/draco/compression/config/decoder_options.h +34 -0
  93. include/draco/compression/config/draco_options.h +249 -0
  94. include/draco/compression/config/encoder_options.h +101 -0
  95. include/draco/compression/config/encoding_features.h +39 -0
  96. include/draco/compression/decode.h +80 -0
  97. include/draco/compression/draco_compression_options.h +141 -0
  98. include/draco/compression/encode.h +139 -0
  99. include/draco/compression/encode_base.h +131 -0
  100. include/draco/compression/entropy/ans.h +526 -0
  101. include/draco/compression/entropy/rans_symbol_coding.h +53 -0
  102. include/draco/compression/entropy/rans_symbol_decoder.h +171 -0
  103. include/draco/compression/entropy/rans_symbol_encoder.h +290 -0
  104. include/draco/compression/entropy/shannon_entropy.h +110 -0
  105. include/draco/compression/entropy/symbol_decoding.h +29 -0
  106. include/draco/compression/entropy/symbol_encoding.h +47 -0
  107. include/draco/compression/expert_encode.h +160 -0
  108. include/draco/compression/mesh/mesh_decoder.h +68 -0
  109. include/draco/compression/mesh/mesh_edgebreaker_decoder.h +54 -0
  110. include/draco/compression/mesh/mesh_edgebreaker_decoder_impl.h +228 -0
  111. include/draco/compression/mesh/mesh_edgebreaker_decoder_impl_interface.h +47 -0
  112. include/draco/compression/mesh/mesh_edgebreaker_encoder.h +73 -0
  113. include/draco/compression/mesh/mesh_edgebreaker_encoder_impl.h +209 -0
  114. include/draco/compression/mesh/mesh_edgebreaker_encoder_impl_interface.h +57 -0
  115. include/draco/compression/mesh/mesh_edgebreaker_shared.h +129 -0
  116. include/draco/compression/mesh/mesh_edgebreaker_traversal_decoder.h +201 -0
  117. include/draco/compression/mesh/mesh_edgebreaker_traversal_encoder.h +139 -0
  118. include/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h +134 -0
  119. include/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h +172 -0
  120. include/draco/compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h +219 -0
  121. include/draco/compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h +226 -0
  122. include/draco/compression/mesh/mesh_encoder.h +84 -0
  123. include/draco/compression/mesh/mesh_sequential_decoder.h +39 -0
  124. include/draco/compression/mesh/mesh_sequential_encoder.h +56 -0
  125. include/draco/compression/mesh/traverser/depth_first_traverser.h +172 -0
  126. include/draco/compression/mesh/traverser/max_prediction_degree_traverser.h +226 -0
  127. include/draco/compression/mesh/traverser/mesh_attribute_indices_encoding_observer.h +76 -0
  128. include/draco/compression/mesh/traverser/mesh_traversal_sequencer.h +113 -0
  129. include/draco/compression/mesh/traverser/traverser_base.h +87 -0
  130. include/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.h +369 -0
  131. include/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.h +372 -0
  132. include/draco/compression/point_cloud/algorithms/float_points_tree_decoder.h +141 -0
  133. include/draco/compression/point_cloud/algorithms/float_points_tree_encoder.h +126 -0
  134. include/draco/compression/point_cloud/algorithms/point_cloud_compression_method.h +34 -0
  135. include/draco/compression/point_cloud/algorithms/point_cloud_types.h +76 -0
  136. include/draco/compression/point_cloud/algorithms/quantize_points_3.h +84 -0
  137. include/draco/compression/point_cloud/algorithms/queuing_policy.h +75 -0
  138. include/draco/compression/point_cloud/point_cloud_decoder.h +118 -0
  139. include/draco/compression/point_cloud/point_cloud_encoder.h +158 -0
  140. include/draco/compression/point_cloud/point_cloud_kd_tree_decoder.h +31 -0
  141. include/draco/compression/point_cloud/point_cloud_kd_tree_encoder.h +45 -0
  142. include/draco/compression/point_cloud/point_cloud_sequential_decoder.h +33 -0
  143. include/draco/compression/point_cloud/point_cloud_sequential_encoder.h +43 -0
  144. include/draco/core/bit_utils.h +127 -0
  145. include/draco/core/bounding_box.h +77 -0
  146. include/draco/core/constants.h +6 -0
  147. include/draco/core/cycle_timer.h +51 -0
  148. include/draco/core/data_buffer.h +82 -0
  149. include/draco/core/decoder_buffer.h +216 -0
  150. include/draco/core/divide.h +42 -0
  151. include/draco/core/draco_index_type.h +184 -0
  152. include/draco/core/draco_index_type_vector.h +90 -0
  153. include/draco/core/draco_types.h +52 -0
  154. include/draco/core/draco_version.h +25 -0
  155. include/draco/core/encoder_buffer.h +152 -0
  156. include/draco/core/hash_utils.h +64 -0
  157. include/draco/core/macros.h +124 -0
  158. include/draco/core/math_utils.h +79 -0
  159. include/draco/core/options.h +151 -0
  160. include/draco/core/quantization_utils.h +82 -0
  161. include/draco/core/status.h +83 -0
  162. include/draco/core/status_or.h +81 -0
  163. include/draco/core/varint_decoding.h +81 -0
  164. include/draco/core/varint_encoding.h +61 -0
  165. include/draco/core/vector_d.h +355 -0
  166. include/draco/draco_features.h +25 -0
  167. include/draco/io/file_reader_factory.h +34 -0
  168. include/draco/io/file_reader_interface.h +32 -0
  169. include/draco/io/file_utils.h +86 -0
  170. include/draco/io/file_writer_factory.h +34 -0
  171. include/draco/io/file_writer_interface.h +26 -0
  172. include/draco/io/file_writer_utils.h +38 -0
  173. include/draco/io/mesh_io.h +107 -0
  174. include/draco/io/obj_decoder.h +147 -0
  175. include/draco/io/obj_encoder.h +107 -0
  176. include/draco/io/parser_utils.h +66 -0
  177. include/draco/io/ply_decoder.h +69 -0
  178. include/draco/io/ply_encoder.h +54 -0
  179. include/draco/io/ply_property_reader.h +96 -0
  180. include/draco/io/ply_property_writer.h +94 -0
  181. include/draco/io/ply_reader.h +155 -0
  182. include/draco/io/point_cloud_io.h +89 -0
  183. include/draco/io/stdio_file_reader.h +48 -0
  184. include/draco/io/stdio_file_writer.h +42 -0
  185. include/draco/io/stl_decoder.h +38 -0
  186. include/draco/io/stl_encoder.h +52 -0
  187. include/draco/mesh/corner_table.h +397 -0
  188. include/draco/mesh/corner_table_iterators.h +309 -0
  189. include/draco/mesh/mesh.h +378 -0
  190. include/draco/mesh/mesh_are_equivalent.h +71 -0
  191. include/draco/mesh/mesh_attribute_corner_table.h +202 -0
  192. include/draco/mesh/mesh_cleanup.h +61 -0
  193. include/draco/mesh/mesh_features.h +93 -0
  194. include/draco/mesh/mesh_indices.h +37 -0
  195. include/draco/mesh/mesh_misc_functions.h +105 -0
  196. include/draco/mesh/mesh_stripifier.h +258 -0
  197. include/draco/mesh/triangle_soup_mesh_builder.h +134 -0
  198. include/draco/mesh/valence_cache.h +142 -0
  199. include/draco/metadata/geometry_metadata.h +142 -0
  200. include/draco/metadata/metadata.h +209 -0
  201. include/draco/metadata/metadata_decoder.h +42 -0
  202. include/draco/metadata/metadata_encoder.h +41 -0
  203. include/draco/metadata/property_attribute.h +107 -0
  204. include/draco/metadata/property_table.h +222 -0
  205. include/draco/metadata/structural_metadata.h +78 -0
  206. include/draco/metadata/structural_metadata_schema.h +118 -0
  207. include/draco/point_cloud/point_cloud.h +289 -0
  208. include/draco/point_cloud/point_cloud_builder.h +101 -0
  209. lib/draco.lib +0 -0
  210. lib/pkgconfig/draco.pc +6 -0
  211. share/cmake/draco/draco-config-version.cmake +43 -0
  212. share/cmake/draco/draco-config.cmake +27 -0
  213. share/cmake/draco/draco-targets-release.cmake +19 -0
  214. share/cmake/draco/draco-targets.cmake +107 -0
bin/draco_decoder.exe ADDED
Binary file
bin/draco_encoder.exe ADDED
Binary file
dracox/__init__.py ADDED
@@ -0,0 +1,252 @@
1
+ """
2
+ # dracox
3
+
4
+ Support library for `trimesh` providing Draco compression/decompression
5
+ for glTF's `KHR_draco_mesh_compression` extension.
6
+ """
7
+
8
+ from typing import TYPE_CHECKING, Any, Dict, Optional
9
+
10
+ __version__ = "0.0.1"
11
+
12
+ if TYPE_CHECKING:
13
+ from trimesh.exchange.gltf.extensions import (
14
+ PrimitiveExportContext,
15
+ PrimitivePreprocessContext,
16
+ )
17
+
18
+
19
+ def _draco_decode(ctx: "PrimitivePreprocessContext") -> Optional[Dict[str, Any]]:
20
+ """
21
+ Handle KHR_draco_mesh_compression extension for decoding a glTF primitive.
22
+
23
+ Registered as a handler for scope="primitive_preprocess".
24
+
25
+ Parameters
26
+ ----------
27
+ ctx
28
+ PrimitivePreprocessContext with:
29
+ - data: The KHR_draco_mesh_compression extension data
30
+ - views: List of buffer views from the glTF
31
+ - accessors: List of accessors (mutable, will be appended to)
32
+ - primitive: The primitive dict (mutable, indices/attributes will be updated)
33
+
34
+ Returns
35
+ -------
36
+ result
37
+ Dict with {"decompressed": True}, or None on failure.
38
+ """
39
+ # lazily import our C extension
40
+ from .dracox_ext import decode_draco_buffer
41
+
42
+ ext_data = ctx["data"]
43
+ views = ctx["views"]
44
+ accessors = ctx["accessors"]
45
+ primitive = ctx["primitive"]
46
+
47
+ # Get the compressed data from the bufferView
48
+ buffer_view_index = ext_data["bufferView"]
49
+ compressed_data = views[buffer_view_index]
50
+
51
+ # Build attribute map from Draco attribute IDs to names
52
+ attribute_map = [
53
+ (attr_name, attr_id) for attr_name, attr_id in ext_data["attributes"].items()
54
+ ]
55
+
56
+ # Decompress using dracox
57
+ decompressed = decode_draco_buffer(compressed_data, attribute_map)
58
+
59
+ # Update the accessors array with decompressed data
60
+ for attr_name in ext_data["attributes"].keys():
61
+ if attr_name not in decompressed:
62
+ continue
63
+ # append the decompressed data as a new accessor
64
+ primitive["attributes"][attr_name] = len(accessors)
65
+ accessors.append(decompressed[attr_name])
66
+
67
+ # Handle indices if present
68
+ if "indices" in primitive and "indices" in decompressed:
69
+ primitive["indices"] = len(accessors)
70
+ accessors.append(decompressed["indices"])
71
+
72
+ return {"decompressed": True}
73
+
74
+
75
+ def _draco_encode(ctx: "PrimitiveExportContext") -> Optional[Dict[str, Any]]:
76
+ """
77
+ Handle KHR_draco_mesh_compression extension for encoding a mesh primitive.
78
+
79
+ Registered as a handler for scope="primitive_export".
80
+
81
+ Parameters
82
+ ----------
83
+ ctx
84
+ PrimitiveExportContext with:
85
+ - mesh: trimesh.Trimesh being exported
86
+ - name: Mesh name
87
+ - tree: glTF tree being built (mutable)
88
+ - buffer_items: Buffer data being built (mutable)
89
+ - primitive: Primitive dict being built (mutable)
90
+ - include_normals: Whether to include normals
91
+
92
+ Returns
93
+ -------
94
+ result
95
+ Dict with extension data for KHR_draco_mesh_compression, or None on failure.
96
+ """
97
+ # lazily import our C extension
98
+ from .dracox_ext import encode_draco_buffer
99
+
100
+ mesh = ctx["mesh"]
101
+ buffer_items = ctx["buffer_items"]
102
+ primitive = ctx["primitive"]
103
+ tree = ctx["tree"]
104
+ include_normals = ctx["include_normals"]
105
+
106
+ # Get mesh data
107
+ vertices = mesh.vertices.astype("float32")
108
+ faces = mesh.faces.astype("uint32")
109
+
110
+ # Get optional normals
111
+ normals = None
112
+ if include_normals and hasattr(mesh, "vertex_normals"):
113
+ normals = mesh.vertex_normals.astype("float32")
114
+
115
+ # Get optional texture coordinates
116
+ texcoords = None
117
+ if hasattr(mesh, "visual") and hasattr(mesh.visual, "uv") and mesh.visual.uv is not None:
118
+ texcoords = mesh.visual.uv.astype("float32")
119
+
120
+ # Encode using dracox
121
+ result = encode_draco_buffer(
122
+ vertices=vertices,
123
+ faces=faces,
124
+ normals=normals,
125
+ texcoords=texcoords,
126
+ )
127
+
128
+ # Pad buffer to 4-byte alignment (GLTF requirement)
129
+ compressed = result["buffer"]
130
+ padding = (4 - len(compressed) % 4) % 4
131
+ if padding > 0:
132
+ compressed = compressed + b'\x00' * padding
133
+
134
+ # Replace uncompressed buffers with empty stubs
135
+ # Per glTF spec, accessor data MAY be empty when draco extension is present
136
+ accessors = tree["accessors"]
137
+ buffer_keys = list(buffer_items.keys())
138
+
139
+ # Find accessor indices that belong to this primitive
140
+ accessor_indices = []
141
+ if "indices" in primitive:
142
+ accessor_indices.append(primitive["indices"])
143
+ for attr_idx in primitive.get("attributes", {}).values():
144
+ accessor_indices.append(attr_idx)
145
+
146
+ # Replace buffers for these accessors with minimal 4-byte stubs
147
+ # The accessor's bufferView field tells us which buffer to stub
148
+ accessor_list = list(accessors.values()) if hasattr(accessors, 'values') else accessors
149
+ for acc_idx in accessor_indices:
150
+ if acc_idx < len(accessor_list):
151
+ accessor = accessor_list[acc_idx]
152
+ # Get the bufferView index from the accessor
153
+ bv_idx = accessor.get("bufferView")
154
+ if bv_idx is not None and bv_idx < len(buffer_keys):
155
+ key = buffer_keys[bv_idx]
156
+ # Replace with 4-byte stub (minimum for alignment)
157
+ buffer_items[key] = b'\x00\x00\x00\x00'
158
+ # Update accessor count to 0 since data is in draco buffer
159
+ accessor["count"] = 0
160
+
161
+ # Add compressed buffer to buffer_items
162
+ # The bufferView index will be the position in the OrderedDict
163
+ buffer_view_index = len(buffer_items)
164
+ buf_key = f"draco_{buffer_view_index}"
165
+ buffer_items[buf_key] = compressed
166
+
167
+ # Build extension data with integer bufferView index
168
+ extension_data = {
169
+ "bufferView": buffer_view_index,
170
+ "attributes": dict(result["attributes"]), # Convert from nanobind dict
171
+ }
172
+
173
+ # Store in primitive extensions
174
+ if "extensions" not in primitive:
175
+ primitive["extensions"] = {}
176
+ primitive["extensions"]["KHR_draco_mesh_compression"] = extension_data
177
+
178
+ return extension_data
179
+
180
+
181
+ def _register_handlers():
182
+ """Register dracox handlers with trimesh's gltf extension system."""
183
+ try:
184
+ from trimesh.exchange.gltf.extensions import register_handler
185
+
186
+ # Register decode handler for import
187
+ register_handler("KHR_draco_mesh_compression", scope="primitive_preprocess")(
188
+ _draco_decode
189
+ )
190
+
191
+ # Register encode handler for export (only if encoder is available)
192
+ try:
193
+ from .dracox_ext import encode_draco_buffer # noqa: F401
194
+
195
+ register_handler("KHR_draco_mesh_compression", scope="primitive_export")(
196
+ _draco_encode
197
+ )
198
+ except ImportError:
199
+ # Encoder not available (decode-only build)
200
+ pass
201
+
202
+ except ImportError:
203
+ # trimesh not available, skip registration
204
+ pass
205
+
206
+
207
+ # Register on import
208
+ _register_handlers()
209
+
210
+ def handle_draco_primitive(primitive, views, access):
211
+ """
212
+ Handle KHR_draco_mesh_compression for a glTF primitive.
213
+
214
+ Parameters
215
+ ----------
216
+ primitive : dict
217
+ The primitive dict with extensions data
218
+ views : list
219
+ List of buffer views (bytes)
220
+ access : list
221
+ List of accessors (will be modified in-place)
222
+
223
+ Returns
224
+ -------
225
+ bool
226
+ True if successful, False otherwise
227
+ """
228
+ from .dracox_ext import decode_draco_buffer
229
+
230
+ ext_data = primitive.get("extensions", {}).get("KHR_draco_mesh_compression")
231
+ if ext_data is None:
232
+ return False
233
+
234
+ buffer_view_index = ext_data["bufferView"]
235
+ compressed_data = views[buffer_view_index]
236
+ attribute_map = [(name, id) for name, id in ext_data["attributes"].items()]
237
+
238
+ decompressed = decode_draco_buffer(compressed_data, attribute_map)
239
+
240
+ for attr_name in ext_data["attributes"].keys():
241
+ if attr_name in decompressed:
242
+ primitive["attributes"][attr_name] = len(access)
243
+ access.append(decompressed[attr_name])
244
+
245
+ if "indices" in primitive and "indices" in decompressed:
246
+ primitive["indices"] = len(access)
247
+ access.append(decompressed["indices"])
248
+
249
+ return True
250
+
251
+
252
+ __all__ = ["_draco_decode", "_draco_encode", "handle_draco_primitive"]
Binary file
@@ -0,0 +1,14 @@
1
+ Metadata-Version: 2.1
2
+ Name: dracox
3
+ Version: 0.0.1
4
+ Author-Email: Michael Dawson-Haggerty <mikedh@kerfed.com>
5
+ Requires-Python: >=3.9
6
+ Requires-Dist: numpy
7
+ Provides-Extra: test
8
+ Requires-Dist: pytest; extra == "test"
9
+ Requires-Dist: msgpack; extra == "test"
10
+ Requires-Dist: trimesh; extra == "test"
11
+ Requires-Dist: lxml; extra == "test"
12
+ Requires-Dist: networkx; extra == "test"
13
+ Requires-Dist: scipy; extra == "test"
14
+
@@ -0,0 +1,214 @@
1
+ bin/draco_decoder.exe,sha256=K3Oks_ZUCCAPakKY4aB7ztS_6P6A1ENt4OKieNBlUoM,401920
2
+ bin/draco_encoder.exe,sha256=kheeoT4bEJaonXhP-iKdHmV-43NCcBZF08s-WLYXops,680960
3
+ dracox/__init__.py,sha256=Mfwc4FWKVAkgRgVFuTDCjMZFW8Gien-2bCuQk6F4I3I,8431
4
+ dracox/dracox_ext.cp39-win_amd64.pyd,sha256=L0SLxzpvdqWAwcTGLchIqPgRXlTKddfhahZMDSnYCD8,596992
5
+ include/draco/animation/keyframe_animation.h,sha256=J-YLPNMjAJ2EwSLuhp-51e9uI_eSRcsxXtI77GmvDa4,4105
6
+ include/draco/animation/keyframe_animation_decoder.h,sha256=fgT_oPTvOPhHJ1_byipqtCSyOb5U4yWa8zYzO54rIog,1243
7
+ include/draco/animation/keyframe_animation_encoder.h,sha256=HouCaiWqzseH7VY9RzR-vzj6QpnghRer9jiOEu954hE,1576
8
+ include/draco/attributes/attribute_octahedron_transform.h,sha256=r7CYBKC0wB_mrSUkw0EFK1ySRDbiqEvhxjeo00kEtX8,3059
9
+ include/draco/attributes/attribute_quantization_transform.h,sha256=FjnRNqCniCqglrOi-JstCnR4TXZxCIE2w2RSmbtN6fg,4061
10
+ include/draco/attributes/attribute_transform.h,sha256=rZBKPp0FvZYJ4jZ-l45AjNgwiLPl0y_gklIcSTzjDEI,3322
11
+ include/draco/attributes/attribute_transform_data.h,sha256=rkggprtkmqWC7fz_g2C69KBFldcYt21KiLRhIjKySMQ,2706
12
+ include/draco/attributes/attribute_transform_type.h,sha256=C8bIR6W_hhuikrJyc6_a4lKq890prJ2PoTaaCHaN62s,1069
13
+ include/draco/attributes/geometry_attribute.h,sha256=wpkKm0246ex7oZWBcvBN2AASidHBJKZDALv9_t9EgxM,22744
14
+ include/draco/attributes/geometry_indices.h,sha256=hibfxekOafEvfjHzm9rb0fIfZZBjpWSYX-NyEZgdcxY,2038
15
+ include/draco/attributes/point_attribute.h,sha256=NgsaLPmp8UwoQvsxeVGEybaGff8Kr75D2a1IxAA4PeQ,8034
16
+ include/draco/compression/attributes/attributes_decoder.h,sha256=4GgJz4uhkIentZymhjj66yGx1c_hX5vyh-13AHqaq5o,3483
17
+ include/draco/compression/attributes/attributes_decoder_interface.h,sha256=KF5H7Y1Q9w-7Sap6Gg62CIxsnR5spgejfdSr-3c_-sc,2467
18
+ include/draco/compression/attributes/attributes_encoder.h,sha256=wEg35CHv8qh-fgFewH-4jtC2L99hNUYGOYrRq13pCiw,6030
19
+ include/draco/compression/attributes/kd_tree_attributes_decoder.h,sha256=-8gNS3yMn3G1SZqKpQFiEXZgRly96p-Ixj3LsWP9b0o,2000
20
+ include/draco/compression/attributes/kd_tree_attributes_encoder.h,sha256=QyuNpu1qyKCv5y-unM_YjmNAvsG_kUvtE_mRWP4I8Qw,2097
21
+ include/draco/compression/attributes/kd_tree_attributes_shared.h,sha256=Ady0yCbQrVLxPUZwe7wCfAi-AbqoiNR8e-qQZcDWopc,1013
22
+ include/draco/compression/attributes/linear_sequencer.h,sha256=lfr8uczSgS2cgoZo2XKn2KeslZegRXQmJ8y3JGMFC8E,1650
23
+ include/draco/compression/attributes/mesh_attribute_indices_encoding_data.h,sha256=516G0A7qhl84UN4RG_MRw4OW5O7IoyVzabupZqAiE-E,2401
24
+ include/draco/compression/attributes/normal_compression_utils.h,sha256=taB44RFe7CCtUNGH4cPcUXH5oUwA3yEseebB44VopWY,13856
25
+ include/draco/compression/attributes/point_d_vector.h,sha256=E8jQI7qsOL2FuoYO8IgjMjg3-JMZeMDaLHtSgRaXxKQ,10460
26
+ include/draco/compression/attributes/points_sequencer.h,sha256=Aw8hN1BENIs9cZhBwUicB_9NMP5Cy4LFTsC9uoS0tSg,2444
27
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_decoder.h,sha256=lUxF3ita2rDStgI5Vfg9Qab5n-TFs9cUqztB1CYgjVs,9658
28
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_encoder.h,sha256=0hg1E-bvoiWHOdezO2iJGZsTLfoKNb4AnooUQ7bOo90,18555
29
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_shared.h,sha256=ht4XqjDh_C5LEAyXqZQ5lNerh6bsqh52EnJgw7Bwf7g,1400
30
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h,sha256=208eKJE3wugm9LeJ9_a86ksCxDxw2YdA1z1wpwaCWBA,2653
31
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h,sha256=W7E81OqFLvNaTjUg4fYSct5yGjE-Hy7oqlgl6yvhdno,1937
32
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h,sha256=Mr_Wy7_vu_vEb5FKvV3YOJQbOrNVhdcczGKAHQ0FgHc,1937
33
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_decoder.h,sha256=4n9p5V7WpTL7VvLTDO3mJnyF849-vEbScUzJ_QKRKK0,6649
34
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_encoder.h,sha256=lW4fDgCf7jeivZT1SXHWElRTKNDtafWaApQYIWXQ0ek,7711
35
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor_area.h,sha256=C36_6tjUGTWQhKo_pckErdxNcw1-fMVfQRi7yy49SZQ,5045
36
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor_base.h,sha256=DH4JJQObd3nihpXQpOhGxbn4gYceBo03iuaZ_97YKds,3805
37
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_decoder.h,sha256=hc1vfL-VU_qtrIxbhn5dCF0oWcU9RlCjx4Sm0h_R8As,5544
38
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_encoder.h,sha256=ydghhs1EybCXU0uKVQVUqeESmpuPt2Ap2MD2ODFqKYA,6175
39
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_encoder.h,sha256=Jwmxjlf8VIXY8JaCDzHzWnhs1877RLNe6DhYuiRrhmc,5148
40
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h,sha256=CNKtRrdagNT5Fm7T0tpQwrvP4XJLmt2uGI_uWwlEWzg,3556
41
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_decoder.h,sha256=LEo52iVAK46zzbkoqDkZaqi3ml-yd7NkRxZ7VhZ2y-0,14968
42
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_encoder.h,sha256=F7rm2dbH1zopuA6UpUxjFiAJorfJtOBOylyMvY4btTg,13491
43
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_decoder.h,sha256=s6AehZLCJKsmAll3Jm91FEYxSMskhVRBtstquK99TsU,5894
44
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_encoder.h,sha256=DoVtAifEIaUlWPiBHGfPn5vF2E0k-fbOv6UxMKrIyOg,5977
45
+ include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_predictor.h,sha256=Pqy4YRiWBUrWNzuqxYilaWMIFIB2njHlF1wcCf8o-ZE,12012
46
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder.h,sha256=r2GiTRt2x9Id1I_rp7KOgFCNzhjj1lKlcbXS-Xpmj58,3668
47
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h,sha256=l4P2TXGkQ8Y7QSPp55FadaKkSDpvQDkucmeir8CXAXk,10020
48
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_interface.h,sha256=IAFjWKGR-ygsBLFrNXn-jg0Zwh5_g08pF75crnV5zL8,2473
49
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_decoding_transform.h,sha256=OWtUsbg7seaWM61JTZbtxUlqpQkG2RrHcRzbwp0pGNc,2786
50
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_decoder.h,sha256=NEH8F-7bz7x0E5_9Y9TZZG8HFbMpdZDh4mv9EkLYu1k,2957
51
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_encoder.h,sha256=js-GC73c7YOp-2igFdZJCvsqIHgK0iP87mhpiu6alAI,3255
52
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder.h,sha256=9Ac4zXkEkDTPejYy50FhPCUionsEpRepmcS_2q9Nn6w,3668
53
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h,sha256=LDTzssnZ8l9srbuyF89Q90Le1R1pHAl299dO0Cg9YFE,6988
54
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_interface.h,sha256=zI79ocRRnSp1OtIzArt7zLQNJsfxxJESvpoYbYwmth0,2604
55
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_encoding_transform.h,sha256=6EIeOQvZBvdJS02F6fj7b3YX1cUETQs8WFTtfGJBMZo,3171
56
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_factory.h,sha256=ErST2v78oF_rdQ-cotkoPB3CwtSNNs-nmKe0iJlLjuo,3830
57
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_interface.h,sha256=BFdOSESLBgwv1_wId4ewUyhABO_G5cXcgrQbguTHoUY,2535
58
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_decoding_transform.h,sha256=SwoKa0vLNukplX7G8BDZXWFsdLewSzFjK8SuwChdfIc,4516
59
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_encoding_transform.h,sha256=NXhSkVY1D_jTywTUJJ8bTLh0Ix4oRES0hpLuea3e4ZI,5195
60
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_base.h,sha256=Tzxe-HRK6bG1e9s81YHZP5_vcI7YBh91TS1cfsZii5s,3455
61
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_decoding_transform.h,sha256=0sYRWk1Zu-rak1ws0befYiED7BW6FsvADiqnX2_Vndk,4542
62
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_encoding_transform.h,sha256=tbcEUjIR-Lmz3d84-K-09-v59rbmJGEh22Z9ZboFXbw,4404
63
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_base.h,sha256=_-a0Rl-ZDxyzcHc33LUCW16Yzfvu36Jlvuu0YO173lk,3220
64
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_decoding_transform.h,sha256=prQvq6xPc1i2vKM8w-IFw64G-r495FmnpnqGZiifauU,3626
65
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_encoding_transform.h,sha256=nUUO6VvzigAL4AU6VhtZKpmfLikLw1ejGv4klCMxS7M,3251
66
+ include/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform_base.h,sha256=ElluvY7YPsqVqGP6XJaRngvEX7AHmmOgIiwOXZbveOc,4347
67
+ include/draco/compression/attributes/sequential_attribute_decoder.h,sha256=y4D15UnXuxd1ksQwohES03D1QmfrIZijNiDo4LUI498,3459
68
+ include/draco/compression/attributes/sequential_attribute_decoders_controller.h,sha256=EbfByjop-HqkJWz6pDBC1ji7rJuo6vrZAjHf1MTR1wE,2617
69
+ include/draco/compression/attributes/sequential_attribute_encoder.h,sha256=IHB7q8MQQSdsiztPUYDYQad0j48AIFUAzepzurYhXmE,5638
70
+ include/draco/compression/attributes/sequential_attribute_encoders_controller.h,sha256=dcAz3xtPPZ2lp4da5G3sGu42DAPLhRX0I_jKy-UHFYY,4734
71
+ include/draco/compression/attributes/sequential_integer_attribute_decoder.h,sha256=c0mGU-FC1X79ch0_p3JvAuVQg7E6KlCm9bhC5L59Uxs,3092
72
+ include/draco/compression/attributes/sequential_integer_attribute_encoder.h,sha256=R3-W8myZVcmPEP4Pt9DS9zp9Cy5a3qhyeOHdZsLqr6s,2724
73
+ include/draco/compression/attributes/sequential_normal_attribute_decoder.h,sha256=S-WYcrKb_vS8buxn4_miTvXBUgKZDYpx4DypsvfFnN4,3712
74
+ include/draco/compression/attributes/sequential_normal_attribute_encoder.h,sha256=7yuY7YQbgIU6SOX-1aSSTtRVwMah_N5LLCz7U70omak,3830
75
+ include/draco/compression/attributes/sequential_quantization_attribute_decoder.h,sha256=JHT-DeDyRMeZ4XjltWWKJxh8y2CmnOqVRFjAUl5xVlU,2063
76
+ include/draco/compression/attributes/sequential_quantization_attribute_encoder.h,sha256=8x9yvy3vD5hQONQy_ccLOm7TUGnLQvu4x7RmUHAuLzM,2016
77
+ include/draco/compression/bit_coders/adaptive_rans_bit_coding_shared.h,sha256=RpLIj8IRGulKJIqCzBINlXPQhSBSiJ7YSFuNtYawNfU,1590
78
+ include/draco/compression/bit_coders/adaptive_rans_bit_decoder.h,sha256=600E0y1Gdvw0i8_5KfI7cA2FmGW2QSKiiS1vSXrRAxc,1731
79
+ include/draco/compression/bit_coders/adaptive_rans_bit_encoder.h,sha256=vcHaG4b-9yiXrX5HATnJ3N8CJgbKLp_hp3GRaTPho0w,2023
80
+ include/draco/compression/bit_coders/direct_bit_decoder.h,sha256=Vn0k4FKYyUqGPOKLITJJElBvf81FpyKz38jHZRf8qPs,2692
81
+ include/draco/compression/bit_coders/direct_bit_encoder.h,sha256=L2m0iDpT9q-uI5bZkC66C-wMXFmCIpW3fsBgSrkJhqE,2779
82
+ include/draco/compression/bit_coders/folded_integer_bit_decoder.h,sha256=WTJp3clFr1xl1RdFy2nsRut6l85s7fvNQ5ojNbXNHQs,2412
83
+ include/draco/compression/bit_coders/folded_integer_bit_encoder.h,sha256=zZeIEgO0EqgwWNz8g5fL__b1nx0XzZaMKmSiHmcA3gg,2933
84
+ include/draco/compression/bit_coders/rans_bit_decoder.h,sha256=DfYcr3k1aHxnKnwEk1zFe-P1DdDMKX_KR2mU7ZdoaJs,1749
85
+ include/draco/compression/bit_coders/rans_bit_encoder.h,sha256=rbPx0UJC7d4xbVRU1aDsl5JtW-uXaIa3QUFv0R23csA,1921
86
+ include/draco/compression/bit_coders/symbol_bit_decoder.h,sha256=oE2NPT98Saxr9qNJK25tpxrVaRjGNyo9Wa3G2JWzC1U,1010
87
+ include/draco/compression/bit_coders/symbol_bit_encoder.h,sha256=2MKp6ImOS2qy8YcSTlPTe_vGvRCD3QOprrhhhfPLQ-0,1114
88
+ include/draco/compression/config/compression_shared.h,sha256=Lvi4M2pPW9WTgGhHKY5eLKovrv6aSwBC8jK5DTxX-i0,5484
89
+ include/draco/compression/config/decoder_options.h,sha256=Rex-OhbDMO5qMoRwyeb5jPncpKuSs1h7ntaCXltEBd8,1316
90
+ include/draco/compression/config/draco_options.h,sha256=FeLwuY-ppz6lx9_ZcIiJr_RwL6I4wYh3MrqAynPaB4s,10030
91
+ include/draco/compression/config/encoder_options.h,sha256=UV70H62jGwa6c3-xkpFYPx02dUfi0zCOFWnbDL0YRhc,3771
92
+ include/draco/compression/config/encoding_features.h,sha256=PU5TSrXStYRgXybDoN7hrEhDQ-29og8Gt4o49aoi-dM,1525
93
+ include/draco/compression/decode.h,sha256=bNeI8QlDd_3zw26OafWZkvJmWhnmn_7N6SNaJY1VDBg,3600
94
+ include/draco/compression/draco_compression_options.h,sha256=OtIcP_yZiTdYytKpbL_zKs6L0xVp6RtyWNgiOp42FG4,6104
95
+ include/draco/compression/encode.h,sha256=rbJPXhW2jXbpvmpmdqetgM3xFwNFQX2r4Cubr0xaitM,6725
96
+ include/draco/compression/encode_base.h,sha256=RsPnE8KRH8nuC1uH93eBQx8XXNNM9MMXYkhDHSOHmyg,4991
97
+ include/draco/compression/entropy/ans.h,sha256=KoLJPMtdPYuDLsMdPskhodVssbO28CktwZsTKPYS7FI,16316
98
+ include/draco/compression/entropy/rans_symbol_coding.h,sha256=NBnilzly8xrODd7Exv-anl_Upj7EP8Hf20Y1T2ii5gA,2255
99
+ include/draco/compression/entropy/rans_symbol_decoder.h,sha256=tsXTudMVBhXm5BMVNwkWm3RhHVpPSpfv6olWYXoXzsQ,5911
100
+ include/draco/compression/entropy/rans_symbol_encoder.h,sha256=jpBboMREfWLkuqawzP8lCP0p8pdrRtiuaq3Nr-aRCCA,11272
101
+ include/draco/compression/entropy/shannon_entropy.h,sha256=juyNtW24mf0UQ4Pyr8Tc5s_cUVePYcqIoQNhmyQGb28,4455
102
+ include/draco/compression/entropy/symbol_decoding.h,sha256=HyAhf_-CRyUvuUzApEAVfZt1blEMrH4C2FuxfxAKAsc,1111
103
+ include/draco/compression/entropy/symbol_encoding.h,sha256=nyfjbKkDyq9FchcOrHgOyfUGVJ8YnJ-WQSGXHQL54TA,2200
104
+ include/draco/compression/expert_encode.h,sha256=zCnDeukpbSKrj9WSI0ZQyhpox6u2BjmGP7mhvHInn9M,7566
105
+ include/draco/compression/mesh/mesh_decoder.h,sha256=oQoM_kcA8me9eG_1yiyaDxYK6vPKUgM3GQSF1CIl2yc,2250
106
+ include/draco/compression/mesh/mesh_edgebreaker_decoder.h,sha256=CoeFM-1ELWdToccbNrjIDUgI4HzOWcTFYb_XL0MR7sc,1852
107
+ include/draco/compression/mesh/mesh_edgebreaker_decoder_impl.h,sha256=aYJ6HNe4eJ2w0tyC2fOATGLB7soyCJUesttvOIY42dE,9813
108
+ include/draco/compression/mesh/mesh_edgebreaker_decoder_impl_interface.h,sha256=ZJDoZ4RTTFBDpeBmJ0IqJHe8xShSyWMq2y2-FSM8JrE,1929
109
+ include/draco/compression/mesh/mesh_edgebreaker_encoder.h,sha256=5kwZKL9Y6GXn9F381gB-Wq2jSZkGetFUbKmJrUQ635E,2856
110
+ include/draco/compression/mesh/mesh_edgebreaker_encoder_impl.h,sha256=Qn1DeL8zgkW8jI5wjiYOeJOgb_EOSWGrovizDqgCKAY,9204
111
+ include/draco/compression/mesh/mesh_edgebreaker_encoder_impl_interface.h,sha256=JSOCam4cCrN1ksrTO8bCuisBBzoOnpepqDX2hukKKoI,2492
112
+ include/draco/compression/mesh/mesh_edgebreaker_shared.h,sha256=h66FerkfqTLzEMBcQkTkkn369EN5XVshrG3mZJyAHuY,5486
113
+ include/draco/compression/mesh/mesh_edgebreaker_traversal_decoder.h,sha256=V8zChQdPp7PhpnZEHsCC_l_AWPBn1GnCt_t4zoc0vcU,6853
114
+ include/draco/compression/mesh/mesh_edgebreaker_traversal_encoder.h,sha256=tqC5yZsnzf5zq1ZhUo1bEamsVtUqkGS6lNJkrpmHBJY,5237
115
+ include/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h,sha256=fkLfMAi1kXfLoQzrUQ7EnHzmGDMTTHrRkIFhKem-Jv0,4979
116
+ include/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h,sha256=Lc_yRksHXx9Agd7ouRYQPteoXMeUmlJf5NaQh0j-njY,7200
117
+ include/draco/compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h,sha256=kDkFynkGO2eI-LBMim___AlrpJMYnupLd_ji7sw_TRg,7457
118
+ include/draco/compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h,sha256=PUULDddjd_zN3vfWtqW4sD7flj_j3HexQ4EV1R-oIXU,9269
119
+ include/draco/compression/mesh/mesh_encoder.h,sha256=g7L7hY-ghosY7_tVo1h9OS79kFReNVoqR9cPiZZJDVQ,2893
120
+ include/draco/compression/mesh/mesh_sequential_decoder.h,sha256=RnnXJeF4Voa-roJ6AkYUX9iP5sTWpXTobUUTgF_Z9-I,1340
121
+ include/draco/compression/mesh/mesh_sequential_encoder.h,sha256=4RHE-sbos-HaC9sGngR48xJEzRWAsiDikh2lHqtUSlw,2138
122
+ include/draco/compression/mesh/traverser/depth_first_traverser.h,sha256=GTGX_AX-Xn3nHxxim-e1aBrl4EU-Nqf9wdZ1AZShlyM,6827
123
+ include/draco/compression/mesh/traverser/max_prediction_degree_traverser.h,sha256=_UdL6Nnjg5yhngxZnT5kgUicar_V4zSLtaNDvbdwCMY,9191
124
+ include/draco/compression/mesh/traverser/mesh_attribute_indices_encoding_observer.h,sha256=LdUNQ5g2I2YMd3BQ8Dt4gRQKpcPtD-AJ_kle29irgqw,2890
125
+ include/draco/compression/mesh/traverser/mesh_traversal_sequencer.h,sha256=ttp7xoXataCbQaS9h9TDE3bpxivPqL39AfH9rfT2fao,4607
126
+ include/draco/compression/mesh/traverser/traverser_base.h,sha256=iF5uaF5BZjO9sXC4S83a4tyYCYixuyF2zpZHZnSuSmo,3198
127
+ include/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.h,sha256=pZCIhr7MNM65q9pRquY2_kRPDFKznS_0Kq8PyoqiiTM,12579
128
+ include/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.h,sha256=JjQZ3TcxJ_qNcMTScIpyFwOr8Bu8-0bd9-cmxhwiqyI,13938
129
+ include/draco/compression/point_cloud/algorithms/float_points_tree_decoder.h,sha256=ZDxRSpjMXHozrmDPZuMPC2bBmaasc4xk5FpapJvI6P4,4940
130
+ include/draco/compression/point_cloud/algorithms/float_points_tree_encoder.h,sha256=5GwGnDkN0K4MFcmtdrT4Mq5VxMHwiWY1jVfY69Yhcew,4926
131
+ include/draco/compression/point_cloud/algorithms/point_cloud_compression_method.h,sha256=3DNhl8ytnSiD1ZGYib0rIzxTgf37NYDd0c03xYtHhQc,1483
132
+ include/draco/compression/point_cloud/algorithms/point_cloud_types.h,sha256=Pqms9kTm3rC_2S3J8C4qjBhBAGLL3R0UyRdFmlUxdX4,2261
133
+ include/draco/compression/point_cloud/algorithms/quantize_points_3.h,sha256=5xcYJYnEv9Z56JbKoJIq4OGyIwRVczvSD6_t8MkLDMk,3046
134
+ include/draco/compression/point_cloud/algorithms/queuing_policy.h,sha256=5mggmGylljPp4QxUftZ1WDhAUit48AEtDluSVW2NthY,2439
135
+ include/draco/compression/point_cloud/point_cloud_decoder.h,sha256=VpY3aPGe-GRuwMU0opck78flkl7-pDHQqm_3PuFdowY,4507
136
+ include/draco/compression/point_cloud/point_cloud_encoder.h,sha256=grtCZah3b2C55BKJqOSwOXf3nzbieDIwWN-q_J2me8M,6415
137
+ include/draco/compression/point_cloud/point_cloud_kd_tree_decoder.h,sha256=hG1cqaAMsF_5-bI_zoD5dvkkVczSO-ybaIkBMvpWekw,1189
138
+ include/draco/compression/point_cloud/point_cloud_kd_tree_encoder.h,sha256=bwQ0i2tC9ccWoNHp8ziZ0scF0w36I5E2A7dp-Xtvwdg,1887
139
+ include/draco/compression/point_cloud/point_cloud_sequential_decoder.h,sha256=AIbVcEaHNq4uvJIJf0FbEvkkaQOkkTOxqLIH8z9kxj0,1324
140
+ include/draco/compression/point_cloud/point_cloud_sequential_encoder.h,sha256=E2nSgcINbD9A7ZisCfIZ9UPBNjJ3Raz5WIIZrCkYzJs,1744
141
+ include/draco/core/bit_utils.h,sha256=23sUu4tZR9Ip96UwFnwCViG5wJ19tOUge8LzzHvFT0g,4538
142
+ include/draco/core/bounding_box.h,sha256=-7yAveTKSsUJkVf6gxg6xbaTWqeR48fxrXjdNqW0beM,2789
143
+ include/draco/core/constants.h,sha256=-CTF1XIsQrewJXqZpIdcj0TaIu1YiIIV-kKcrpVhfi0,147
144
+ include/draco/core/cycle_timer.h,sha256=NDCSk9UpTQsS1jGGBD-vZQR8FMwaB-5xY9cOIAHGUzM,1253
145
+ include/draco/core/data_buffer.h,sha256=xEl2ZvosAc_dIjpJ2P8UkaRENENZBQ3-PAR-ad8z4Ns,2944
146
+ include/draco/core/decoder_buffer.h,sha256=li-S5p9fHltBMT8noTCNgBUMTyCOdBiVbjTpFbeQVkA,6954
147
+ include/draco/core/divide.h,sha256=4BHiojeXHtyeyAoqNj1vjXjfBkqMFommLr1GwAYn2Dk,1273
148
+ include/draco/core/draco_index_type.h,sha256=iCnvuX6iagaUK4IGwUE1Mj-SmOO6VCIo1TxhMiz2bD8,5842
149
+ include/draco/core/draco_index_type_vector.h,sha256=kQBrhca6F8sIqOptGFpugD0Fcu8L1zRMDbHAiSdJ79s,3300
150
+ include/draco/core/draco_types.h,sha256=PqN0NP9cIMZyFMWkVkmrZK3jdtrWlo4BwdA9W7d8AWg,1385
151
+ include/draco/core/draco_version.h,sha256=02728FnMblIVLFIipi4zrWPEokyZaPsoYcgpJYCDzaw,885
152
+ include/draco/core/encoder_buffer.h,sha256=XwZU8K9yDpplYhijxLTRHPiyohvr27i-Ia_7XkbKLw8,5420
153
+ include/draco/core/hash_utils.h,sha256=OJYJX0wnC0B9b-S6Qdt_uRfGTM9RMNQXrJCMuN_tjVM,1780
154
+ include/draco/core/macros.h,sha256=Qnt-ZosRgzqtS2x5ALjXYdQu1cZfgX_sIplvsUDMKbs,4136
155
+ include/draco/core/math_utils.h,sha256=7zAqXLTrnKn4Cmz8c1vxIT9bP2wRC7Sbz2yQYMNi5_k,3165
156
+ include/draco/core/options.h,sha256=x9vWvmk3b-pm4JwRGGWTLzXl3T0bC0x91mjIJy2ZHro,5242
157
+ include/draco/core/quantization_utils.h,sha256=CQPybD_yH1NryQp_fK2C-RwfbocTt7WOvThRVF8I0eQ,2973
158
+ include/draco/core/status.h,sha256=nLKSlkp-zUPBYo7uQME0nE0r6KQiJDuzD1PeS_nGbsw,3010
159
+ include/draco/core/status_or.h,sha256=jg_C6mz0yOQeGEGoY4OGRfM1Db2iHjRCd8Wa9_1ddQw,3433
160
+ include/draco/core/varint_decoding.h,sha256=PVrUl59-PhDwc-G0GdoAqyF_BJdhl3CgKVHUo2OPBE0,2542
161
+ include/draco/core/varint_encoding.h,sha256=WAALgHFnwRxZGtmddZnvn5vzqonE31iumC_iED8M6eA,1881
162
+ include/draco/core/vector_d.h,sha256=BlC5jY_KfbAGIFOOeFMnQ_rUf95dUi5pbPMXqgxj5Bc,9866
163
+ include/draco/draco_features.h,sha256=AiOLSiN6P5jtaoeLr9fALRYwxla2rTdNDPhh3NhyCDM,856
164
+ include/draco/io/file_reader_factory.h,sha256=doTtSgPjSML7ONnwXiL1yKx0hjntByGnLFXh2lHFkxg,1054
165
+ include/draco/io/file_reader_interface.h,sha256=1ZTj-tsZiKXtPe2UGxskzhf6WWy3z_mPCFGMYulBi1o,948
166
+ include/draco/io/file_utils.h,sha256=3GB951hIcGnVck6BURJQSliPlnLK7gt0OeZfe8AiGik,4079
167
+ include/draco/io/file_writer_factory.h,sha256=jpOakhMnN2TbtNKSjtMukwbxpH_HmO-0_ekyz85hD6M,1054
168
+ include/draco/io/file_writer_interface.h,sha256=boYaUbTQMDQm6lLvdHXgw_ALJQO4SzNobWVQcf8m3EE,728
169
+ include/draco/io/file_writer_utils.h,sha256=Kw5-pfwaAS9toCaLgECNCOH5rvzLBuRAP7p7ZusjWOc,1487
170
+ include/draco/io/mesh_io.h,sha256=m990YFhe14dhFRNjsEC44VjAVnsKMgtztUz2uaVoNSA,4164
171
+ include/draco/io/obj_decoder.h,sha256=5Ok_45XsNzJ_dtSsm09c9ZYVzC55L3ZjX52WcPbaLRA,5367
172
+ include/draco/io/obj_encoder.h,sha256=UdiQUioIGEX6iyJL7P__MLG8rKr91RMwe0PBShepIxs,3714
173
+ include/draco/io/parser_utils.h,sha256=c0QixlAea1dfIz9jrxZ_J3jGbZKZuEbOzI4-FR3Rbks,2415
174
+ include/draco/io/ply_decoder.h,sha256=QmgL_vSI_Z72iuKS3JULfzvpm8mjc8qyXRCa7-7YlP4,2405
175
+ include/draco/io/ply_encoder.h,sha256=zVCZpQY88s-exGfWRN3UOFaCPHX2ztzkaUMUvFt_V_0,1783
176
+ include/draco/io/ply_property_reader.h,sha256=p4AzyaUEuMzK6c15RXHFe3wqzuE7lGQr9aCJXm5EKqs,2996
177
+ include/draco/io/ply_property_writer.h,sha256=6SOMGt3-9UPb7L9NQrLdKz9ADX3wnqv5C7RDEKgAM7Q,2894
178
+ include/draco/io/ply_reader.h,sha256=Ob82x2TZAIrZf49Itaejetj-CAq7xvErUEmnZ8W4pxk,5537
179
+ include/draco/io/point_cloud_io.h,sha256=6ngVySx2hYwYkRYurmd_47IafbBso1WsA7rgyufZtAs,3286
180
+ include/draco/io/stdio_file_reader.h,sha256=pJ5P3XlYo6-ar2AZfWSCZ73MNbx1PLwvPs8i-28NBPs,1369
181
+ include/draco/io/stdio_file_writer.h,sha256=CDl7Aomt71DNM_IweVnGoa5MlH1CmvdLhwmkvUZW3Zk,1182
182
+ include/draco/io/stl_decoder.h,sha256=Ql6Y6xMgOxvhbBDiB_viNZwn3ECnum4Yd8uCItZcNSw,1259
183
+ include/draco/io/stl_encoder.h,sha256=0r060iKrBnybBVFUhr9Qgq_ch89SJvfe9r3FT7HYGT8,1543
184
+ include/draco/mesh/corner_table.h,sha256=JB8HfXm8UWt5DgFK1ZDPrVl53kSbRMPp6diRnafta6M,14794
185
+ include/draco/mesh/corner_table_iterators.h,sha256=E8tJ_Y6oywmlK9VHAFzPm44YlyafsbEpQt8De9YOXtM,10373
186
+ include/draco/mesh/mesh.h,sha256=AFP8HF90HeUipuQvZzSdvGFlZDZ5ZOyTJt0oQQpeLnM,15715
187
+ include/draco/mesh/mesh_are_equivalent.h,sha256=FgrnrfDvThXWRXqbFMlXQoMIh-dDWsdJtSn_UQEMqMw,2608
188
+ include/draco/mesh/mesh_attribute_corner_table.h,sha256=YA1GROVHH4mHGRszsCYJ8dItGhdLQ4vyQZZr9s7sQJU,7882
189
+ include/draco/mesh/mesh_cleanup.h,sha256=bE-DQi1M_g5KuJO3j3Wm1EaZV6l9yW0bNIhMUMWpGhI,2322
190
+ include/draco/mesh/mesh_features.h,sha256=muw6GvLBXlenfjw7tOySd1pVRsB5mhP_m0yn2EztoVM,3645
191
+ include/draco/mesh/mesh_indices.h,sha256=m9TRk-vokwfNF4lqP_So4DOeQykWByumgqmWFMTH4Hc,1181
192
+ include/draco/mesh/mesh_misc_functions.h,sha256=yT5VDUaJnhu2CGCySviaJlu32Gu1aG7AYmicewiIcLE,4087
193
+ include/draco/mesh/mesh_stripifier.h,sha256=A4Swyh5ByNPbFGqYd4NrZnXp5epH8GTtI8Wl9giImcY,10073
194
+ include/draco/mesh/triangle_soup_mesh_builder.h,sha256=DlrYGgn4bUL-7vtVSciqM4nogDqBNtR04E_PRwxbEs0,5508
195
+ include/draco/mesh/valence_cache.h,sha256=UY0RNlv_379wkTnZZuht99-9uzl0uBV-quXPDUx8wJg,5769
196
+ include/draco/metadata/geometry_metadata.h,sha256=na-d1bQ-_nOrSqVwWCSDTcB7Oyo2kFV_dclPmF9kL9k,4765
197
+ include/draco/metadata/metadata.h,sha256=BzeaNkIlo7DbUnV_8xvb-9DUWw63gNVLDDTc7tZTtJ0,7624
198
+ include/draco/metadata/metadata_decoder.h,sha256=W1U_6LXeIo-PUOfjYHOIIs-D2H8wwjYnkVwOUqrz7YU,1417
199
+ include/draco/metadata/metadata_encoder.h,sha256=5MJls1q0J2bABbQaMnrln3AEmOGq-BH31M7XnXLAy4c,1531
200
+ include/draco/metadata/property_attribute.h,sha256=9tk9-i5khW-7ieuleS-mooMU-DnjIz4fjb7hMz0Uylw,3447
201
+ include/draco/metadata/property_table.h,sha256=EbRI1MT42r1Ch6XxGq5wmmWDfScDLmO8ncz67lm3gK8,7754
202
+ include/draco/metadata/structural_metadata.h,sha256=1KVOk4mKXN57rOfUwJx9AtO0mnur1U5xJbd2UtdXXZw,2621
203
+ include/draco/metadata/structural_metadata_schema.h,sha256=-NGQhpTWP3i-NrDqAsCr9gViJASbTzVnh1_F-bBytJA,4173
204
+ include/draco/point_cloud/point_cloud.h,sha256=XLcv-2mML_Kt_Mwjry8oRYXvJIs0y9M53GrXRZj0BLM,11688
205
+ include/draco/point_cloud/point_cloud_builder.h,sha256=PLMMQU4_c4eyWABK5SGU-tVxDZS4KYFewiUVo1Jloqc,4169
206
+ lib/draco.lib,sha256=7zdfyk-ZX2EWrtYz2k1bDzclYmbzkT2jUJOOByVq9Tw,10843686
207
+ lib/pkgconfig/draco.pc,sha256=yWfyE1lWo5oFptJj5pKFgtxOtKREFZyh01rUH81rMdw,133
208
+ share/cmake/draco/draco-config-version.cmake,sha256=eVBhoAkxsUnZdaCz1kMci4UnpAqg3_vgz6m7htBsrmk,1904
209
+ share/cmake/draco/draco-config.cmake,sha256=FgH9l7qcd-VANcHNRjDbva0pN_UvwOijkXQGHO3xCHw,970
210
+ share/cmake/draco/draco-targets-release.cmake,sha256=goHU73YANa0D5pjIsCfu8odOGcsSqstt6EJ0km4Il-Y,848
211
+ share/cmake/draco/draco-targets.cmake,sha256=j1EYbY5sXzVtRvEUgcl1-RsL88yPkrsSWamYz-wwYag,4257
212
+ dracox-0.0.1.dist-info/METADATA,sha256=PFZdvoifesqwZTJhUD5ehCOtw72pTx8pykmZ6Ha1NdM,409
213
+ dracox-0.0.1.dist-info/WHEEL,sha256=9tsL4JT94eZPTkcS3bNng2riasYJMxXndrO9CxUfJHs,104
214
+ dracox-0.0.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: scikit-build-core 0.11.6
3
+ Root-Is-Purelib: false
4
+ Tag: cp39-cp39-win_amd64
5
+
@@ -0,0 +1,107 @@
1
+ // Copyright 2017 The Draco Authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ //
15
+ #ifndef DRACO_ANIMATION_KEYFRAME_ANIMATION_H_
16
+ #define DRACO_ANIMATION_KEYFRAME_ANIMATION_H_
17
+
18
+ #include <vector>
19
+
20
+ #include "draco/point_cloud/point_cloud.h"
21
+
22
+ namespace draco {
23
+
24
+ // Class for holding keyframe animation data. It will have two or more
25
+ // attributes as a point cloud. The first attribute is always the timestamp
26
+ // of the animation. Each KeyframeAnimation could have multiple animations with
27
+ // the same number of frames. Each animation will be treated as a point
28
+ // attribute.
29
+ class KeyframeAnimation : public PointCloud {
30
+ public:
31
+ // Force time stamp to be float type.
32
+ using TimestampType = float;
33
+
34
+ KeyframeAnimation();
35
+
36
+ // Animation must have only one timestamp attribute.
37
+ // This function must be called before adding any animation data.
38
+ // Returns false if timestamp already exists.
39
+ bool SetTimestamps(const std::vector<TimestampType> &timestamp);
40
+
41
+ // Returns an id for the added animation data. This id will be used to
42
+ // identify this animation.
43
+ // Returns -1 if error, e.g. number of frames is not consistent.
44
+ // Type |T| should be consistent with |DataType|, e.g:
45
+ // float - DT_FLOAT32,
46
+ // int32_t - DT_INT32, ...
47
+ template <typename T>
48
+ int32_t AddKeyframes(DataType data_type, uint32_t num_components,
49
+ const std::vector<T> &data);
50
+
51
+ const PointAttribute *timestamps() const {
52
+ return GetAttributeByUniqueId(kTimestampId);
53
+ }
54
+ const PointAttribute *keyframes(int32_t animation_id) const {
55
+ return GetAttributeByUniqueId(animation_id);
56
+ }
57
+
58
+ // Number of frames should be equal to number points in the point cloud.
59
+ void set_num_frames(int32_t num_frames) { set_num_points(num_frames); }
60
+ int32_t num_frames() const { return static_cast<int32_t>(num_points()); }
61
+
62
+ int32_t num_animations() const { return num_attributes() - 1; }
63
+
64
+ private:
65
+ // Attribute id of timestamp is fixed to 0.
66
+ static constexpr int32_t kTimestampId = 0;
67
+ };
68
+
69
+ template <typename T>
70
+ int32_t KeyframeAnimation::AddKeyframes(DataType data_type,
71
+ uint32_t num_components,
72
+ const std::vector<T> &data) {
73
+ // TODO(draco-eng): Verify T is consistent with |data_type|.
74
+ if (num_components == 0) {
75
+ return -1;
76
+ }
77
+ // If timestamps is not added yet, then reserve attribute 0 for timestamps.
78
+ if (!num_attributes()) {
79
+ // Add a temporary attribute with 0 points to fill attribute id 0.
80
+ std::unique_ptr<PointAttribute> temp_att =
81
+ std::unique_ptr<PointAttribute>(new PointAttribute());
82
+ temp_att->Init(GeometryAttribute::GENERIC, num_components, data_type, false,
83
+ 0);
84
+ this->AddAttribute(std::move(temp_att));
85
+
86
+ set_num_frames(data.size() / num_components);
87
+ }
88
+
89
+ if (data.size() != num_components * num_frames()) {
90
+ return -1;
91
+ }
92
+
93
+ std::unique_ptr<PointAttribute> keyframe_att =
94
+ std::unique_ptr<PointAttribute>(new PointAttribute());
95
+ keyframe_att->Init(GeometryAttribute::GENERIC, num_components, data_type,
96
+ false, num_frames());
97
+ const size_t stride = num_components;
98
+ for (PointIndex i(0); i < num_frames(); ++i) {
99
+ keyframe_att->SetAttributeValue(keyframe_att->mapped_index(i),
100
+ &data[i.value() * stride]);
101
+ }
102
+ return this->AddAttribute(std::move(keyframe_att));
103
+ }
104
+
105
+ } // namespace draco
106
+
107
+ #endif // DRACO_ANIMATION_KEYFRAME_ANIMATION_H_
@@ -0,0 +1,34 @@
1
+ // Copyright 2017 The Draco Authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ //
15
+ #ifndef DRACO_ANIMATION_KEYFRAME_ANIMATION_DECODER_H_
16
+ #define DRACO_ANIMATION_KEYFRAME_ANIMATION_DECODER_H_
17
+
18
+ #include "draco/animation/keyframe_animation.h"
19
+ #include "draco/compression/point_cloud/point_cloud_sequential_decoder.h"
20
+
21
+ namespace draco {
22
+
23
+ // Class for decoding keyframe animation.
24
+ class KeyframeAnimationDecoder : private PointCloudSequentialDecoder {
25
+ public:
26
+ KeyframeAnimationDecoder(){};
27
+
28
+ Status Decode(const DecoderOptions &options, DecoderBuffer *in_buffer,
29
+ KeyframeAnimation *animation);
30
+ };
31
+
32
+ } // namespace draco
33
+
34
+ #endif // DRACO_ANIMATION_KEYFRAME_ANIMATION_DECODER_H_