首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Three.js将修改后的平面几何导出为JSON

使用Three.js将修改后的平面几何导出为JSON
EN

Stack Overflow用户
提问于 2016-11-23 16:00:06
回答 2查看 222关注 0票数 1

我修改平面几何的顶点来创建新的几何学。但是当我导出几何学时,它仍然是一个平面几何,而我修改的顶点不包括在内。

如何将新的几何图形导出为JSON,包括所有更改?

这是我的密码:

代码语言:javascript
复制
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);

我导出的数据如下所示:

代码语言:javascript
复制
{
    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
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-24 14:22:05

这是我使用的解决方案。如果有人有更好的,请把它寄出去。但这对我来说是可行的,而且相当整洁。

我只是添加了一个新的几何对象,并从平面几何复制眩晕和面孔。

代码语言:javascript
复制
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);
票数 0
EN

Stack Overflow用户

发布于 2016-11-26 15:49:01

如果需要原始数据,请参见https://github.com/mrdoob/three.js/issues/5483了解为什么需要转换为THREE.GeometryTHREE.BufferGeometry

一个更简单的方法是(来自https://stackoverflow.com/a/26478256/128165)

代码语言:javascript
复制
var rawGeometry = new THREE.BufferGeometry().fromGeometry(geometry);
var expJson = rawGeometry.toJSON();

代码语言:javascript
复制
var rawGeometry = new THREE.Geometry();
rawGeometry.merge( geometry );
var expJson = rawGeometry.toJSON();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40769013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档