我修改平面几何的顶点来创建新的几何学。但是当我导出几何学时,它仍然是一个平面几何,而我修改的顶点不包括在内。
如何将新的几何图形导出为JSON,包括所有更改?
这是我的密码:
var seg = 5;
var dim = 70;
var zScale = 20;
var geometry = new THREE.PlaneGeometry(dim, dim, seg, seg );
var index = 0;
for (var gridY = 0; gridY < seg; gridY++) {
for (var gridX = 0; gridX < seg; gridX++) {
var z = Math.random() * zScale;
geometry.vertices[index].z = z;
index++;
}
}
geometry.elementsNeedUpdate = true;
geometry.verticesNeedUpdate = true;
var expJson = geometry.toJSON();
console.log(expJson);我导出的数据如下所示:
{
height: 70
heightSegments: 5
metadata: {
generator: "Geometry.toJSON"
type: "PlaneGeometry"
},
version: 4.4
type: "PlaneGeometry"
uuid: "5F071B03-15EA-43CE-B4B3-4944E13D781C"
width: 70
widthSegments: 5
}发布于 2016-11-24 14:22:05
这是我使用的解决方案。如果有人有更好的,请把它寄出去。但这对我来说是可行的,而且相当整洁。
我只是添加了一个新的几何对象,并从平面几何复制眩晕和面孔。
var seg = 5;
var dim = 70;
var zScale = 20;
var geometry = new THREE.PlaneGeometry(dim, dim, seg, seg );
var index = 0;
for (var gridY = 0; gridY < seg; gridY++) {
for (var gridX = 0; gridX < seg; gridX++) {
var z = Math.random() * zScale;
geometry.vertices[index].z = z;
index++;
}
}
geometry.elementsNeedUpdate = true;
geometry.verticesNeedUpdate = true;
// The fix start ---
var neoGeo = new THREE.Geometry();
neoGeo.vertices = geometry.vertices;
neoGeo.faces = geometry.faces;
neoGeo.faceVertexUvs = geometry.faceVertexUvs;
// The fix end ---
var expJson = neoGeo.toJSON(); //Export json from the new geometry object
console.log(expJson);发布于 2016-11-26 15:49:01
如果需要原始数据,请参见https://github.com/mrdoob/three.js/issues/5483了解为什么需要转换为THREE.Geometry或THREE.BufferGeometry。
一个更简单的方法是(来自https://stackoverflow.com/a/26478256/128165)
var rawGeometry = new THREE.BufferGeometry().fromGeometry(geometry);
var expJson = rawGeometry.toJSON();或
var rawGeometry = new THREE.Geometry();
rawGeometry.merge( geometry );
var expJson = rawGeometry.toJSON();https://stackoverflow.com/questions/40769013
复制相似问题