Предотвращение отражающей поверхности в растре

10

Я экспериментировал с файлами цифровых моделей рельефа в формате сетки ESRI ASCII. Несмотря на нулевой опыт работы с данными такого типа, я обнаружил, что загрузить их в R очень просто, как показано ниже. plot3DФункция из rasterVisпакета по умолчанию в симпатичном сюжет , но модель довольно рефлексивная. Учитывая, что это должен быть пейзаж, эта блестящая поверхность не совсем подходит.

Я ищу более естественный (если такое слово можно использовать о 3D-рендеринге набора фигур) матовый топологический сюжет.

блестящий

Я предполагаю, что должны быть способы обойти это, но у меня нет опыта использования rasterи поиска некоторых указателей.

Как я могу уменьшить или удалить отражательную способность сюжета?

library(raster)
library(rgdal)
library(rasterVis)

foo <- raster(readGDAL("my.dtm.asc"))
plot3D(foo)
SlowLearner
источник

Ответы:

5

Я провел несколько тестов и нашел ?rgl.materialаргумент specular, который помог с задачей.

Смотрите пример ниже:

library(raster)
library(rasterVis)

r = raster(volcano)

plot3D(r,lit=TRUE,specular="white") #white is default
plot3D(r,lit=TRUE,specular="black") #change specular to black

введите описание изображения здесь

Андре Силва
источник
3

Вам нужно будет передать аргументы plot3D, которые изменяют характеристики отображения rgl, используя аргументы, доступные в "rgl.material". Я бы начал с "блеска" или "яркости". Вы бы просто указали связанные аргументы rgl.material непосредственно в plot3D.

plot3D(foo, zfac=2, shininess=10) 
Джеффри Эванс
источник
2

Я довольно новичок с r и пакетом rasterVis. Одна вещь, которая мне показалась полезной, - это изучение разных цветовых палитр, чтобы увидеть, сможете ли вы найти ту, которая лучше соответствует тому, что вы ищете (без необходимости заходить и пытаться изменить цвета, чтобы они точно соответствовали тому, что я хочу). Например я пробовал:

plot3D(foo, col=terrain.colors(6))

С довольно приличными результатами. Вы также можете поэкспериментировать с палитрами из пакета RColorBrewer, некоторые из которых кажутся менее блестящими. например:

plot3D(foo, col=brewer.pal(9, 'YlOrRd'))
user27853
источник