Three.js: Как создать переход между двумя объектами? - PullRequest
0 голосов
/ 01 апреля 2019

Я создал туннель из цилиндров. Когда мышь находится в углу, она удаляет старый цилиндр и создает новый с другим количеством радиальных сегментов.

Но теперь изменение между объектами происходит без какого-либо перехода. Есть ли возможность сделать это?

Может быть, удаление объектов - неправильный путь?

var w = window.innerWidth;
var h = window.innerHeight;

var circle = new THREE.Mesh(
  new THREE.CylinderGeometry( 50, 50, 1024, 32, 1, true ),
  new THREE.MeshBasicMaterial({
    transparent: true,
    alphaMap: tunnelTexture,
    side: THREE.BackSide,
  })

);

Другие объекты созданы аналогично, только с 3/4/6 сегментами


  if (mouseX < w/4 && h-(h/4) < mouseY < h/4) {
              scene.remove(circle);
              scene.remove(triangle);
              scene.remove(hexagon);

              scene.add(rect);

            }
            if (mouseY > h-(h/4)) {

              scene.remove(circle);
              scene.remove(rect);
              scene.remove(hexagon);

              scene.add(triangle);


            }

            if (mouseX> w-(w/4) && h-(h/4) < mouseY < h/4) {

              scene.remove(triangle);
              scene.remove(rect);
              scene.remove(hexagon);

              scene.add(circle);


            }
            if (mouseY < h/4) {

              scene.remove(triangle);
              scene.remove(rect);
              scene.remove(circle);

              scene.add(hexagon);
}

Спасибо за вашу помощь! :)

1 Ответ

0 голосов
/ 01 апреля 2019

Вы можете изменить геометрию, которая "топологически идентична", но не так просто сказать, преобразовать один объект в другой.

Подобный вопрос, где "топологически идентично" объясняется: превращает куб в сферу

Возможно, вы могли бы подумать о том, как сделать это по-другому.

1) Вы можете сжать одну геометрию и порождать и одновременно вырастить другую геометрию, чтобы она выглядела как переход, по крайней мере.

2) Вы можете провести одним из экранов и ввести другой?

...