2014年12月8日 星期一

20141208 JSONLoader 複數model

現在回去研究放置多個models在同個scene裡,threex-master\src\threex.romemodels\examples
threex.cubecamera-master\examples作參考。為了要讓放的position可以修改,所以嘗試在
threex-master\src\threex.romemodels\examples\selector.html另外寫一個function,讀code時發現,若想要在一開始loading model時決定位置較恰當的方式是在threex.romemodels裡另外開寫一個load model function,於是複製專案,並重新命名,練習測試路徑如下
WebGL Learning\threex.romemodelsWG\examples\selector.html
在threex.romemodelsWG下,自定義練習的loading function,loader.loadWG(),練習寫時遇到THREE.MeshPhongMaterial,看來他是用來處理loading進來的model的skin用的,只裡面有個參數morphTargets,不知是何,估狗到這篇javascript - Morph Targets Three.js - Stack Overflow,稍微略讀後的理解是,把這參數設為true,morphTargets: ture,那麼你就可以改變loading進來的JSON model的大小了。
上面的方式失敗,loader裡並沒有讓我們控制位置的方式,對於要如何控制model的position,參考20141020 今日學習
WebGL Learning\threex.romemodelsWG\examples\selector.html裡已經成功讀到兩個model,但問題第二個model會動第一個確不會動,參考threex.cubecamera-master的走路工,嘗試讀複數models時,估狗到javascript - Three.js - load JSON model once and add it multiple times - Stack Overflow這篇文章,感覺不錯,難度也比走路工低,先嘗試這篇的寫法看看,實作時發現,這是load相同的model,後來想起來,曾經看過threeX有複數models的demo,找到
WebGL Learning\threex.romemodelsWG\examples\basic.html
,開始閱讀之,略讀一下.....還滿簡單的 XD,明天12/9應該就可以寫出來了。

(以下2014/12/09新增)
參考後WebGL Learning\threex.romemodelsWG\examples\basic.html發現要去學習threex.romemodels.js裡的THREEx.RomeModels.loadHorse()的寫法,若是想要設定讀取model後的位置放在哪,可參考WebGL Learning\threex.romemodelsWG\examples\basic.html裡,THREEx.RomeModels.loadHorse()裡面的
mesh.position.x = -1
mesh.position.y = 0.5
mesh.rotation.y = Math.PI/2
為了理解使用的model是如何定義的,閱讀WebGL Learning\threex.romemodelsWG\threex.romemodels.js裡的THREEx.RomeModels.load(),裡面的mesh是用THREE.MorphAnimMeshMorphAnimMesh繼承自three.js裡的object3D

已成功讀取複數models,請見WebGL Learning\threex.romemodelsWG\examples\basic.html

(以上2014/12/09新增)

沒有留言:

張貼留言