В Matlab, мы можем создать базовую поверхность с плоской лицевой молнии, используя следующие:Возможно ли получение информации о интенсивности света для поверхности с использованием функции «света» Matlab?
peaks(10)
light
Это создает следующую картину:
Есть ли способ, чтобы получить матрицу с указанием интенсивность света на поверхностных пятнах для текущего вида? В качестве альтернативы есть способ просто получить атрибут FaceColor, который применяется к отдельным патчам на поверхности (я полагаю, что из вычитания этого FaceColor из неосвещенного FaceColor мы можем получить интенсивность)?
Спасибо за ваш комментарий. К сожалению, это легкие данные, которые я хочу (или, альтернативно, эффективный цвет лица (а не CData от поверхностного объекта). Есть ли способ найти алгоритм Matlab для плоского затенения (или любого другого затенения) на основе векторного нормального и вектор источника света? Это просто какое-то скалярное масштабирование, где, если векторы тангенциальны, значение равно 1 и если векторы перпендикулярны, значение равно 0? – TSGM
Я посмотрел документацию Matlab свойства FaceColor. как «flat», а FaceVertexCData определяется для каждой вершины, тогда Matlab будет выбирать для каждого лица цвет первой вершины лица. Я обновил свой ответ, чтобы показать вам, как получить эффективный цвет лица. – DontCareBear
Извините, но мы можем быть путают: когда свет попадает на поверхность, предыдущий матовый цвет патча (назовите его FaceColor1) будет изменен на другой цвет (назовите его FaceColor2). Это то, что я называю «эффективным цветом» р". Из того, что я понимаю о вашем обновлении, вы объясняли, как FaceColor1 был найден путем интерполяции значений вершин. Положите это по-другому. Есть ли способ вызвать объект патча с точно таким же цветом, что и патч * lit *, но без вызова команды light? – TSGM