THREE.CanvasTexture needsUpdate не помогает

Oct 07 2020
  • У меня есть видео тег, и он играет простое видео. [работает]
  • У меня есть canvas2d с воспроизведением того же видео [работает]
  • обработка видео opencvjs (холст выводится, видео вводится) - тоже работает
  • У меня three.js с плоской сеткой
          texture = new THREE.CanvasTexture(this.$refs.testcanvas)
          texture.needsUpdate = true;
          materialLocal = new THREE.MeshBasicMaterial({ map: texture })
          materialLocal.needsUpdate = true;
          materialLocal.map.needsUpdate = true;
          this.mainVideoMesh.material = materialLocal
          this.mainVideoMesh.material.needsUpdate = true;

Никаких проблем. Я получил только первую текстуру экрана изображения и перестает обновляться.

Во время выполнения я нашел ->

  this.scene.children[2].material.map.needsUpdate: undefined

Странная ситуация, любое предложение.

Ответы

Mugen87 Oct 08 2020 at 08:52

При использовании видео в качестве источника данных для текстуры идея заключается в использовании класса THREE.VideoTexture . Этот тип текстуры будет автоматически управлять своим needsUpdateфлагом, чтобы новые кадры правильно отображались на вашей плоской сетке.

Использование THREE.VideoTextureтребует использования в качестве аргумента элемента видео, а не холста.