2016-11-23 7 views
0

プレーンジオメトリの頂点を変更して新しいジオメトリを作成します。 しかし、ジオメトリをエクスポートすると、それはまだ平面ジオメトリであり、変更された頂点は含まれません。Three.jsを使用して、変更されたプレーンジオメトリをJSONとしてエクスポート

すべての変更を含めて、新しいジオメトリを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 
} 

答えて

2

はあなたが生のデータが必要な場合はTHREE.GeometryまたはTHREE.BufferGeometryに変換する必要がある理由の説明のためにhttps://github.com/mrdoob/three.js/issues/5483を参照してください。


そして、これを行うための簡単な方法は、(Export ThreeJS Geometry to JSONから

var rawGeometry = new THREE.BufferGeometry().fromGeometry(geometry); 
var expJson = rawGeometry.toJSON(); 

または

var rawGeometry = new THREE.Geometry(); 
rawGeometry.merge(geometry); 
var expJson = rawGeometry.toJSON(); 
です
0

これは私が使用して解決策がある

は、ここに私のコードです。もし誰かがより良いものを持っていたら、投稿してください。しかし、これは私のために働くと非常にきちんとしています。

新しいジオメトリオブジェクトを追加し、プレーンジオメトリから頂点と面をコピーします。

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); 
関連する問題