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

조회 수: 4 (최근 30일)
abu sharique shamshad khan
abu sharique shamshad khan 2021년 8월 20일
답변: DGM 2025년 7월 14일
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개)

Simon Chan
Simon Chan 2021년 8월 20일
편집: Simon Chan 2021년 8월 20일

You may need trisurf or triplot (2D) instead of function patch.


DGM
DGM 2025년 7월 14일
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

카테고리

Help CenterFile Exchange에서 STL (STereoLithography)에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by