【Three.js】将IFC.js结合到vue项目中
创始人
2024-06-03 13:15:42
0

欢迎查看

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. 参考链接

IFC.js的hello-world:https://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.js:https://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

相关内容

热门资讯

千岛湖导游词 千岛湖导游词  作为一名导游,有必要进行细致的导游词准备工作,导游词是我们引导游览时使用的讲解词。那...
四川峨眉山导游词 四川峨眉山导游词15篇  作为一名优秀的旅游从业人员,通常会被要求编写导游词,导游词具有极强的实用性...
四川经典导游词 四川经典导游词(通用13篇)  作为一位无私奉献的导游,通常需要用到导游词来辅助讲解,导游词是导游员...
鹿邑老君台导游词 鹿邑老君台导游词  老君台原名升仙台或拜仙台,原为明道宫的一部分,位于老子故里鹿邑县城内东北隅,老君...
长城英文导游词最新 长城英文导游词【最新】  长城是我国著名的古建筑,下面是由应届毕业生小编为大家带来的关于长城英文导游...
西部梦幻峡谷旅游区导游词 西部梦幻峡谷旅游区导游词各位游客,女士们、先生们:  大家上午好!我叫巴图,蒙古语意为坚固的、可靠的...
颐和园英文导游词 颐和园英文导游词精选  Hello, welcome you to Beijing Summer P...
黄山云海导游词 黄山云海导游词范文(精选10篇)  作为一名专门引导游客、助人为乐的导游,总归要编写导游词,导游词可...
宜春明月山导游词 宜春明月山导游词  宜春是个出美景的好地方。小编下面为大家收集整理了宜春明月山导游词,欢迎阅读!  ...
河南导游词 河南导游词  作为一位出色的导游人员,常常要写一份好的导游词,导游词具有极强的实用性,涉及的知识十分...
民居导游词六百字 民居,也是特色的景点之一。以下是PINCAI小编整理的关于导游词的相关内容,欢迎阅读和参考!民居导游...
英文导游词欢迎词 篇一:英文导游欢迎词范文Ladies and gentlemen:Welcome to ______...
介绍青岛的导游词 介绍青岛的导游词  作为一名专门引导游客、助人为乐的导游,往往需要进行导游词编写工作,导游词的主要特...
介绍山西普救寺导游词 介绍山西普救寺导游词  作为一无名无私奉献的导游,时常要开展导游词准备工作,导游词是导游员在游览时为...
孔府导游词 >孔府导游词颜宇欣 各位游客: 大家好!欢迎大家来到孔府游玩,孔府导游词。我是今天的导游颜宇欣,大家...
乔家大院简介导游词 乔家大院简介导游词  导游词是导游人员引导游客观光游览时的讲解词,是导游员同游客交流思想,向游客传播...
乐山大佛导游词 乐山大佛导游词500字五篇  作为一位尽职的导游,有必要进行细致的导游词准备工作,导游词是导游员同游...
湖北武当山紫霄宫导游词 湖北武当山紫霄宫导游词各位朋友们:  紫霄到了,你们看前面半天云里山峰是否像一面展开的旗帜,这就是展...
明十三陵概况及神道导游词 明十三陵概况及神道导游词  明十三陵位于北京市昌平区北部天寿山下,因明代迁都北京后,有十三位皇帝埋葬...
九华山导游词作文400字 九华山导游词作文400字  以下是九华山的导游词作文400字范文,希望对大家有帮助!  篇一:九华山...