Empêcher la surface réfléchissante dans rasterVis

10

J'ai expérimenté avec des fichiers de modèles de terrain numériques au format raster de grille ASCII ESRI. Malgré zéro expérience avec ce type de données, j'ai trouvé qu'il était très facile de charger dans R, selon le code ci-dessous. La plot3Dfonction du rasterVispackage par défaut est un joli graphique mais le modèle est plutôt réfléchissant. Étant donné qu'il est censé être un paysage, cette surface brillante n'est pas vraiment appropriée.

Je recherche un tracé topologique plus naturel (si un tel mot peut être utilisé pour un rendu 3D d'un ensemble de figures), mat et topologique.

brillant

J'imagine qu'il doit y avoir des moyens de contourner cela, mais je n'ai aucune expérience de l'utilisation rasteret de la recherche de pointeurs.

Comment puis-je réduire ou supprimer la réflectivité du tracé?

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

foo <- raster(readGDAL("my.dtm.asc"))
plot3D(foo)
SlowLearner
la source

Réponses:

5

J'ai fait quelques tests et j'ai trouvé l' ?rgl.materialargument specular, ce qui a aidé à la tâche.

Voir l'exemple ci-dessous:

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

entrez la description de l'image ici

Andre Silva
la source
3

Vous devrez passer des arguments à plot3D qui modifient les caractéristiques d'affichage de rgl en utilisant les arguments disponibles dans "rgl.material". Je commencerais par "brillance" ou "luminance". Vous devez simplement spécifier les arguments rgl.material associés directement dans plot3D.

plot3D(foo, zfac=2, shininess=10) 
Jeffrey Evans
la source
2

Je suis assez nouveau avec r et le package rasterVis. Une chose que j'ai trouvée utile est d'explorer différentes palettes de couleurs pour voir si vous pouvez en trouver une qui correspond mieux à ce que vous recherchez (sans avoir à entrer et essayer de modifier les couleurs pour qu'elles correspondent exactement à ce que je veux). Par exemple, j'ai essayé:

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

Avec des résultats assez décents. Vous pouvez également expérimenter avec des palettes du package RColorBrewer dont certaines semblent moins brillantes. par exemple:

plot3D(foo, col=brewer.pal(9, 'YlOrRd'))
user27853
la source