1

でデシメータ アルゴリズムを使用しようとしていますOpenMesh。このリンクに示されている基本的なセットアップに従いました: http://openmesh.org/Documentation/OpenMesh-2.0-Documentation/decimater_docu.htmlしかし、modquadrict.hh(part of the library).

error C2039: 'remove_property' : is not a member of 'OpenMesh::Decimater::DecimaterT<MeshT>'

main.cpp

#include "MyMesh.h"
#include <conio.h>
#include <iostream>


int main()
{
    MyMesh mesh;

    decimater deci (mesh);

    HModQuadric hModQuad;

    if(!OpenMesh::IO::read_mesh(mesh, "models/monkey.obj"));
    {
        std::cout<<"Cannot read mesh";
    }

    deci.add(hModQuad);

    std::cout << deci.module( hM).name() << std::endl;
    getch();
    return 0;
}

MyMesh.h

#pragma once

// OpenMesh
#pragma warning(push)
#pragma warning(disable: 4267)
#include <OpenMesh/Core/IO/MeshIO.hh>
#include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh>
#include <OpenMesh/Tools/Decimater/ModQuadricT.hh>
#include <OpenMesh/Tools/Decimater/DecimaterT.hh>
#pragma warning(pop)

//Additional mesh parameters
struct MeshTraits : public OpenMesh::DefaultTraits
{
    VertexAttributes(OpenMesh::Attributes::Normal);
    FaceAttributes(OpenMesh::Attributes::Normal);
};

typedef OpenMesh::TriMesh_ArrayKernelT<MeshTraits>  MyMesh;

// Decimater type
typedef OpenMesh::Decimater::DecimaterT< MyMesh >               decimater;

// Decimation Module Handle type
typedef OpenMesh::Decimater::ModQuadricT< decimater >::Handle HModQuadric;
4

1 に答える 1

3

問題はこの行にありました。

typedef OpenMesh::Decimater::ModQuadricT< decimater >::Handle HModQuadric;

次のようになります。

typedef OpenMesh::Decimater::ModQuadricT< MyMesh >::Handle HModQuadric;

バージョン 3.0 の作業中に、バージョン 2.0 のドキュメントを参照していました。

最近のバージョンでは、テンプレートはデシメータではなくメッシュに依存します。

于 2014-04-29T17:20:15.433 に答える