如何在echarts4r上为地球仪渲染配置“金属性”参数?

zed5wv10  于 2022-12-20  发布在  Echarts
关注(0)|答案(1)|浏览(164)

大家好,感谢您阅读我的文章,我目前正在使用echarts制作一个地球仪(在echarts4r中),我想设置一个参数,我在他们的官方文档中看到,这是:“realisticMaterial.metalness”,但到目前为止我无法让它工作。在官方文档中显示的参数如下:

我想以如下方式修改echats4r中的代码:

library(echarts4r.assets)
library(echarts4r)

airports <- read.csv(
  paste0("https://raw.githubusercontent.com/plotly/datasets/",
         "master/2011_february_us_airport_traffic.csv")
)

airports |> 
  e_charts(long) |> 
  e_globe(
    viewControl = list(rotateSensitivity = 5),
    realisticMaterial = list(metalness = 1),
    globeOuterRadius = 100
  ) |> 
  e_scatter_3d(lat, cnt, coord_system = "globe", blendMode = 'lighter') |> 
  e_visual_map(inRange = list(symbolSize = c(1, 10))) |> 
  e_color(background = "transparent")

但我一直没能让它工作,有人知道我可能做错了什么吗?
谢谢你的帮助

falq053o

falq053o1#

我不知道你在期待什么。(你问这个问题很久了!)
为了指定metalness,您必须通过指定base_texture来定义如何处理它(无论您想要"blend"还是"overlay"......显然,没有设置默认值)。
查看这里显示的代码和相应的透视图。
在第一张图中,我停止了旋转(只是为了使图像更容易),更改了metalness的量以使图像变亮,添加了roughness以使金属外观更明显,添加了height_texture,并设置了base_texture

airports |> 
  e_charts(long) |> 
  e_globe(
    viewControl = list(rotateSensitivity = 5,
                       autoRotateSpeed = 0),
    shading = 'realistic',
    height_texture = ea_asset('world topo'),
    realisticMaterial = list(metalness = .4, roughness = .1),
    base_texture = 'blend',
    globeOuterRadius = 100
  ) |> 
  e_scatter_3d(lat, cnt, coord_system = "globe", blendMode = 'lighter') |> 
  e_visual_map(inRange = list(symbolSize = c(1, 10))) |> 
  e_color(background = "transparent")

这里唯一的区别是更多的metalness。第二张图片(我旋转了地球仪)反映了更多的“金属性”。

airports |> 
  e_charts(long) |> 
  e_globe(
    viewControl = list(rotateSensitivity = 5,
                       autoRotateSpeed = 0),
    shading = 'realistic',
    height_texture = ea_asset('world topo'),
    realisticMaterial = list(metalness = .6, roughness = .1),
    base_texture = 'blend',
    globeOuterRadius = 100
  ) |> 
  e_scatter_3d(lat, cnt, coord_system = "globe", blendMode = 'lighter') |> 
  e_visual_map(inRange = list(symbolSize = c(1, 10))) |> 
  e_color(background = "transparent")

这里我最大化了metalnessroughness
机场|〉电子图表(长)|〉e_地球仪(视图控件=列表(旋转敏感度= 5,自动旋转速度= 0),着色=“真实感”,高度纹理= ea_asset(“世界地形”),真实感材质=列表(金属度= 1,粗糙度= 1),基础纹理=“混合”,globeOuterRadius = 100)|〉e_scatter_3d(纬度、坐标、坐标系统=“地球仪”,混合模式=“更浅”)|〉e_视觉_Map(范围=列表(符号大小= c(1,10)))|〉e_color(背景=“透明”)

相关问题