2014-04-27 2 views
1

OpenMesh에 decimater 알고리즘을 사용하려고합니다. 나는이 링크에서 제시된 기본 설정을 따랐다 : http://openmesh.org/Documentation/OpenMesh-2.0-Documentation/decimater_docu.html하지만 modquadrict.hh(part of the library)에서 오는 다음과 같은 오류가 발생한다.OpenMesh : remove_property : Decimater :: DecimaterT의 멤버가 아닙니다. <MeshT>

#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; 
+0

메쉬 클래스에서 속성을 제거 하시겠습니까? 아니면 decimeter에서 직접 속성을 제거 하시겠습니까? 코드를 게시 할 수 있습니까? –

+0

내가 decimater를 테스트하려고하는 코드를 추가했습니다. decimate 메서드를 호출하거나 decimater를 초기화하기 전에 위의 오류가 발생합니다. – jaykumarark

답변

3

문제

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

MAIN.CPP이 줄을이었다.

OpenMesh :: Decimater :: ModQuadricT < decimater> :: 핸들 HModQuadric;

은 다음과 같이해야한다 :

OpenMesh :: Decimater 형식 정의

:: ModQuadricT < MyMesh> :: HModQuadric를 처리; 최신 버전의 버전 3.0

에서 작업하는 동안 나는 버전 2.0에서 문서를 언급했다

의 템플릿은 decimater 메시에가 아니라 따라 달라집니다.

+0

정확한 답변을 자유롭게 받아주십시오. – Macke