Fri, 04/30/2010 - 11:27
Hi all,
I'm currently creating triangles with this methods :
Graphic3d_Array1OfVertexNC and Aspect_Array1OfEdge.
Then I draw my array of triangles like this :
Handle(Graphic3d_AspectFillArea3d) myFillAspect = new Graphic3d_AspectFillArea3d();
myFillAspect->SetInteriorStyle(Aspect_IS_SOLID);
Handle( Graphic3d_Group ) TheGroup = Prs3d_Root::CurrentGroup(aPresentation);
Graphic3d_MaterialAspect mat = myFillAspect->FrontMaterial();
//Material Aspect personnalisation
...
myFillAspect->SetFrontMaterial(mat);
TheGroup->SetPrimitivesAspect(myFillAspect);
TheGroup->BeginPrimitives();
TheGroup->TriangleSet(verticesNC, mesEdges);
TheGroup->EndPrimitives();
This is good working but OpenGl use a linear interpolation between vertices. You can see the capture.
For some triangles, the renderer is not good, I would like a more smooth rendering.
How can I activate a spline interpolation between vertices instead of a linear interpolation ?
Many thanks for your help.
Mathieu
Fri, 04/30/2010 - 11:44
Hi Mathieu,
The attached screenshot is beautiful! It looks like a supernova blow. What is it exactly?
I don't know if OpenGL can perform non-linear (quadratic, spline etc.) interpolation of colours between vertices. I think that the OpenGL Shading Language (GLSL) could suit your needs. Unfortunately, OCC implements a quite outdated version of OpenGL, and GLSL is not available.
However, I think it should not be that hard to implement GLSL support in OpenCascade.
Best Regards,
Thomas
Tue, 05/04/2010 - 16:16
Hi,
Thank you for your answer Thomas. It helps me a lot.
This is not a supernova blow, it's just the temperature on a surface :-)
I only have one problem to customize the material renderer when I use a Handle(Graphic3d_ArrayOfTriangles) aTrianglesArray object.
When I use this two objects :
static Graphic3d_Array1OfVertexNC verticesNC(1, myMesh->GetElementsNber()*3);
static Aspect_Array1OfEdge mesEdges(1, myMesh->GetElementsNber()*3);
I don't have problem.
It seems that the rendering is different between this two way to do but I don't know where I can find documentation...