使用 Three.js 更新地形几何
Updating Terrain Geometry with Three.js
我正在试验 Bjørn Sandvik 将地形数据导入场景的非常棒的过程。
查看:
http://blog.thematicmapping.org/2013/10/terrain-building-with-threejs.html
var terrainLoader = new THREE.TerrainLoader();
terrainLoader.load('../assets/jotunheimen.bin', function(data) {
var geometry = new THREE.PlaneGeometry(60, 60, 199, 199);
for (var i = 0, l = geometry.vertices.length; i < l; i++) {
geometry.vertices[i].z = data[i] / 65535 * 10;
}
var material = new THREE.MeshPhongMaterial({
color: 0xdddddd,
wireframe: true
});
var plane = new THREE.Mesh(geometry, material);
scene.add(plane);
});
我的目的是用它来显示时间序列的高程数据,因此将加载多个 .bin 文件以提供代表几年时间段的数据,以显示随时间的变化。
我在使用新数据更新几何图形时遇到困难。我认为我的困难源于函数内部定义的平面和几何变量,这意味着它们在全局上下文中未定义。所以稍后当我调用这些变量时,它们没有任何关联的值。
有谁知道如何使用 TerrainLoader 加载的新数据来更新此几何体?
您 .add()
到 scene
对象的任何内容都作为 scene.children
数组的元素可见 - 您仍然可以引用您的 plane
和it as plane.geometry
-- 飞机是场景中唯一的物体,它可能是 scene.children[0].geometry
请参阅此页面:https://github.com/mrdoob/three.js/wiki/Updates 以获取有关如何让三号知道几何形状正在发生变化的提示
我正在试验 Bjørn Sandvik 将地形数据导入场景的非常棒的过程。
查看:
http://blog.thematicmapping.org/2013/10/terrain-building-with-threejs.html
var terrainLoader = new THREE.TerrainLoader();
terrainLoader.load('../assets/jotunheimen.bin', function(data) {
var geometry = new THREE.PlaneGeometry(60, 60, 199, 199);
for (var i = 0, l = geometry.vertices.length; i < l; i++) {
geometry.vertices[i].z = data[i] / 65535 * 10;
}
var material = new THREE.MeshPhongMaterial({
color: 0xdddddd,
wireframe: true
});
var plane = new THREE.Mesh(geometry, material);
scene.add(plane);
});
我的目的是用它来显示时间序列的高程数据,因此将加载多个 .bin 文件以提供代表几年时间段的数据,以显示随时间的变化。
我在使用新数据更新几何图形时遇到困难。我认为我的困难源于函数内部定义的平面和几何变量,这意味着它们在全局上下文中未定义。所以稍后当我调用这些变量时,它们没有任何关联的值。
有谁知道如何使用 TerrainLoader 加载的新数据来更新此几何体?
您 .add()
到 scene
对象的任何内容都作为 scene.children
数组的元素可见 - 您仍然可以引用您的 plane
和it as plane.geometry
-- 飞机是场景中唯一的物体,它可能是 scene.children[0].geometry
请参阅此页面:https://github.com/mrdoob/three.js/wiki/Updates 以获取有关如何让三号知道几何形状正在发生变化的提示