使用heightmap更新PyVista球形网格

2024-04-27 19:43:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将等矩形纹理转换为高度贴图数组,以更新PyVista中的球形网格

我可以将此纹理应用到我的球体上,而不会产生任何问题,它是无缝的,并且可以按预期工作:

PyVista sphere with equirectangular texture

从这里开始,我假设使用此纹理作为标量高度贴图可以很容易地使用PyVista方法compute_normals()warp_by_scalar(请参见this tutorial)更新网格,但我不熟悉PyVista使用的数据格式

我尝试了以下方法:

image = pv.read('mytexture.jpeg')
tex = pv.image_to_texture(image)

sphere.textures['heightmap'] = tex

sphere.compute_normals(inplace = True)                                 
warp = sphere.warp_by_scalar(factor = 1e-3, scalars = 'heightmap') 

但最后一行引发了以下错误:

TypeError: Dataset can only by warped by a point data array.   

我知道在上面链接的教程中,heightmap存储在mesh point_arrays属性中,而不是作为纹理,但我不知道如何从一个到另一个。有没有简单的方法可以将我的纹理用作高度贴图


Tags: 方法image网格by高度texscalarcompute