[Bf-blender-cvs] [b85e93b24ef] blender-v2.81-release: Fix bug in Draco encoding for glTF, files are now smaller

Jim Eckerlein noreply at git.blender.org
Tue Nov 5 15:38:36 CET 2019


Commit: b85e93b24ef6fc9e6d951e6ea72afaa8ce8d838b
Author: Jim Eckerlein
Date:   Tue Nov 5 14:02:13 2019 +0100
Branches: blender-v2.81-release
https://developer.blender.org/rBb85e93b24ef6fc9e6d951e6ea72afaa8ce8d838b

Fix bug in Draco encoding for glTF, files are now smaller

Data was not quantified properly. It also lets the library choose the suitable
encoding method rather than forcing it to use the edgebreaker method.

Differential Revision: https://developer.blender.org/D6183

===================================================================

M	extern/draco/src/draco-compressor.cpp

===================================================================

diff --git a/extern/draco/src/draco-compressor.cpp b/extern/draco/src/draco-compressor.cpp
index 9e63b8d35cb..3262a2c4d4d 100644
--- a/extern/draco/src/draco-compressor.cpp
+++ b/extern/draco/src/draco-compressor.cpp
@@ -38,6 +38,7 @@
 #include "draco/point_cloud/point_cloud.h"
 #include "draco/core/vector_d.h"
 #include "draco/io/mesh_io.h"
+#include "draco/compression/encode.h"
 
 #if defined(_MSC_VER)
 #define DLL_EXPORT(retType) extern "C" __declspec(dllexport) retType __cdecl
@@ -158,16 +159,14 @@ DLL_EXPORT(bool) compress(
     printf("%s: Normal quantization bits:   %d\n", logTag, compressor->quantizationBitsNormal);
     printf("%s: Position quantization bits: %d\n", logTag, compressor->quantizationBitsTexCoord);
 
-    draco::ExpertEncoder encoder(compressor->mesh);
+    draco::Encoder encoder;
 
     encoder.SetSpeedOptions(10 - compressor->compressionLevel, 10 - compressor->compressionLevel);
     encoder.SetAttributeQuantization(draco::GeometryAttribute::POSITION, compressor->quantizationBitsPosition);
     encoder.SetAttributeQuantization(draco::GeometryAttribute::NORMAL, compressor->quantizationBitsNormal);
     encoder.SetAttributeQuantization(draco::GeometryAttribute::TEX_COORD, compressor->quantizationBitsTexCoord);
 
-    encoder.SetEncodingMethod(draco::MESH_EDGEBREAKER_ENCODING);
-
-    draco::Status result = encoder.EncodeToBuffer(&compressor->encoderBuffer);
+    draco::Status result = encoder.EncodeMeshToBuffer(compressor->mesh, &compressor->encoderBuffer);
 
     if(!result.ok()) {
         printf("%s: Could not compress mesh: %s\n", logTag, result.error_msg());



More information about the Bf-blender-cvs mailing list