【发布时间】:2017-12-04 16:25:42
【问题描述】:
我多次使用图像作为纹理,一次通过material 组件,另一次在自定义组件中。在后者中,我使用了THREE.TextureLoader(),这会导致应用程序加载图像两次。我敢打赌还有另一种方法。
现状
HTML
<!-- Assets -->
<a-assets>
<img id="my-map" src="path/to/map.jpg">
<a-asset-item id="my-model" src=path/to/model.gltf""></a-asset-item>
</a-assets>
<!-- Entities -->
<a-box material="src: #my-map">
<a-entity gltf-model="src: #my-model" custom-component="mymap: #my-map">
JS
// custom-component extract
schema: { mymap: { type: 'map' } }
init: function()
{
let mesh = this.el.getObject3D('mesh')
mesh.traverse( function( child )
{
if ( child.isMesh )
{
let TextureLoader = new THREE.TextureLoader()
let mymap = TextureLoader.load( data.mymap )
child.material = new THREE.MeshPhongMaterial({ map: mymap })
child.material.needsUpdate = true;
}
})
}
问题
如何在自定义组件中使用相同的图片资源而不加载两次?
【问题讨论】:
-
不知道能不能用
loadImagehelper...
标签: javascript three.js aframe