LoginSignup
4
2

More than 5 years have passed since last update.

複数あるGeometryをまとめあげる

Posted at

前提

課題

1つの要素なんだけど、諸般の事情により複数のGeometryとして定義されてしまっているものを、1つのGeometryとして作り直したい。

実例としては、GeoJsonで定義されている世界地図を、D3.jsで投影して、それをThree.jsに読み込ませるとき、国ごとに1つのオブジェクトになってしまっているので、おそらくGeometryの数だけ処理が重くなる。それを1つのGeometryにすることで、多少なりとも処理や管理を簡単にしたい。

手法

var geoms = getMultipleGeometries(); // returned multiple geometries, created yourself.

var merged_geom = new THREE.Geometry();
var matel = new THREE.MeshBasicMaterial();

$.each(geoms, function(i, geom ){
  // mergeするGeometryの座標管理のため、一旦Mesh化する
  var mesh = new THREE.Mesh( geom, matel);
  mesh.updateMatrix();

  merged_geom.merge( mesh.geometry, mesh.matrix);
});

var trueMesh = new THREE.Mesh( merged_geom, matel);
scene.add( trueMesh ); // scene is Scene instance in three.js

Meshを2度作らなきゃいけないのが納得できないが、THREE.GeometryUtils.merge()が廃止されたようなので、結局こうしないといけないっぽい。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2