1. 程式人生 > >102 Three.js 使用幾何體生成拱門形狀

102 Three.js 使用幾何體生成拱門形狀

Three.js的幾何體已經能夠建立很多的幾何體模型,但是,遠遠還達不到特殊需求的幾何體模型。今天,我就記一下如何製作特殊幾何模型的感想。
這裡寫圖片描述
這是我製作的一個簡單的拱門形狀的幾何體。這個建立可以使用BSP外掛建立兩個模型一個立方體和一個圓柱進行求餘。但是,今天我們不用外掛,自己手動實現。接下來我說一下實現的原理。

實現原理

大家都知道,點組成的面,面組成的模型。如果我們可以進行頂點的位置調整的話,那就可以實現這個模型的建立。所有的特殊模型我們都可以按照這個原理算出。找到模型的規律,然後按照規律建立頂點,生成面,實現模型的形狀,基本上就是這個道理。接下來我們看一下這個拱門是如何計算出來的。

  • 首先,我先例項化了一個立方几何體,橫向的切分數設定的大一些,可以讓圖形更加的平滑。
var geometry = new THREE.BoxGeometry(100, 5, 3, 400, 1);
  • 然後,迴圈geometryvertices陣列,這個屬性是當前幾何體所有頂點的位置,我們遍歷陣列,然後處理一半的頂點,讓他計算出來修改後的頂點的位置:
geometry.vertices.forEach(function (item) {
    item.z -= 1.5;

    if (item.z < 0) {
        item.z = 0;
    }
    else {
        item.z
-= Math.sqrt(2500 - item.x * item.x) - 50; } });

這樣計算完成後,再例項化mesh物件,放到場景中,就會出現上面圖片的效果了。

var cube = new THREE.Mesh(geometry, meshMaterial);
scene.add(cube);