Vue-3D-Model:用簡單的方式來展示三維模型


為什么做這個組件

我經常聽到前端朋友們抱怨,在網頁上展示三維模型太麻煩了。但是這方面的需求又有很多,例如做房地產的需要展示戶型、賣汽車的需要展示汽車模型等。

在網頁上展示三維模型就只能用WebGL技術了(別跟我說Flash和其他非標准插件啦),但是WebGL編程和JS區別太大,最好的方式大概是使用在WebGL基礎上封裝的庫,例如three.js,但是three.js的學習成本也非常高,並且坑非常多。

所以我就開始做這個組件,目的只有一個:用最簡單的方式來解決三維模型展示的需求

解決了哪些問題

當一個新手試圖用three.js來展示一個模型(這一般是經過了數天的學習以后),他通常不會一開始就得到自己想要的結果。要么模型是一片黑色,或者模型根本就看不到。這里實際上有三個問題:

  1. 建模軟件或軟件配置的區別,導致模型尺寸的單位不統一,需要手動調節參數放大或者縮小
  2. 模型可能偏移了中心點,導致可視范圍內看不到模型
  3. 沒有給模型合適的光照

這些看似簡單的問題實際上並不容易解決。即使解決了這些問題,還有更大的BOSS等着你:

你可能需要通過鼠標來旋轉模型,或者通過滾輪來放大縮小。或者更進一步,你需要知道鼠標點擊時,是否點中了模型,點中的是哪個部分。

這些都是聽起來就很頭疼的問題,要解決他們你至少需要有一定的圖形學知識,或者對three.js的各種類了如指掌。

現在這些問題都被Vue-3D-Model解決了,如果你已經會使用vue(不會的話可以花幾個小時學習一下),那么只需要短短幾行代碼就可以解決這些問題了:

<body> <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> </body> 
 
效果

它會自動將模型以合適的大小顯示出來,如果模型偏離了中心點也會自動校正。並且直接就可以通過鼠標來旋轉和縮放了。這是一個在線的例子(牆內可能加載比較慢):DEMO

當然,你也可以通過給組件傳入參數來手動調節。更詳細的使用方式可以在github上看到。

接下來要做的事

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

文檔和示例我也會找時間繼續補充的,如果有問題或者其他需求,也可以來提issue。



作者:hujiulong
鏈接: https://www.jianshu.com/p/c093ff00ea1b
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM