【发布时间】:2014-06-26 04:16:10
【问题描述】:
三个js ver67 当前代码是这样的 -
var materials = [];
var totalGeom = new THREE.Geometry();
var cubeMat;
for (var i = 0; i < dataSetArray.length; i++) {
var ptColor = dataSetArray[i].color;
var value = dataSetArray[i].value;
var position = latLongToVector3(dataSetArray[i].y, dataSetArray[i].x, 600, 1);
var cubeGeom = new THREE.BoxGeometry(5, 5, 1 + value / 20);
cubeMat = new THREE.MeshLambertMaterial({
color: new THREE.Color(ptColor),
opacity: 0.6
});
materials.push(cubeMat);
// cubeGeom.updateMatrix();
var cubeMesh = new THREE.Mesh(cubeGeom, cubeMat);
cubeMesh.position = position;
cubeMesh.lookAt(scene.position);
// totalGeom.merge(cubeMesh.geometry, cubeMesh.geometry.matrix);
//THREE.GeometryUtils.setMaterialIndex(cubeMesh.geometry, i);
THREE.GeometryUtils.merge(totalGeom, cubeMesh);
}
var total = new THREE.Mesh(totalGeom, new THREE.MeshFaceMaterial(materials));
scene.add(total);
但是我收到了消息
已弃用:GeometryUtils 的 .merge() 已移至 Geometry。请改用geometry.merge(geometry2, matrix, materialIndexOffset)。
在 chrome 开发工具中。
当我尝试类似 - totalGeom.merge(cubeMesh.geometry, cubeMesh.geometry.matrix); 而不是 THREE.GeometryUtils.merge(totalGeom, cubeMesh);我得到例外。
我将如何进行上述合并?请帮忙。
【问题讨论】:
-
尝试
cubeMesh.updateMatrix(); totalGeom.merge(cubeMesh.geometry, cubeMesh.matrix);但在此之前,请使用cubeMesh.position.copy( position )而不是cubeMesh.position = position; -
成功了!感谢 cubeMesh.position.copy(position) 提示。
-
我总是收到
Uncaught TypeError: Cannot read property 'visible' of undefined。你知道为什么吗?
标签: javascript three.js