javafxでSTLファイルから読み込んだ3Dモデルに対していろいろしたいと思ってツールを作成しています。
読み込んだモデルに対して丸だったり四角だったりの物体をクリックしたら配置するようにしたいのですが、
その際に、配置した物体の一部分がモデルを貫通してしまうので、貫通している部分を削りたいのですが、
貫通している部分の面情報を取得することはできないのでしょうか?
重なっている部分が取れれば、その面情報をTriangleMeshから削除すればいいのかなと思っています。
作成中のコードは以下になります。
java
1//MeshView1のクリックイベント 2meshView.addEventHandler(MouseEvent.MOUSE_PRESSED, e -> { 3 //クリック時に長方形生成 4 FXCylinderMesh cylinder = new FXCylinderMesh(); 5 TriangleMesh cylinderMesh = cylinder.getMesh(); 6 7 MeshView cylinderView = new MeshView(); 8 cylinderView.setMesh(cylinderMesh); 9 10 try { 11 CSG childCSG = Mesh2CSG.mesh2CSG(cylinderView); 12 13 MeshContainer fxMexhContainer = childCSG.toJavaFXMesh(); 14 cylinderView = fxMexhContainer.getAsMeshViews().get(0); 15 16 } catch (IOException e1) { 17 e1.printStackTrace(); 18 } 19 20 // 色を設定 21 PhongMaterial spMaterial = new PhongMaterial(); 22 spMaterial.setDiffuseColor(Color.BLUE); 23 cylinderView.setMaterial(spMaterial); 24 cylinderView.setDrawMode(DrawMode.FILL); 25 26 //長方形を置く位置を設定(クリックした箇所) 27 cylinderView.setTranslateX(e.getX()); 28 cylinderView.setTranslateY(e.getY()); 29 cylinderView.setTranslateZ(e.getZ()); 30 31 //MeshView1とMeshView2の貫通している部分を取得 32 33 //MeshView2の貫通部分を削る 34 35 //ルートに追加 36 root.getChildren().add(cylinderView); 37 38}); 39
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/02 05:28
2017/04/02 06:21
2017/04/03 15:15
2017/04/03 16:08
2017/04/05 11:05
2017/04/05 11:44
2017/04/05 14:44