C ++ Draco CodierungC++

Programme in C++. Entwicklerforum
Anonymous
 C ++ Draco Codierung

Post by Anonymous »

Ich sehe, dass es im offiziellen Repo ein JavaScript -Codierungsbeispiel gibt, aber kein C ++. Ich habe Probleme, einen einfachen Draco Mesh -Encoder aufzubauen, der Mesh -Scheitelpunkte und Dreiecksindizes als Eingabe nimmt. Wenn Sie den JSON -Teil des Codes ignorieren, fällt die Funktion bei CodemeshtObuffer aus, möglicherweise aufgrund eines falsch angegebenen Netzes. < /P>
Was mache ich falsch? < /P>

Code: Select all

void dracoEncodeMesh(nlohmann::json& resultJson, const vector& occPoints, const vector& occIndices) {
draco::Mesh dracoMesh;
int numFaces = occIndices.size() / 3;
int numVertices = occPoints.size() / 3;
dracoMesh.SetNumFaces(numFaces);
dracoMesh.set_num_points(numVertices);

// define position attribute
draco::GeometryAttribute posAttribute;
posAttribute.Init(draco::GeometryAttribute::POSITION, nullptr, 3, draco::DT_FLOAT32, false, sizeof(float) * 3, 0);
int posAttributeId = dracoMesh.AddAttribute(posAttribute, false, numVertices);

// set vertex positions and faces
for (int i = 0; i < numVertices; ++i) {
dracoMesh.attribute(posAttributeId)->SetAttributeValue(draco::AttributeValueIndex(i), &occPoints[i * 3]);
}

for (int i = 0; i < numFaces; ++i) {
draco::Mesh::Face face;
for (int j = 0; j < 3; ++j) {
face[j] = draco::PointIndex(occIndices[i * 3 + j]);
}
dracoMesh.SetFace(draco::FaceIndex(i), face);
}

// encoding
draco::Encoder encoder;
draco::EncoderBuffer buffer;
draco::Status status = encoder.EncodeMeshToBuffer(dracoMesh, &buffer);
// if (!status.ok()) {
//     resultJson["draco_error"] = "Encoding failed: " + status.error_msg_string();
// } else {
//     string encodedStr = base64Encode(reinterpret_cast(buffer.data()), buffer.size());
//     resultJson["draco_data"] = encodedStr;
// }
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post