Как клонировать масштаб объектов в определенную плоскость - PullRequest
0 голосов
/ 27 октября 2019

Я хочу клонировать объекты в масштабе, используя плоскость, используя javascript

Я пытался использовать это, но это, похоже, не работает

this.plane.setAttribute('animation__scale', {
      property: 'scale',
      dur: 300,
      from: '0.001 0.001 0.001',
      to: this.el.object3D.scale.clone(),
});

, но оно преобразуется, например, в определенный масштаб,

this.plane.setAttribute('animation__scale', {
      property: 'scale',
      dur: 300,
      from: '0.001 0.001 0.001',
      to: '1 1 1',
});

1 Ответ

0 голосов
/ 28 октября 2019

Значение to: должно быть строкой. Object3D.scale имеет тип THREE.Vector3. Вы можете написать функцию, которая преобразует вектор в строку.

function vectorToString(vec){
    if (vec){
        return vec.x.toString()+" "+vec.y.toString()+" "+vec.z.toString();
    } else {
        console.log('vectorToString error. vec:', vec);
        return null;
    }
}

, затем вы можете получить масштаб, преобразовать его в строку и использовать его в параметрах анимации.

   let newScale = vectorToString( this.el.object3D.scale.clone() );
    this.plane.setAttribute('animation__scale', {
          property: 'scale',
          dur: 300,
          from: '0.001 0.001 0.001',
          to: newScale
    });
...