Повторение материала видеосферы не позволяет работать в A-кадре

#three.js #html5-video #aframe

Вопрос:

Я сталкиваюсь со следующей проблемой: <a-videosphere material="repeat: ..." не работает шов, в то время как он работает с простым a-video тегом.

Я пытаюсь создать полусферу и отобразить на ней левую половину равноугольного видео.

 material="side: back; shader: flat; repeat: 0.5 1;"
geometry="primitive: sphere; radius: 100; thetaStart: 0; thetaLength: 180; phiStart: 0; phiLength: 180; segmentsWidth: 64; segmentsHeight: 64"
 

Повторение материала не поддерживается видеосферами? Есть ли какой-нибудь обходной путь?

Комментарии:

1. Интересно, что это работает, <a-sphere> если я использую : <a-sphere material="src: #video_sphere; side: back; shader: flat; repeat: 0.5 1;" geometry="primitive: sphere; radius: 100; thetaStart: 0; thetaLength: 180; phiStart: 0; phiLength: 180; segmentsWidth: 64; segmentsHeight: 64" etc... >

2. Я думал material , что это установка значений текстуры перед videotexture использованием, понятия не имею, почему <a-sphere> это работает, но в любом случае вы всегда можете получить доступ к нижележащему THREE.js слою и установить все, что вам нужно

Ответ №1:

Вы всегда можете получить прямой доступ к текстуре видео, и там установите repeat значение:

 // custom component declaration
AFRAME.registerComponent("foo", {
  init: function() {

    // wait until the texture is loaded
    this.el.addEventListener("materialtextureloaded", e => {
      // grab the texture
      const tex = e.detail.texture; 
      // set the repeat value
      tex.repeat.set(0.5, 1); 
    })
   }
})
// <a-videosphere foo></a-videosphere>
 

Проверьте это в этом глюке

Комментарии:

1. Я вижу только черную полусферу без каких-либо текстур в вашем примере с глюком.

2. @Kory75 вы мобильный, iOS или macOS?