如何从babylonjs中的Mesh.CreateGroundFromHeightMap更新“高度图图片URL”

问题描述 投票:0回答:1

我是babylon.js的新手,并尝试使用功能CreateGroundFromHeightMap构建某些内容。我想更新babylon.js中的Height Map url参数,但找不到方法。

这是我的代码来构建它:

var ground = BABYLON.Mesh.CreateGroundFromHeightMap("ground", "textures/heightMap3.png",1000, 1000, 100,-100, 100, scene, false);

我应该完全删除地面实例并加载一个新实例,还是有其他解决方案?在删除它的情况下,我应该只使用:ground.dispose()?

感谢您的回复

javascript three.js 3d babylonjs
1个回答
0
投票

无法“更新”用于创建网格的图像。

网格的几何形状在下载图像后创建,然后图像被处置并且不再使用。创建一种“更新”机制的唯一方法是在下载新映像后处理旧的网格并创建新的网格。

还请注意,函数CreateGroundFromHeightMap是异步的。您可以添加“ onSuccess”回调以禁用旧的网格并显示新的网格:

let groundMesh;

function updateGroundMesh(newUrl, onSuccess) {
    if(groundMesh) groundMesh.dispose();
    groundMesh = BABYLON.Mesh.CreateGroundFromHeightMap("ground", newUrl ,1000, 1000, 100,-100, 100, scene, false, onSuccess);
}

updateGroundMesh("image1.jpg", () => {
    updateGroundMesh("image2,jpg");
});

这当然是一种非常幼稚的方法,并且只会更新一次),中间只有几帧以加载第二张图像。它需要改进:-)

© www.soinside.com 2019 - 2024. All rights reserved.