【Three.js】将IFC.js结合到vue项目中

紧急提醒

本实例使用的库已被废弃!!!本实例使用的库已被废弃!!!本实例使用的库已被废弃!!!
在这里插入图片描述

请使用该库的同项目component代替,component的文档需要梯子才能查看,比较麻烦。
虽然很气恼,也是花费了好几个月的时间去搞这些,但是component 的项目创建流程就非常非常简单了,估计大家也不会需要到这篇文章了。看看后续是否再更新相关的文章。


欢迎查看

IFC这个坑,很少人探,那我就来探一探…(还不是项目需要?!)
话不多说,直接开整

1. 下载IFC运用例子

Tips:不要去看 three.js 的 examples 上面的IFC.js例子!!!千万不要去看!!!容易被误导。

直接到 IFC.js 的 github 上,找到 hello-world 项目去看,建议下载下来。

2. 编辑demo或者新建demo

可以直接在 hello-world 上面直接编辑(那你得删掉其他的例子);或者,自己新建一个vue项目demo(这个我就不负责了哈)。

3. 配置项修改

这整个过程最烦的就是这个:
在hello-world例子根目录下package.json可以看到它使用的命令是调用 example-builder.js,而这个js其实就是把各个demo的路径下的rollup.config.js,插上路径并循环调用。那么,我们的demo里面的package.json直接调用rollup.config.js就行了(记得路径要对,我这里是放到根目录下的)。

这是package.json的主要配置:
package.json对应的配置
这里插播一个小知识:
start 这个命令运用的是一起执行两个命令。可以先改,后面再说到为啥要这样用。

