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.
- bin/draco_decoder.exe +0 -0
- bin/draco_encoder.exe +0 -0
- dracox/__init__.py +252 -0
- dracox/dracox_ext.cp39-win_amd64.pyd +0 -0
- dracox-0.0.1.dist-info/METADATA +14 -0
- dracox-0.0.1.dist-info/RECORD +214 -0
- dracox-0.0.1.dist-info/WHEEL +5 -0
- include/draco/animation/keyframe_animation.h +107 -0
- include/draco/animation/keyframe_animation_decoder.h +34 -0
- include/draco/animation/keyframe_animation_encoder.h +39 -0
- include/draco/attributes/attribute_octahedron_transform.h +81 -0
- include/draco/attributes/attribute_quantization_transform.h +102 -0
- include/draco/attributes/attribute_transform.h +76 -0
- include/draco/attributes/attribute_transform_data.h +71 -0
- include/draco/attributes/attribute_transform_type.h +30 -0
- include/draco/attributes/geometry_attribute.h +541 -0
- include/draco/attributes/geometry_indices.h +54 -0
- include/draco/attributes/point_attribute.h +196 -0
- include/draco/compression/attributes/attributes_decoder.h +97 -0
- include/draco/compression/attributes/attributes_decoder_interface.h +62 -0
- include/draco/compression/attributes/attributes_encoder.h +154 -0
- include/draco/compression/attributes/kd_tree_attributes_decoder.h +50 -0
- include/draco/compression/attributes/kd_tree_attributes_encoder.h +51 -0
- include/draco/compression/attributes/kd_tree_attributes_shared.h +28 -0
- include/draco/compression/attributes/linear_sequencer.h +51 -0
- include/draco/compression/attributes/mesh_attribute_indices_encoding_data.h +58 -0
- include/draco/compression/attributes/normal_compression_utils.h +372 -0
- include/draco/compression/attributes/point_d_vector.h +288 -0
- include/draco/compression/attributes/points_sequencer.h +63 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_decoder.h +236 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_encoder.h +413 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_shared.h +34 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h +72 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h +46 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h +46 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_decoder.h +176 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_encoder.h +180 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor_area.h +117 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor_base.h +96 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_decoder.h +128 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_encoder.h +133 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_encoder.h +111 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h +78 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_decoder.h +372 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_encoder.h +318 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_decoder.h +143 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_encoder.h +136 -0
- include/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_predictor.h +282 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder.h +90 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h +194 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_interface.h +53 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_decoding_transform.h +65 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_decoder.h +65 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_encoder.h +69 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder.h +90 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h +134 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_interface.h +55 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_encoding_transform.h +77 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_factory.h +85 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_interface.h +60 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_decoding_transform.h +118 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_encoding_transform.h +116 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_base.h +102 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_decoding_transform.h +115 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_encoding_transform.h +105 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_base.h +90 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_decoding_transform.h +88 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_encoding_transform.h +81 -0
- include/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform_base.h +120 -0
- include/draco/compression/attributes/sequential_attribute_decoder.h +86 -0
- include/draco/compression/attributes/sequential_attribute_decoders_controller.h +61 -0
- include/draco/compression/attributes/sequential_attribute_encoder.h +134 -0
- include/draco/compression/attributes/sequential_attribute_encoders_controller.h +115 -0
- include/draco/compression/attributes/sequential_integer_attribute_decoder.h +76 -0
- include/draco/compression/attributes/sequential_integer_attribute_encoder.h +67 -0
- include/draco/compression/attributes/sequential_normal_attribute_decoder.h +83 -0
- include/draco/compression/attributes/sequential_normal_attribute_encoder.h +82 -0
- include/draco/compression/attributes/sequential_quantization_attribute_decoder.h +52 -0
- include/draco/compression/attributes/sequential_quantization_attribute_encoder.h +52 -0
- include/draco/compression/bit_coders/adaptive_rans_bit_coding_shared.h +43 -0
- include/draco/compression/bit_coders/adaptive_rans_bit_decoder.h +54 -0
- include/draco/compression/bit_coders/adaptive_rans_bit_encoder.h +61 -0
- include/draco/compression/bit_coders/direct_bit_decoder.h +89 -0
- include/draco/compression/bit_coders/direct_bit_encoder.h +89 -0
- include/draco/compression/bit_coders/folded_integer_bit_decoder.h +77 -0
- include/draco/compression/bit_coders/folded_integer_bit_encoder.h +82 -0
- include/draco/compression/bit_coders/rans_bit_decoder.h +55 -0
- include/draco/compression/bit_coders/rans_bit_encoder.h +57 -0
- include/draco/compression/bit_coders/symbol_bit_decoder.h +36 -0
- include/draco/compression/bit_coders/symbol_bit_encoder.h +36 -0
- include/draco/compression/config/compression_shared.h +155 -0
- include/draco/compression/config/decoder_options.h +34 -0
- include/draco/compression/config/draco_options.h +249 -0
- include/draco/compression/config/encoder_options.h +101 -0
- include/draco/compression/config/encoding_features.h +39 -0
- include/draco/compression/decode.h +80 -0
- include/draco/compression/draco_compression_options.h +141 -0
- include/draco/compression/encode.h +139 -0
- include/draco/compression/encode_base.h +131 -0
- include/draco/compression/entropy/ans.h +526 -0
- include/draco/compression/entropy/rans_symbol_coding.h +53 -0
- include/draco/compression/entropy/rans_symbol_decoder.h +171 -0
- include/draco/compression/entropy/rans_symbol_encoder.h +290 -0
- include/draco/compression/entropy/shannon_entropy.h +110 -0
- include/draco/compression/entropy/symbol_decoding.h +29 -0
- include/draco/compression/entropy/symbol_encoding.h +47 -0
- include/draco/compression/expert_encode.h +160 -0
- include/draco/compression/mesh/mesh_decoder.h +68 -0
- include/draco/compression/mesh/mesh_edgebreaker_decoder.h +54 -0
- include/draco/compression/mesh/mesh_edgebreaker_decoder_impl.h +228 -0
- include/draco/compression/mesh/mesh_edgebreaker_decoder_impl_interface.h +47 -0
- include/draco/compression/mesh/mesh_edgebreaker_encoder.h +73 -0
- include/draco/compression/mesh/mesh_edgebreaker_encoder_impl.h +209 -0
- include/draco/compression/mesh/mesh_edgebreaker_encoder_impl_interface.h +57 -0
- include/draco/compression/mesh/mesh_edgebreaker_shared.h +129 -0
- include/draco/compression/mesh/mesh_edgebreaker_traversal_decoder.h +201 -0
- include/draco/compression/mesh/mesh_edgebreaker_traversal_encoder.h +139 -0
- include/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h +134 -0
- include/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h +172 -0
- include/draco/compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h +219 -0
- include/draco/compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h +226 -0
- include/draco/compression/mesh/mesh_encoder.h +84 -0
- include/draco/compression/mesh/mesh_sequential_decoder.h +39 -0
- include/draco/compression/mesh/mesh_sequential_encoder.h +56 -0
- include/draco/compression/mesh/traverser/depth_first_traverser.h +172 -0
- include/draco/compression/mesh/traverser/max_prediction_degree_traverser.h +226 -0
- include/draco/compression/mesh/traverser/mesh_attribute_indices_encoding_observer.h +76 -0
- include/draco/compression/mesh/traverser/mesh_traversal_sequencer.h +113 -0
- include/draco/compression/mesh/traverser/traverser_base.h +87 -0
- include/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.h +369 -0
- include/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.h +372 -0
- include/draco/compression/point_cloud/algorithms/float_points_tree_decoder.h +141 -0
- include/draco/compression/point_cloud/algorithms/float_points_tree_encoder.h +126 -0
- include/draco/compression/point_cloud/algorithms/point_cloud_compression_method.h +34 -0
- include/draco/compression/point_cloud/algorithms/point_cloud_types.h +76 -0
- include/draco/compression/point_cloud/algorithms/quantize_points_3.h +84 -0
- include/draco/compression/point_cloud/algorithms/queuing_policy.h +75 -0
- include/draco/compression/point_cloud/point_cloud_decoder.h +118 -0
- include/draco/compression/point_cloud/point_cloud_encoder.h +158 -0
- include/draco/compression/point_cloud/point_cloud_kd_tree_decoder.h +31 -0
- include/draco/compression/point_cloud/point_cloud_kd_tree_encoder.h +45 -0
- include/draco/compression/point_cloud/point_cloud_sequential_decoder.h +33 -0
- include/draco/compression/point_cloud/point_cloud_sequential_encoder.h +43 -0
- include/draco/core/bit_utils.h +127 -0
- include/draco/core/bounding_box.h +77 -0
- include/draco/core/constants.h +6 -0
- include/draco/core/cycle_timer.h +51 -0
- include/draco/core/data_buffer.h +82 -0
- include/draco/core/decoder_buffer.h +216 -0
- include/draco/core/divide.h +42 -0
- include/draco/core/draco_index_type.h +184 -0
- include/draco/core/draco_index_type_vector.h +90 -0
- include/draco/core/draco_types.h +52 -0
- include/draco/core/draco_version.h +25 -0
- include/draco/core/encoder_buffer.h +152 -0
- include/draco/core/hash_utils.h +64 -0
- include/draco/core/macros.h +124 -0
- include/draco/core/math_utils.h +79 -0
- include/draco/core/options.h +151 -0
- include/draco/core/quantization_utils.h +82 -0
- include/draco/core/status.h +83 -0
- include/draco/core/status_or.h +81 -0
- include/draco/core/varint_decoding.h +81 -0
- include/draco/core/varint_encoding.h +61 -0
- include/draco/core/vector_d.h +355 -0
- include/draco/draco_features.h +25 -0
- include/draco/io/file_reader_factory.h +34 -0
- include/draco/io/file_reader_interface.h +32 -0
- include/draco/io/file_utils.h +86 -0
- include/draco/io/file_writer_factory.h +34 -0
- include/draco/io/file_writer_interface.h +26 -0
- include/draco/io/file_writer_utils.h +38 -0
- include/draco/io/mesh_io.h +107 -0
- include/draco/io/obj_decoder.h +147 -0
- include/draco/io/obj_encoder.h +107 -0
- include/draco/io/parser_utils.h +66 -0
- include/draco/io/ply_decoder.h +69 -0
- include/draco/io/ply_encoder.h +54 -0
- include/draco/io/ply_property_reader.h +96 -0
- include/draco/io/ply_property_writer.h +94 -0
- include/draco/io/ply_reader.h +155 -0
- include/draco/io/point_cloud_io.h +89 -0
- include/draco/io/stdio_file_reader.h +48 -0
- include/draco/io/stdio_file_writer.h +42 -0
- include/draco/io/stl_decoder.h +38 -0
- include/draco/io/stl_encoder.h +52 -0
- include/draco/mesh/corner_table.h +397 -0
- include/draco/mesh/corner_table_iterators.h +309 -0
- include/draco/mesh/mesh.h +378 -0
- include/draco/mesh/mesh_are_equivalent.h +71 -0
- include/draco/mesh/mesh_attribute_corner_table.h +202 -0
- include/draco/mesh/mesh_cleanup.h +61 -0
- include/draco/mesh/mesh_features.h +93 -0
- include/draco/mesh/mesh_indices.h +37 -0
- include/draco/mesh/mesh_misc_functions.h +105 -0
- include/draco/mesh/mesh_stripifier.h +258 -0
- include/draco/mesh/triangle_soup_mesh_builder.h +134 -0
- include/draco/mesh/valence_cache.h +142 -0
- include/draco/metadata/geometry_metadata.h +142 -0
- include/draco/metadata/metadata.h +209 -0
- include/draco/metadata/metadata_decoder.h +42 -0
- include/draco/metadata/metadata_encoder.h +41 -0
- include/draco/metadata/property_attribute.h +107 -0
- include/draco/metadata/property_table.h +222 -0
- include/draco/metadata/structural_metadata.h +78 -0
- include/draco/metadata/structural_metadata_schema.h +118 -0
- include/draco/point_cloud/point_cloud.h +289 -0
- include/draco/point_cloud/point_cloud_builder.h +101 -0
- lib/draco.lib +0 -0
- lib/pkgconfig/draco.pc +6 -0
- share/cmake/draco/draco-config-version.cmake +43 -0
- share/cmake/draco/draco-config.cmake +27 -0
- share/cmake/draco/draco-targets-release.cmake +19 -0
- 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,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> ×tamp);
|
|
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_
|