一个用来展示三维模型的Vue组件,用最简单的方式在网页中展示三维模型,解决模型视角控制、鼠标事件等一系列问题。
项目地址:https://github.com/hujiulong/vue-3d-model

为什么做这个组件

我经常听到前端朋友们抱怨,在网页上展示三维模型太麻烦了。但是这方面的需求又有很多,例如做房地产的需要展示户型、卖汽车的需要展示汽车模型等。

在网页上展示三维模型就只能用WebGL技术了(别跟我说Flash和其他非标准插件啦),但是WebGL编程和JS区别太大,最好的方式大概是使用在WebGL基础上封装的库,例如three.js,但是three.js的学习成本也非常高,并且坑非常多。

所以我就开始做这个组件,目的只有一个:用最简单的方式来解决三维模型展示的需求

解决了哪些问题

当一个新手试图用three.js来展示一个模型(这一般是经过了数天的学习以后),他通常不会一开始就得到自己想要的结果。要么模型是一片黑色,或者模型根本就看不到。这里实际上有三个问题:

1. 建模软件或软件配置的区别,导致模型尺寸的单位不统一,需要手动调节参数放大或者缩小
2. 模型可能偏移了中心点,导致可视范围内看不到模型
3. 没有给模型合适的光照

这些看似简单的问题实际上并不容易解决。即使解决了这些问题,还有更大的BOSS等着你:

你可能需要通过鼠标来旋转模型,或者通过滚轮来放大缩小。或者更进一步,你需要知道鼠标点击时,是否点中了模型,点中的是哪个部分。

这些都是听起来就很头疼的问题,要解决他们你至少需要有一定的图形学知识,或者对three.js的各种类了如指掌。

现在这些问题都被Vue-3D-Model解决了,如果你已经会使用vue(不会的话可以花几个小时学习一下),那么只需要短短几行代码就可以解决这些问题了:

<div id="app"><model-obj src="static/model.obj"></model-obj></div><script src="vue.js"></script><script src="vue-3d-model.min.js"></script><script>new Vue({el: '#app'})</script>

它会自动将模型以合适的大小显示出来,如果模型偏离了中心点也会自动校正。并且直接就可以通过鼠标来旋转和缩放了。这是一个在线的例子(墙内可能加载比较慢):DEMO

当然,你也可以通过给组件传入参数来手动调节。更详细的使用方式可以在github上看到。

接下来要做的事

目前组件只支持OBJ格式以及three.js的JSON格式,后面马上就会支持dae、stl、fbx等格式的模型了。

文档和示例我也会找时间继续补充的,如果有问题或者其他需求,也可以来提issue。

github: https://github.com/hujiulong/vue-3d-model
点个星星吧

