【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

相关内容

热门资讯

常用商务英语口语   商务英语是以适应职场生活的语言要求为目的,内容涉及到商务活动的方方面面。下面是小编收集的常用商务...
六年级上册英语第一单元练习题   一、根据要求写单词。  1.dry(反义词)__________________  2.writ...
复活节英文怎么说 复活节英文怎么说?复活节的英语翻译是什么?复活节:Easter;"Easter,anniversar...
2008年北京奥运会主题曲 2008年北京奥运会(第29届夏季奥林匹克运动会),2008年8月8日到2008年8月24日在中华人...
英语道歉信 英语道歉信15篇  在日常生活中,道歉信的使用频率越来越高,通过道歉信,我们可以更好地解释事情发生的...
六年级英语专题训练(连词成句... 六年级英语专题训练(连词成句30题)  1. have,playhouse,many,I,toy,i...
上班迟到情况说明英语   每个人都或多或少的迟到过那么几次,因为各种原因,可能生病,可能因为交通堵车,可能是因为天气冷,有...
小学英语教学论文 小学英语教学论文范文  引导语:英语教育一直都是每个家长所器重的,那么有关小学英语教学论文要怎么写呢...
英语口语学习必看的方法技巧 英语口语学习必看的方法技巧如何才能说流利的英语? 说外语时,我们主要应做到四件事:理解、回答、提问、...
四级英语作文选:Birth ... 四级英语作文范文选:Birth controlSince the Chinese Governmen...
金融专业英语面试自我介绍 金融专业英语面试自我介绍3篇  金融专业的学生面试时,面试官要求用英语做自我介绍该怎么说。下面是小编...
我的李老师走了四年级英语日记... 我的李老师走了四年级英语日记带翻译  我上了五个学期的小学却换了六任老师,李老师是带我们班最长的语文...
小学三年级英语日记带翻译捡玉... 小学三年级英语日记带翻译捡玉米  今天,我和妈妈去外婆家,外婆家有刚剥的`玉米棒上带有玉米籽,好大的...
七年级英语优秀教学设计 七年级英语优秀教学设计  作为一位兢兢业业的人民教师,常常要写一份优秀的教学设计,教学设计是把教学原...
我的英语老师作文 我的英语老师作文(通用21篇)  在日常生活或是工作学习中,大家都有写作文的经历,对作文很是熟悉吧,...
英语老师教学经验总结 英语老师教学经验总结(通用19篇)  总结是指社会团体、企业单位和个人对某一阶段的学习、工作或其完成...
初一英语暑假作业答案 初一英语暑假作业答案  英语练习一(基础训练)第一题1.D2.H3.E4.F5.I6.A7.J8.C...
大学生的英语演讲稿 大学生的英语演讲稿范文(精选10篇)  使用正确的写作思路书写演讲稿会更加事半功倍。在现实社会中,越...
VOA美国之音英语学习网址 VOA美国之音英语学习推荐网址 美国之音网站已经成为语言学习最重要的资源站点,在互联网上还有若干网站...
商务英语期末试卷 Part I Term Translation (20%)Section A: Translate ...