HOOPS/MVO includes a utility function called HUtilityGeometryCreation::GenerateFEAShell which can be used to calculate more advanced color interpolation. It operates on a shell which already has color map values at the vertices, and recalculates a new shell that has quad based color interpolation calculated for all the 'quads' in the original shell. New points are introduced into the original shells 'quad' faces.
Let's add a new method to the tutorial which obtains the first shell in the selection list, calculates the advanced interpolation variant, and then deletes the original shell. We'd hook this up to a new GUI menu button.
int HAnalysisView::DisplayQuadInterpolate() { HAnalysisSelectionSet * selection = (HAnalysisSelectionSet*)GetSelection(); if (selection->GetSize() == 0) return EXIT_FAILURE ; if(selection->GetSize() > 0) { HC_KEY key = selection->GetAt(0); // DeSelect the item first selection->DeSelectAll(); // open the shell's containing segment HC_Open_Segment_By_Key(HC_KShow_Owner_By_Key(key)); HC_KEY new_key = HUtilityGeometryCreation::GenerateFEAShell(key, false, "bilinear"); HC_Close_Segment(); // delete the original shell HC_Delete_By_Key(key); SetColorIndexInterpolation(true, false); SetColorInterpolation(false); Update(); } return EXIT_SUCCESS ; }
Experiment by reading in the sample meshed_car1.hsf dataset, selecting it, applying contours, and then performing the advanced interpolation.