目录

  • 1.引入包三个包
  • 2.在vue 组件内 import文件
  • 3.在mound钩子函数内调用
  • 4.效果图
  • 部分加载报错
  • 另:HTML页面使用three加载obj文件和mtl文件

1.引入包三个包

npm i three
npm i three-obj-mtl-loader
npm i orbitcontrols

第三个是辅助控制缩放 移动的

2.在vue 组件内 import文件

3.在mound钩子函数内调用


文件

let that = this;this.windowHalfX = window.innerWidth / 2;this.windowHalfY = window.innerHeight / 2;let divs = document.createElement('div');this.container = document.querySelector('.Modal');this.container.appendChild(divs);// 场景this.scene = new THREE.Scene();// 相机this.camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000);this.camera.position.z = 1.5;// 灯光var light = new THREE.AmbientLight('#deebf7', 0.9); // soft white lightthis.scene.add(light);// 渲染器this.renderer = new THREE.WebGLRenderer();this.renderer.setSize(window.innerWidth, window.innerHeight);// this.renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色divs.appendChild(this.renderer.domElement);var onProgress = function(xhr) {if (xhr.lengthComputable) {var percentComplete = (xhr.loaded / xhr.total) * 100;console.log(Math.round(percentComplete, 2) + '% downloaded');}};var onError = function(xhr) {console.log(xhr)};var MTLLoaders = new MTLLoader();var OBJLoaders = new OBJLoader();var textureLoader = new THREE.TextureLoader();MTLLoaders.load('https://xxxxxxxxx.com/18559677286/mesh.mtl', (materials) =>{console.log(materials);materials.preload();// OBJLoaders.setMaterials(materials)OBJLoaders.load('https://xxxxxxxxx.com/18559677286/mesh.obj',(object)=> {console.log(object);// 设置旋转中心点object.children[0].geometry.computeBoundingBox();object.children[0].geometry.center();object.scale.set(3, 3, 3);object.position.y = 0;// this.scene.add(materials);this.scene.add(object);this.renderer.render(this.scene, this.camera);// requestAnimationFrame(anime);textureLoader.load('https://xxxxxxxxx/18559677286/mesh.png', (texture)=> {console.log(texture, object);object.children[0].material.map = texture;// object.children[1].material.map = texture;object.children[0].material.needsUpdate = true;// object.children[1].material.needsUpdate = true;this.scene.add(object);this.renderer.render(this.scene, this.camera);});},onProgress,onError);});window.addEventListener('resize', onWindowResize, false);const controls = new OrbitControls(this.camera, this.renderer.domElement)controls.enableDamping = truecontrols.dampingFactor = 0.25controls.enableZoom = falsecontrols.addEventListener('change', render); //监听鼠标、键盘事件function onWindowResize() {windowHalfX = window.innerWidth / 2;windowHalfY = window.innerHeight / 2;this.camera.aspect = window.innerWidth / window.innerHeight;this.camera.updateProjectionMatrix();this.renderer.setSize(window.innerWidth, window.innerHeight);}function render() {that.camera.lookAt(that.scene.position);that.renderer.render(that.scene, that.camera);}render();

4.效果图

部分加载报错


在node_module > three-obj-mtl-loader > index.js中找到第543行并注释掉。在 545行重新定义loader
原代码:

新修改

另:HTML页面使用three加载obj文件和mtl文件

