% Display as a patch figure; patch('Faces', f, 'Vertices', v, ... 'FaceColor', 'interp', ... 'EdgeColor', 'none', ... 'FaceLighting', 'gouraud');
% Add some lighting for drama camlight headlight; lighting gouraud; axis equal; colorbar;
% From grid data [f,v] = surf2patch(X,Y,Z); % From an existing surface object h = surf(peaks); [f,v] = surf2patch(h); 1. Exporting to Other Formats Patch structures are much easier to export to common 3D formats (OBJ, STL, PLY) than surface objects. Once you have f and v , writing a custom exporter becomes trivial. 2. Combining Multiple Surfaces Want to merge two separate surfaces into one object? Extract their vertices/faces, concatenate them, and create a single patch. 3. Advanced Lighting & Transparency Patches respond better to manual lighting and transparency settings. Converting a surface to a patch can give you finer artistic control. 4. Faster Animation Manipulating vertices directly is often faster than regenerating surface objects in a loop. A Quick Example: Peaks to Patch Let’s convert the classic peaks surface to a patch and display it. surf2patch matlab
Enter surf2patch .
Have you used surf2patch in a creative way? Let me know in the comments below! Happy coding, Your MATLAB blogger % Display as a patch figure; patch('Faces', f,
If you’ve ever worked with 3D graphics in MATLAB, you’re likely familiar with the surf function. It’s great for creating shaded surface plots. But what if you need more control? What if you want to manipulate the faces and vertices directly, combine multiple surfaces, or export your plot to another format?
The result looks identical to a surf plot, but now you have direct access to f and v . Here’s something less documented: surf2patch can also return face vertex colors (CData) from a surface: 'FaceLighting', 'gouraud'); % Add some lighting for drama
% Create surface data [X,Y,Z] = peaks(30); % Convert to patch format [f,v] = surf2patch(X,Y,Z);