先全局下载concurrently模块:npm install -g concurrently
然后再改命令:
“scripts”: {
“start”: "concurrently “rollup -c ./rollup.config.mjs -w -m inline” “vue-cli-service serve” ",

然后,到了rollup.config.js配置:
rollup.config.js的对应配置

此配置的核心思想是:把入口文件以及其依赖的js文件进行打包,但是,又能在开发的过程中使用到打包后的bundle.js里面的方法函数

至于为啥要打包…嗯,IFC.js的教程上就是这样写的。

Tips:threeIfcScene.js 是你要封装的three.js、ifc.js使用的一个组件,你可以自定义别的名字。这个组件里面可以直接使用 hello-world 的js,或者使用 three.js 的IFC例子。建议里面的方法是用 export 形式。

4. index.html调用

index.html调用
这里就是按照教程和例子中的走

5. vue页面中使用

vue页面中使用
核心的地方在于:第3步的时候,你rollup.config.js打包的时候设置了output.format: 'umd',添加output.name选项,指定UMD模块的名称,确保在浏览器中可以正确使用。

6. 运行看看

运行的步骤根据教程来走的话,应该是先打包成bundle.js,然后再执行项目启动(three教程里面是打开一个静态服务器live-serve)。所以,我的 start 命令设置成了一次执行两个命令

7. 可能会出现的问题

——编译问题,就是什么要package.json要加上“type”:"module"或者把执行的js改成“.mjs”后缀名。

这里的话,我是选择后者,因为package.json加上“type”:“module”,依旧会出现新的问题,烦不胜烦。
.js改成.mjs

——rollup.config.js 和 package.json 命令执行的时候,会报找不到文件地址的错误。

排查一下是不是真的路径错误;其次,关闭项目,再重新打开看看。

——wasm找不到。

建议 npm install 或者 yarn install 依赖后,到node-modules/web-ifc 找到 web-ifc-mt.wasmweb-ifc.wasm复制出来放在public或者哪个放静态资源的文件夹下。此步骤,IFC教程也有建议。

——IFC.js的接口文档一定一定要看啊!!!!

——我的 threeIfcScene.js 大致代码(主要是从 three.js 里面的 examples 的 ifc例子 中拷贝的):
大致代码

8. 实例

【Three.js】将IFC.js结合到vue项目中——实例

9. 参考链接

IFC.js的hello-worldhttps://ifcjs.github.io/info/zh/docs/Hello%20world/
IFC.js的github的hello-world项目https://github.com/IFCjs/hello-world
IFC.js的鼠标拣选:https://ifcjs.github.io/info/zh/docs/Guide/web-ifc-three/Tutorials/Picking
three.jshttps://threejs.org/docs/index.html#manual/zh/introduction/How-to-run-things-locally
three.js的 ifc 例子预览(建议直接下载three.js跑起来看它的例子):https://threejs.org/examples/?q=IFC#webgl_loader_ifc
rollup从入门到打包一个按需加载的组件库https://zhuanlan.zhihu.com/p/486644411?utm_id=0

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
### 回答1: three.js 是一种用于创建交互式 3D 图形的 JavaScript 库,而 IFC(Industry Foundation Classes) 是一种用于描述建筑信息模型的行业标准格式。在 three.js 提取 IFC 几何结构并生成 JSON 格式数据可以通过以下步骤实现: 首先,需要将 IFC 文件转换为 three.js 可识别的格式。可以使用第三方工具(如 BIMserver、IfcOpenShell 等)将 IFC 文件转换为适用于 three.js 的格式,例如 COLLADA (.dae) 或 OBJ (.obj)。 在 three.js ,可以使用加载器(Loader)来加载转换后的文件。例如,可以使用 COLLADALoader 或 OBJLoader 来加载相应格式的文件。 加载完成后,可以通过遍历场景的对象来提取 IFC 的几何结构信息。可以使用 three.js 提供的方法和属性来访问和处理每个对象的顶点、面等几何信息。 通过遍历对象的子元素,可以进一步获取每个对象的子级几何结构信息。这样可以递归地提取整个 IFC 模型的几何结构。 当获取到几何结构信息后,可以使用 JSON.stringify() 将其转换为 JSON 格式的字符串。这样就可以将 IFC 的几何结构以 JSON 格式保存下来。 最后,可以使用 JSON.parse() 方法将 JSON 格式的字符串转换回对象,并对其进行进一步的处理和展示。 通过上述步骤,就可以在 three.js 提取 IFC 的几何结构并生成 JSON 格式数据,以便后续的处理、展示和分析。 ### 回答2: three.js 是一个使用 JavaScript 创建和展示 3D 图形的库。IFC(Industry Foundation Classes)是一种工业建模文件格式,用于描述建筑和基础设施项目。要从 IFC 几何数据提取出 JSON 格式的数据,可以采用以下步骤: 首先,导入 three.js 库并创建一个场景(scene),用于展示提取的几何数据。 接下来,需要加载 IFC 文件。可以使用 three.js 提供的 IFCLoader 来加载 IFC 文件,并将其转换为 three.js 可以处理的数据结构。 加载完成后,IFC 文件的几何数据将被转换为 three.js 的几何体(Geometry)对象。可以通过遍历几何体来访问并提取其的数据。 在遍历过程,可以将几何体的相关数据,如顶点坐标、法线信息和纹理坐标等,提取出来,并将其存储为 JSON 格式的数据对象。 最后,将提取的几何数据对象转换为 JSON 字符串,并进行保存或传输。 总结起来,要提取 IFC 几何数据并转换为 JSON 格式,可以使用 three.js 库加载和处理 IFC 文件,遍历几何体对象来提取相关数据,并将其转换为 JSON 格式的数据对象。 ### 回答3: three.js 是一个用于创建和显示 3D 图形的 JavaScript 库。它支持各种图形文件格式,包括 ifc(Industry Foundation Classes)。 ifc 是一种用于建筑信息模型(BIM)的通用数据格式,用于描述建筑信息和几何数据。在 three.js ,我们可以使用 ifc 文件包含的几何数据来创建并显示建筑模型。 要提取 ifc 几何数据并将其转换为 three.js 可以使用的格式(如 JSON),我们可以使用一个库或工具来帮助我们完成这个过程。目前,有一些开源的工具可以帮助我们实现这个目标,比如 "ifc.js" 或 "web-ifc"。 这些工具在读取 ifc 文件时会解析其的几何数据,并将其转为 JSON 格式,便于在 three.js使用。我们可以将 JSON 数据加载到 three.js 场景,并使用 three.js 提供的方法显示和操作模型。 使用这些工具的步骤大致如下: 1. 将 ifc 文件加载到 JavaScript 环境。 2. 使用 ifc.js 或 web-ifc 等工具解析 ifc 文件的几何数据,并将其转换为 JSON 格式。 3. 将解析后的 JSON 数据加载到 three.js 场景,创建相应的几何体对象。 4. 使用 three.js 提供的方法设置材质、光源等,并将几何体对象添加到场景进行显示。 5. 可以通过 three.js 的控制器、相机等功能来操作和浏览模型。 总之,通过使用 ifc.js 或 web-ifc 等工具,我们可以将 ifc 文件的几何数据提取并转换为 three.js 可以使用的 JSON 格式,从而在浏览器创建和显示建筑模型。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值