three.js CanvasRenderer - 为对象设置初始颜色和透明纹理

时间:2013-12-10 10:28:02

标签: javascript three.js

我尝试使用CanvasRenderer渲染我的对象,这会在运行时更改其纹理。 纹理是具有透明背景的PNG图像,我希望脸部的背景基色是从对象设置的。

我已阅读this以获取纹理成功加载并映射到对象中,但是当我尝试更改对象的初始颜色时,我发现对象的空白空间将保持透明(并且可以看到它)并没有任何我期待的基色。

以下是我用来对其进行试用的代码:

var texture = THREE.ImageUtils.loadTexture("./"+texture_url,new
THREE.UVMapping()); 

child.material = new THREE.MeshBasicMaterial( 
                    {    
                          map: texture,  
                          transparent:false, 
                          opacity: 1
                    }); 

var color = new THREE.Color("rgb(245,210,179)");

child.material.color = color;
child.material.needsUpdate = true;

这里会出现什么问题?

编辑:尝试了不透明度属性,但这里仍然没有运气。但是,如果从代码中删除map: texture,则对象可以显示预期的背景颜色而没有任何透明度。

1 个答案:

答案 0 :(得分:1)

您所看到的是CanvasRenderer的限制。

您不能应用透明纹理并希望它呈现为贴花 - 也就是说,材质颜色会显示出来。

您可以拥有颜色或纹理 - 但不能同时拥有颜色或纹理。

解决方法是修改纹理。

three.js r.63