Vue-3D-Model:几行代码即可构造出炫酷三维场景相关推荐

  1. 如何用 160 行代码,实现动态炫酷的可视化图表?

    作者 | 前端劝退师 责编 | 伍杏玲 某天在逛社区时看到一帖子: react-dynamic-charts - A React Library for Visualizing Dynamic Dat ...

  2. 【高代码文件格式API】道宁为您提供文件格式API集——Aspose,只需几行代码即可创建转换和操作100多种文件格式

    Aspose系列产品是 高代码文件格式API 使您的应用程序能够处理 适用于所有主要平台的 Word.Excel.PDF.PowerPoint.Outlook 和100多种其他文件格式 Aspose提 ...

  3. Matlab:连续按键、移动鼠标、鼠标点击、鼠标连点、输入字符,10行代码即可。

    Matlab也可以实现按键J灵的一些基本功能,比如:连续按键.移动鼠标.鼠标点击.鼠标连点和输入字符!其中, "连续按键":指间隔一定的时间(如:0.1s)按一下某个按键(如:键盘 ...

  4. 免费开源的高精度OCR文本提取,支持 100 多种语言、自动文本定位和脚本检测,几行代码即可实现离线使用(附源码)

    免费开源的高精度OCR文本提取,支持 100 多种语言.自动文本定位和脚本检测,几行代码即可实现离线使用(附源码). 要从图像.照片中提取文本吗?是否刚刚拍了讲义的照片并想将其转换为文本?那么您将需要 ...

  5. python爬虫——三步爬得电影天堂电影下载链接,30多行代码即可搞定:

    python爬虫--三步爬得电影天堂电影下载链接,30多行代码即可搞定: 本次我们选择的爬虫对象是:https://www.dy2018.com/index.html 具体的三个步骤:1.定位到202 ...

  6. Python爬虫:想听榜单歌曲?使用BeautifulSoup库只需要14行代码即可搞定

    目录 BeautifulSoup库 安装BeautifulSoup库 BeautifulSoup库简介 选择解释器 基础用法 节点选择器 获取节点名称属性内容 获取所有子节点 获取所有子孙节点 父节点 ...

  7. 公开课丨硬核vue实战:码出炫酷宇宙星系

    在前端行业,有句「黑话」是这么说的:不会Vue的前端不是合格的前端工程师!Vue 和其他前端框架相比,在结构.样式.业务分离等方面更清晰彻底,以其独有的优势受到开发人员追捧. 今晚,黑马程序员金牌讲师 ...

  8. DAMO-YOLO | 超越所有YOLO,5行代码即可体验

    作者 | Random  编辑 | 3D视觉开发者社区 DAMO-YOLO 是阿里新推出来的目标检测框架,兼顾模型速度与精度,其效果超越了目前的一众 YOLO 系列方法,且推理速度更快.DAMO-YO ...

  9. Python到底有多强大?只需 15 行代码即可进行人脸检测

    无论你是最近开始探索OpenCV还是已经使用它很长一段时间,在任何一种情况下,您都一定遇到过"人脸检测"这个词.随着机器变得越来越智能,它们模仿人类行为的能力似乎也在增加,而人脸检 ...

最新文章

  1. JZOJ 4675. 【NOIP2016提高A组模拟7.21】Double-row
  2. 第17天学习Java的笔记(匿名对象,随机数,猜数字小游戏)
  3. 2016 亚洲共识指南:肺结节的评估
  4. docker 挂载主机目录 -v 和 --mount区别
  5. LeetCode 392. 判断子序列(双指针二分查找)
  6. java邮箱_java发送邮件(qq邮箱)
  7. Gartner数据劲爆:阿里全球第三,华为中国第二!
  8. 史海峰:构建产业互联网金融系统的正确姿势
  9. 前端开发使用react实现简易路由
  10. jwt和传统session的区别?
  11. 文本输入框的两种div+css的写法
  12. 2015阿里巴巴校招网上笔试
  13. 初米 php,什么字帖练字好初中米字格a4设置
  14. vue项目使用域名部署(一个域名多个项目)
  15. http 请求包含哪几个部分,分别有何作用?
  16. 第一课:DedeCMS仿站
  17. 一个投资者想要的真正的DAO-Revolution DAO
  18. Mac解压缩软件BetterZip如何选择压缩文件时的压缩格式
  19. TeamLab的介绍
  20. linux aptana,安装Aptana AJAX开发环境在Ubuntu上

热门文章

  1. 激光焊接设备行业领先企业概况与各地发展优劣势分析
  2. Ajax--概述、xhr对象的常用属性和方法、xhr的常用事件、xhr对象发送POST请求、xhr对象发送GET请求、xhr对象的兼容性问题、数据交换格式(XML、JSON)
  3. 圆、椭圆和三角形的代码画法
  4. Mybatis中的_parameter
  5. 神经网络输入图片大小,神经网络 图像相似度
  6. 百度地图api实现轨迹运动效果
  7. Undetected
  8. 嵩天老师Python面向对象-23,Python计算自然常数e
  9. 【微软Visual Studio面世20周年巨制】全宇宙功能最强大IDE Visual Studio 2017 正式版发布
  10. 两相编码器的FPGA驱动