stl file rendering is not working can you help me to solve it?

FV = stlread('sample.stl');
trimesh(FV)
patch(FV,'FaceColor',[10 10 10],'EdgeColor','none','FaceLighting','gouraud','AmbientStrength',15);
% Add a camera light, and tone down the specular highlighting
camlight('headlight');
material('dull');
% Fix the axes scaling, and set a nice view angle
axis('image');
view([-500 500]);
Error using patch
Not enough input arguments.
Error in PART1 (line 3)
patch(FV,'FaceColor',[10 10 10],'EdgeColor','none','FaceLighting','gouraud','AmbientStrength',0.15);

回答(2 个)

This problem is caused by trying to feed a triangulation object to patch(). MATLAB stlread() returns a triangulation object, not a simple FV struct. This confusion happens because users find old code based on older third-party decoders with the same name and different output behavior.
Something like trisurf() or trimesh() should be able to directly take the triangulation object, but you can still use patch().
unzip stepholecube.stl.zip % for the forum
% import it
T = stlread('stepholecube.stl'); % this is a triangulation object
F = T.ConnectivityList; % you can get the F,V data
V = T.Points;
% plot it however is appropriate
patch('faces',F,'vertices',V,'facecolor','w','edgecolor','k');
view(3); view(-30,47); camlight;
axis equal; grid on
●

类别

在 帮助中心 和 File Exchange 中查找有关 Triangulations 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by