2013-12-10 76 views
0

我创建了一个Mesh具有PlaneGeometry和从JPEG图像加载的纹理定义的材质。一切都很好,除了在使用深色显示平面时纹理图像加载之前还有一小段时间。有没有办法将这种颜色改为别的东西?网格纹理背景颜色

我试过材料color选项,但没有应用。

var texture = new THREE.ImageUtils.loadTexture('/path/to/image'); 
texture.minFilter = THREE.LinearMipMapLinearFilter; 
texture.magFilter = THREE.NearestFilter; 
var material = new THREE.MeshBasicMaterial({ 
    side : THREE.DoubleSide, 
    map : texture, 
    color : 0xf0f0f0 
// this doesn't seem to work 
}); 
var geometry = new THREE.PlaneGeometry(Math.abs(line.x1 - line.x0), depth); 
var mesh = new THREE.Mesh(geometry, material); 

回答

2

黑色是没有任何纹理数据的纹理渲染。最简单的解决方法是加载纹理和网格,但不要渲染网格,直到两者都完全加载。

另一种选择是创建一个非常小的1x1纹理,它是您想要的颜色,将其用作最初的纹理,然后在所需纹理完全加载后将网格材质更改为最终纹理。

+0

选项#1的作品,但我宁愿第二个。但是,我无法弄清楚如何实际更新最终纹理的网格材质。 –

+1

尝试将material.needsUpdate标志设置为true。 您可以在Three.js wiki中找到更多关于如何使用WebGLRenderer更新内容的详细信息和示例。 https://github.com/mrdoob/three.js/wiki/Updates –

+0

非常好,谢谢! –