Vue引入Thee.js 加载obj文件和mtl文件并上纹理贴图相关推荐

  1. three、vue中使用three、three怎么加载obj模型和mtl文件、three自定义800*800大小怎么拾取/点击

    以上都是这一个星期碰到的坑,找了很多很多资料,总结归纳一下,希望对你的项目有一点点帮助 先说说需求 1.加载3D模型 2.点击模型的子模型会显示对于子模型名称 3.不全屏展示,还要点击子模型 4.创建 ...

  2. vue使用three.js加载obj和mtl

    ①构建三维坐标,代码如下 <!-- --> <template><div id="container"></div> </te ...

  3. VR 效果 前端使用 three.js 加载 Obj,drc文件(三维模型文件)

    VR 效果 前端使用 three.js 加载 Obj(三维模型文件) 前言:我对 three.js 并不熟!只是朋友有这个需求,写了几个 demo 运行,能看~.如果想深入学习,还需要多看看官方文档, ...

  4. three.js加载OBJ模型

    three.js加载OBJ模型 推荐一个免费下载3D模型的网址https://www.cgtrader.com,包含多种格式(obj, mtl等). three.js现在是es6语法,旧版本是es5的 ...

  5. vue中通过js加载图片显现

    在vue开发中会遇到这样的问题:有时需要在img中加载多个静态资源的图片,如果我们将src的路径整个定义成一个变量,会发现img加载不出来正个图片的路径,其实此时需要require()来加载静态资源的 ...

  6. Three.js加载.obj和.mtl文件(无法加载材质、路径错误问题)

    加载.obj模型文件 本文是Three.js电子书的14.3节 使用三维软件导出.obj模型文件的时候,会同时导出一个材质文件.mtl, .obj和.stl文件包含的信息一样都是几何体顶点相关数据,材 ...

  7. threejs加载服务器文件,如何使用Three.js加载obj和mtl文件

    OBJ和MTL是3D模型的几何模型文件和材料文件. 在最新的three.js版本(r78)中,以前的OBJMTLLoader类已废弃. 现在要加载OBJ和MTL文件,需要结合OBJLoader和MTL ...

  8. three.js加载obj模型和材质

    1.Vue中安装three.js和加载用的包 安装three.js使用npm install three --save 安装加载obj和mtl文件的包npm install three-obj-mtl ...

  9. 首次使用three.js加载obj模型未成功

    接此,https://blog.csdn.net/bcbobo21cn/article/details/110676331 基本代码如下: <!DOCTYPE html> <html ...

最新文章

  1. iptables如何开放被动模式的FTP服务
  2. elementui 清空下拉框值_element中的select如何在下拉数据改变后清空之前的选择?...
  3. 红黑树(二)之 C语言的实现
  4. 外卖和快递行业数据_下周一起,整治全面启动!锁定全市外卖、快递行业!
  5. ASP.NET MVC入门---实例演示:通过ContentResult实现主题定制
  6. 如何提高网页中图片显示的用户体验(附源码下载)
  7. 10 MM配置-主数据-定义物料类型
  8. 【SpringCloud】服务网关 gateway 和 zuul
  9. mac 看端口占用并杀死进程
  10. java long类型6_Java学习6——基本数据类型及其转换
  11. eclipse git拉取失败_收藏!工作中Git使用实践和常用命令流程合集
  12. 数据库系统概论第五版 课后习题答案王珊
  13. web逻辑思维题目_逻辑思维训练500题
  14. 3D打印文件格式:STL、OBJ、AMF、3MF
  15. Android IBeacon
  16. 如何用计算机环境设计,计算机绘图软件在环境艺术设计中运用.doc
  17. PC端和移动端自适应问题解决方法
  18. 大数据+咖啡因| 可口可乐的转型升级探索
  19. 模拟人生 java 安卓版,模拟人生畅玩版
  20. CRMEB 打通版4.3

热门文章

  1. 一文详解自动驾驶的动态驾驶任务(DDT) | 自动驾驶系列
  2. openGL之API学习(五十七)法线贴图、色彩贴图、高光贴图
  3. 【西米软件推荐】Downie 4 Mac OS 下最好用的视频下载软件
  4. 下载描述文件,体验使用 IOS 16 版新特性
  5. 第六届山东省大学生网络安全技能大赛决赛Writeup
  6. 使用Intent传递对象
  7. 青春是什么样的味道?
  8. 《数字图像处理》Learn about Superpixel 超像素介绍 非深度学习方法
  9. Bios设置引起linux卡界面,根据显示的BIOS信息来处理电脑无法启动故障的方法
  10. VL53L0X 驱动移植