将Aframe动态画布作为纹理

时间:2019-10-25 09:25:02

标签: canvas aframe

我试图在我的aframe项目中使用画布作为纹理。我找到了一些说明here。它提到:

  

随着画布的变化,纹理将自动刷新。

但是,我今天尝试一下,只能在init函数中更改/更新画布。此后,无法反映对画布的更新。这是我的实现:

std::set

纹理的颜色变化从未改变。我有什么想念的吗?非常感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

我永远无法使它们与那些指令一起工作(尽管从未检查出是否存在错误或使用不当),但是您可以使用Three.js达到相同的目的:

// assuming this is inside an aframe component
init: function() {
  // we'll update this manually
  this.texture = null
  let canvas = document.getElementById("source-canvas");
  // wait until the element is ready
  this.el.addEventListener('loaded', e => {
     // create the texture
     this.texture = new THREE.CanvasTexture(canvas);

     // get the references neccesary to swap the texture
     let mesh = this.el.getObject3D('mesh')
     mesh.material.map = this.texture
     // if there was a map before, you should dispose it
  })
},
tick: function() {
  // if the texture is created - update it
  if (this.texture) this.texture.needsUpdate = true
}

this小故障进行检查。

代替使用tick函数,只要您从更改画布得到任何回调(鼠标事件,源更改),就可以更新纹理。