3d微信簽到源碼
『壹』 Three.js源碼解讀一:Object3D
可能很多同學會發現,學習Three.js的API非常容易,但是真正理解API的作用卻非常難。其實讓大家感到難的並不是Three.js本身,而是Three.js背後所隱藏的3D圖形學知識。本系列Three.js源碼解讀文章,會幫你一邊補齊3D圖形學的基礎知識,一邊真正理解到Three.js的實現原理,知其然,知其所以然。
Object3D是ThreeJS中大部分物體的基類,它包含了物體的位移,旋轉,縮放,以及各個物體父子關系的js實現。選取Object3D幾個重要的屬性做解釋:
一個3D對象往往由多個父子對象組成,父對象的位移, 旋轉, 縮放會傳遞給所有的子對象。
this.parent指向父對象,this.children包含了所有的子對象。
通過 add 為物體添加子對象。需要注意的是,如果該子對象有其他的父對象,會先解除子對象和舊的父對象的父子關系,然後將子對象添加到新的父對象中。
this.matrix表示物體自身的本地形變,this.matrixWorld表示物體的全局形變。當物體沒有父對象時,全局形變就是本地形變。
為什麼對象組合這么重要呢?看下面的例子:
這兩個立方體共同組成了一個3D對象,下面的立方體為禪祥段底座,上面的立方體為操作臂。當底座轉動的時候,操作臂會同樣轉動,所以操作臂的形變會傳遞給底座。當操作宴御臂旋轉時,底座不會被影響。
這里,底座就是操作臂的父對象。只要簡單的將底座的全局形變(this.parent.matrixWorld)和操作臂的本地形變賀譽(this.matrix)相乘,就能得到操作臂的最終形變。是不是很方便?
3D物體的位移,旋轉,縮放都可以通過矩陣表示。其中,旋轉除了通過矩陣,還可以通過歐拉角和四元數表示。
Object3D的rotation代表物體旋轉的歐拉角表示,quaternion代表了四元數表示,他們是3D物體統一旋轉的不同數學表達方式。(矩陣,歐拉角,四元數表示旋轉
onRotationChange , onQuaternionChange 這兩個回調用於同步歐拉角和四元數,保證他們代表著相同的旋轉角度。
3D交互一個很大一部分工作量是需要在物體的本地空間( this.matrix )和世界空間( this.matrixWorld )進行坐標轉換。
『貳』 微信公眾平台二維碼簽到的原理是什麼有代碼可以熟悉一下嗎
公眾平台二維碼簽到原理有兩種形式,一種是會議之前先報名,另一種就是直接到會議現場掃描二維碼簽到。