【发布时间】:2020-04-06 12:12:57
【问题描述】:
我正在处理一个 A-Frame 项目,该项目在远处具有小纹理,使用默认的 three.js 纹理各向异性设置 1 很难看到。如何在 A-Frame 中的纹理上设置此值项目?
【问题讨论】:
我正在处理一个 A-Frame 项目,该项目在远处具有小纹理,使用默认的 three.js 纹理各向异性设置 1 很难看到。如何在 A-Frame 中的纹理上设置此值项目?
【问题讨论】:
这是一个包含建议的事件侦听器和最大各向异性值的修订组件。
AFRAME.registerComponent('max-anisotropy', {
dependencies: ['material', 'geometry'],
init: function () {
// wait until this material is ready ...
this.el.addEventListener('materialtextureloaded', () => {
let myMap = this.el.getObject3D('mesh').material.map;
myMap.anisotropy = this.el.sceneEl.renderer.capabilities.getMaxAnisotropy();
myMap.needsUpdate = true;
})
}
})
【讨论】:
这是我为解决这个问题而创建的一个非常简单的 A-Frame 组件:
AFRAME.registerComponent('af', {
dependencies: ['material', 'geometry'],
init: function () {
// wait until this material is ready ...
setTimeout(() => {
this.el.getObject3D('mesh').material.map.anisotropy = 4;
this.el.getObject3D('mesh').material.map.needsUpdate = true;
}, 5000);
},
})
我在这里使用setTimeout 作弊,因为我看到了一个错误,而没有延迟实施各向异性设置更改。
更新:根据 A-Frame 文档中的这个示例,可能可以侦听“materialtextureloaded”事件:https://aframe.io/docs/1.0.0/components/visible.html#hiding-entity-until-texture-loaded
【讨论】:
map.anisotropy = renderer.capabilities.getMaxAnisotropy();,而不是为各向异性分配硬编码值。通过这种方式,您可以检索取决于用户设备的最大各向异性值。