1

私は最新の threecsg.js ライブラリを持っており、CSG 操作の後にサブディビジョン モディファイアを使用しようとする場合を除いて、それを使用しても問題ありません。これは、github のライブラリに付属する example.html ファイルから変更されたサンプル コードです。

var start_time = (new Date()).getTime();
var cube_geometry = new THREE.CubeGeometry( 3, 3, 3 );
var cube_mesh = new THREE.Mesh( cube_geometry );
cube_mesh.position.x = -6;
var cube_bsp = new ThreeBSP( cube_mesh );

var sphere_geometry = new THREE.SphereGeometry( 1.8, 12, 12 );
var sphere_mesh = new THREE.Mesh( sphere_geometry );
sphere_mesh.position.x = -7;
sphere_mesh.position.y -= 0;
var sphere_bsp = new ThreeBSP( sphere_mesh );

var subtract_bsp = cube_bsp.union( sphere_bsp );
var result = subtract_bsp.toMesh( new THREE.MeshLambertMaterial({ shading: THREE.SmoothShading, map: THREE.ImageUtils.loadTexture('texture.png') }) );
result.geometry.computeVertexNormals();

var smooth = result.geometry.clone() ;

smooth.mergeVertices();

var modifier = new THREE.SubdivisionModifier(0.1);

modifier.modify( smooth );

var mesh = new THREE.Mesh( smooth, new THREE.MeshPhongMaterial( { wireframe:true, color: 0xffffff } ) );
mesh.geometry.computeFaceNormals();
scene.add( mesh );

上記のコードは、球体と立方体を結合します。この後、サブディビジョン モディファイアを介して結果のジオメトリを実行します。シーンに追加された最終出力には、オブジェクトから突き出た面がありますが、それ以外は、オブジェクトは滑らかに見えます。この問題の解決、つまり突き出た面の削除を手伝ってくれる人はいますか?

4

0 に答える 0