0

このコマンドを使用してメッシュを描画します

trimesh(F, X, Y, Z,...
'EdgeColor','k','FaceColor','flat','FaceVertexCData',c, ...
'CDataMapping','scaled','FaceLighting','flat','BackFaceLighting','lit');
camlight;

これを行うと、ほとんどの顔は期待どおりに照らされますが、一部の顔は照らされていないように見えます。つまり、ビューを他の角度に回転させたり、ライトの位置を変更したりしても (カメラに依存するため)、ライトが点灯していません。

法線に関する古典的な問題のように思えます (つまり、私の法線は反対方向です) がtrimesh、引数の呼び出しでそれを'BackFaceLighting','lit'処理すると思いました。

何か案は?

4

1 に答える 1

0

opengl次のコマンドを使用して、レンダラーを に設定してみてください。

set(gcf,'Renderer','opengl');

通常、標準のレンダラーよりも 3D を適切に処理します。

于 2012-09-21T23:43:39.013 に答える