[vtkusers] Problem with SetRepresentation
paddi.m at gmx.net
paddi.m at gmx.net
Sat Jan 10 22:11:02 EST 2009
Hi Gerrick,
I don't think thats the problem - I also tried to set the presentation
to wireframe when I create the actors for the first time - but I also
get an surface presentation :-( The funny thing is that changing the
presentation with "w" or "s" from the interactor is ok...
Greets,
Patrik
Gerrick Bivins schrieb:
> Hi Patrik,
> Make sure to explicitly call Render on the vtkWindow after you make changes
> to the pipeline, ie after calling SetRepresentation.
> Gerrick
>
>
> On 1/10/09 8:51 PM, "paddi.m at gmx.net" <paddi.m at gmx.net> wrote:
>
>> Hi,
>>
>>
>> I try to use different presentations for my actors inside VTK 5.2. As an
>> interactor I use the wxVTKRenderWindowInteractor. It doesn't matter
>> which representation I choose I always see the whole surface (like
>> SetRepresentationToSurface). But if I check my actor before adding it to
>> a renderer the vtkProperty has the right value :-(
>>
>> I know it should be simple - but I don't see an error...
>>
>> Thanks in advance,
>>
>> Patrik
>>
>> vtkProp* Im_VTKUtil::BuildMesh(Im_MeshPtr theMesh)
>> {
>> vtkProp* result = NULL;
>> if (theMesh)
>> {
>> Im_OSUtils theHelper;
>> std::string matName;
>>
>> vtkProperty* vtkMaterial = NULL;
>> theMesh->CalcNormals();
>> if (theMesh->GetMaterial())
>> vtkMaterial = BuildMaterial(theMesh->GetMaterial(),
>> theMesh->GetDisplayMode());
>> // matName = theHelper.ToAscii(theMesh->GetMaterial()->GetName());
>> long nbFaces = theMesh->NbFaces();
>> long nbPoints = theMesh->NbVertices();
>>
>> Im_Vec3D v1;
>>
>> vtkPolyData *meshpoly = vtkPolyData::New();
>> vtkPoints *points = vtkPoints::New();
>> vtkCellArray *polys = vtkCellArray::New();
>> // vtkFloatArray *scalars = vtkFloatArray::New();
>>
>> for (long i = 0; i < nbPoints; i++)
>> {
>> v1 = theMesh->GetVertex(i);
>> points->InsertPoint(i, v1.X(), v1.Y(), v1.Z());
>> }
>>
>> long i1, i2, i3;
>>
>> for (long i = 0; i < nbFaces; i++)
>> {
>> if (theMesh->GetFaceIndices(i1, i2, i3, i))
>> {
>> polys->InsertNextCell(3);
>> polys->InsertCellPoint(i1);
>> polys->InsertCellPoint(i2);
>> polys->InsertCellPoint(i3);
>> }
>> }
>> meshpoly->SetPoints(points);
>> meshpoly->SetPolys(polys);
>>
>> vtkPolyDataNormals *normals = vtkPolyDataNormals::New();
>> normals->SetInput(meshpoly);
>> normals->SetFeatureAngle(60.0);
>>
>> vtkPolyDataMapper *meshMapper = vtkPolyDataMapper::New();
>> meshMapper->SetInput(normals->GetOutput());
>>
>> /*
>> vtkPainterPolyDataMapper * meshMapper = vtkPainterPolyDataMapper::New();
>> meshMapper->SetInput(normals->GetOutput());
>> */
>> vtkActor *meshActor = vtkActor::New();
>> meshActor->SetMapper(meshMapper);
>> if (NULL != vtkMaterial)
>> meshActor->SetProperty(vtkMaterial);
>> result = meshActor;
>> }
>> return result;
>> }
>>
>> vtkProperty* Im_VTKUtil::BuildMaterial(Im_MaterialPtr theMaterial, const
>> Im_Entity3D::Im_EntityDisplayMode& theDisplayMode)
>> {
>> vtkProperty* result = NULL;
>> if (theMaterial)
>> {
>> Im_Color tmpColor;
>> result = vtkProperty::New();
>>
>> SetDisplayMode(result, theDisplayMode);
>>
>> tmpColor = theMaterial->GetAmbient()->GetPropertyValue();
>> result->SetAmbientColor(tmpColor.GetRed(), tmpColor.GetGreen(),
>> tmpColor.GetBlue());
>>
>> tmpColor = theMaterial->GetDiffuse()->GetPropertyValue();
>> result->SetDiffuseColor(tmpColor.GetRed(), tmpColor.GetGreen(),
>> tmpColor.GetBlue());
>>
>> tmpColor = theMaterial->GetSpecular()->GetPropertyValue();
>> result->SetSpecularColor(tmpColor.GetRed(), tmpColor.GetGreen(),
>> tmpColor.GetBlue());
>>
>> result->SetSpecularPower(theMaterial->GetShininess());
>> result->SetOpacity(abs(1-theMaterial->GetTransparency()));
>>
>> }
>> return result;
>>
>> }
>>
>> void Im_VTKUtil::SetDisplayMode(vtkProperty* theMaterial, const
>> Im_Entity3D::Im_EntityDisplayMode& theDisplayMode)
>> {
>> if (NULL != theMaterial)
>> {
>> switch (theDisplayMode)
>> {
>> case Im_Entity3D::Im_Points:
>> theMaterial->SetRepresentationToPoints();
>> break;
>> case Im_Entity3D::Im_Box:
>> case Im_Entity3D::Im_WireFrame:
>> theMaterial->SetRepresentationToWireframe();
>> break;
>> default:
>> theMaterial->SetRepresentationToSurface();
>> break;
>> }
>> }
>> }
>>
>> Thanks
>> _______________________________________________
>> This is the private VTK discussion list.
>> Please keep messages on-topic. Check the FAQ at:
>> http://www.vtk.org/Wiki/VTK_FAQ
>> Follow this link to subscribe/unsubscribe:
>> http://www.vtk.org/mailman/listinfo/vtkusers
>
More information about the vtkusers
mailing list