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 firstselection->DeSelectAll();// open the shell's containing segmentHC_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 shellHC_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.