鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ three.js如何讓三角符號從屏幕中心顯示或隱藏?

three.js如何讓三角符號從屏幕中心顯示或隱藏?

項(xiàng)目首頁需要用到一個動畫,一個三角符號顯示、隱藏的動畫效果,利用 three.js 畫了這個三角符號,然后利用 tween.js 來顯示或隱藏這個三角符號,=但是現(xiàn)在都是從三角符號的底邊中點(diǎn)位置顯示或隱藏的,如何讓其在屏幕中心位置顯示或隱藏呢?

three.js 畫三角符號代碼

    var geometry = new THREE.Geometry();
    geometry.vertices.push(
      new THREE.Vector3(-x, 0, 0),
      new THREE.Vector3(0, Math.sqrt(3 * x * x), 0),
      new THREE.Vector3(x, 0, 0),
      new THREE.Vector3(-x, 0, 0)
    );
    
    var material = new THREE.LineBasicMaterial({color: 0xffffff, linewidth: 5});
    
    triangular = new THREE.Line(geometry, material);
    triangular.position.y = -2200;
    triangular.position.z = -1000;
    scene.add(triangular)

tween.js 控制三角符號顯示或隱藏代碼

    var scale = triangular.scale.x < 1 ? 1 : 0.0010000000000000009;
    var duration = scale == 1 ? 2500 : 500;
    new TWEEN.Tween(triangular.scale)
      .to({ x: scale, y: scale, z: scale }, duration)
      .easing(TWEEN.Easing.Quartic.InOut)
      .onComplete(function() {
        isMeTriang = false;
      }).start();
回答
編輯回答
冷眸

問題找到了,主要的問題是方向搞錯了,不是不用這么麻煩,直接跳漲三角符號的四個頂點(diǎn)就好。

思路:以三角符號的中心點(diǎn)(0,0,0)來計(jì)算4個定點(diǎn)的位置就行了,因?yàn)槿绻侵行奈恢镁褪秋@示、隱藏的位置!

錯誤原因:之前計(jì)算思路是,以中心位置的水平位置計(jì)算的兩個底角的位置,所以中心位置看上去在底邊的中心位置

2018年5月5日 09:52