浏览代码

Update IFC Loader (#22352)

Antonio González Viegas 3 年之前
父节点
当前提交
1dda20c300
共有 4 个文件被更改,包括 5515 次插入4605 次删除
  1. 935 111
      examples/jsm/loaders/IFCLoader.js
  2. 4557 4480
      examples/jsm/loaders/ifc/web-ifc-api.js
  3. 二进制
      examples/jsm/loaders/ifc/web-ifc.wasm
  4. 23 14
      examples/webgl_loader_ifc.html

文件差异内容过多而无法显示
+ 935 - 111
examples/jsm/loaders/IFCLoader.js


文件差异内容过多而无法显示
+ 4557 - 4480
examples/jsm/loaders/ifc/web-ifc-api.js


二进制
examples/jsm/loaders/ifc/web-ifc.wasm


+ 23 - 14
examples/webgl_loader_ifc.html

@@ -69,27 +69,36 @@
 
 
 				} );
 				} );
 
 
-				function selectObject(event) {
-					if (event.button != 0) return;
+				const highlightMaterial = new THREE.MeshPhongMaterial( { color: 0xff00ff, depthTest: false, transparent: true, opacity: 0.3 } );
+
+				function selectObject( event ) {
+
+					if ( event.button != 0 ) return;
 
 
 					const mouse = new THREE.Vector2();
 					const mouse = new THREE.Vector2();
-					mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
-					mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;
+					mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
+					mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
 
 
 					const raycaster = new THREE.Raycaster();
 					const raycaster = new THREE.Raycaster();
-					raycaster.setFromCamera(mouse, camera);
+					raycaster.setFromCamera( mouse, camera );
+
+					const intersected = raycaster.intersectObjects( scene.children );
+					if ( intersected.length ) {
 
 
-					const intersected = raycaster.intersectObjects(scene.children);
-					if (intersected.length){
-						const faceIndex = intersected[0].faceIndex;
-						const id = ifcLoader.getExpressId(faceIndex);
+						const found = intersected[ 0 ];
+						const faceIndex = found.faceIndex;
+						const geometry = found.object.geometry;
+						const id = ifcLoader.ifcManager.getExpressId( geometry, faceIndex );
 
 
-						ifcLoader.highlightItems([id], scene);
-						const props = ifcLoader.getItemProperties(id, true);
-						console.log(props);
+						const modelID = found.object.modelID;
+						ifcLoader.ifcManager.createSubset( { modelID, ids: [ id ], scene, removePrevious: true, material: highlightMaterial } );
+						const props = ifcLoader.ifcManager.getItemProperties( modelID, id, true );
+						console.log( props );
 						renderer.render( scene, camera );
 						renderer.render( scene, camera );
-					} 
-				}
+			
+		}
+			
+	}
 
 
 				window.onpointerdown = selectObject;
 				window.onpointerdown = selectObject;
 
 

部分文件因为文件数量过多而无法显示