【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

相关内容

热门资讯

四年级我感动的事500字作文... 四年级我感动的事500字作文 篇一饭堂阿姨的爱心举动我记得有一次,我在学校的饭堂吃午饭。当时,我刚刚...
沙滩飞车四年级作文【推荐3篇... 沙滩飞车四年级作文 篇一:我喜欢沙滩飞车沙滩飞车是一款非常流行的游戏,在游戏中我们可以驾驶各种各样的...
我最喜欢的电影四年级作文(优... 我最喜欢的电影四年级作文 篇一我最喜欢的电影是《疯狂动物城》。这是一部由迪士尼制作的动画电影,讲述了...
保姆机器人作文四年级300字... 篇一:保姆机器人的好处保姆机器人是一种能够帮助家庭照顾孩子和家务的智能机器人。它的出现给人们的生活带...
老师的话350字作文(优选3... 篇一:老师的话作为学生,我们每天都会听到老师的讲话。他们是我们的引路人,是我们的启发者,更是我们的朋...
捉蚊趣事作文四年级【优质6篇... 捉蚊趣事作文四年级 篇一我家的蚊子大战夏天来了,蚊子也来了。我家的蚊子实在太多了,每天晚上都被它们咬...
四年级描写家长作文300字(... 四年级描写家长作文300字 篇一家长是孩子成长道路上最重要的陪伴者和引路人。家长的关心、爱护和教导,...
小学四年级同步上册作文(通用... 小学四年级同步上册作文 篇一我的暑假计划暑假就要来了,我已经制定了一个丰富多彩的暑假计划。首先,我打...
孩子我为什么要打你四年级作文... 孩子我为什么要打你四年级作文 篇一最近,我读了一篇关于家庭教育的文章,深受启发。这篇文章告诉我,作为...
四年级发生在我身边的一件事作... 四年级发生在我身边的一件事作文 篇一我和小猫的故事上周末,我在家玩耍时,突然听到门外传来一阵咿咿呀呀...
小学生四年级推普小作文【通用... 小学生四年级推普小作文 篇一我喜欢的动物我喜欢的动物是熊猫。熊猫是一种非常可爱的动物,它有着黑白相间...
无私奉献的秦老师【实用3篇】 无私奉献的秦老师 篇一秦老师是一位备受学生喜爱的教师,他以无私奉献的精神,默默地为学生们付出着自己的...
四年级作文小金鱼(最新3篇) 四年级作文小金鱼 篇一小金鱼是我家的新宠物,它在我的房间里游来游去,给我带来了无尽的乐趣。小金鱼是一...
最好的朋友四年级小学生优秀作... 最好的朋友四年级小学生优秀作文 篇一我最好的朋友是一个四年级的小学生,她叫小芳。我们从一年级开始就是...
我爱夏天-四年级作文【实用6... 我爱夏天-四年级作文 篇一夏天是我最喜欢的季节,因为它给我带来了无尽的欢乐和惊喜。每年的夏天,我都期...
四年级200字作文(精彩3篇... 四年级200字作文 篇一我的暑假计划暑假即将来临,我已经制定了自己的暑假计划。首先,我打算利用这个假...
四年级拟人句【精选3篇】 四年级拟人句 篇一小草的自述我是一株小草,生长在操场的角落里。虽然我只有绿色的叶子和细细的根,但我有...
百家筝鸣四年级作文(推荐3篇... 百家筝鸣四年级作文 篇一百家筝鸣四年级作文我喜欢听音乐,尤其是古典音乐。最近,我参加了学校的音乐课程...
我成长中的故事四年级作文【通... 我成长中的故事四年级作文 篇一我成长中的故事我是一个四年级的学生,从小到大,我有许多成长的故事。其中...
一杯苦茶四年级作文(实用3篇... 一杯苦茶四年级作文 篇一第一篇内容:一杯苦茶的故事春天的阳光透过窗户洒进教室,给人一种温暖的感觉。我...