2015-04-05 57 views
4

如何用無alphaMap的透明黑色製作紋理Lambert材質。三種js黑色透明材質

我有云彩紋理的球體。我需要黑色透明,如果我使用混合,它影響陰影,我需要像MeshPhong材料保持行爲,但只有透明的黑色。

var cloudsMaterial = new THREE.MeshLambertMaterial({ 
         color: 0xffffff, 
         map: THREE.ImageUtils.loadTexture("img/planets/clouds.jpg"), 

         specular : new THREE.Color("rgb(255,255,255)"), 
         shininess : 0.1,        
         depthTest : 0, 
         blending : 1, 
         transparent: true, 
         bumpScale : 1, //0.8 
         bumpMap : THREE.ImageUtils.loadTexture("img/planets/bump.jpg"),              
         }); 

什麼是正確的方法,設置混合或其他屬性?

+1

嘗試'共混:2'或'共混:THREE.AdditiveBlending'。混合模式常量是[here](http://threejs.org/docs/#Reference/Constants/Materials) – 2pha 2015-04-05 18:18:19

+0

加法混合將使紋理...添加劑。我試驗自定義混合,沒有組合做的伎倆。我只需要渲染器清晰的顏色透明(黑色)和其他顏色,因爲它們是像素灰色(50%黑色)的顏色,應該有50%的透明度。我無法使用Alpha Map,因爲它是自定義動畫着色器,alphaMap不是動畫。 – Martin 2015-04-05 21:29:15

+0

有辦法做到這一點,例如定義自定義着色器,但似乎最簡單的方法就是將Alpha通道添加到紋理中。如果你不能修改資源,你可以運行它。 – 2015-09-01 14:18:53

回答

0

解我是使用一個α映射(BW紋理其中白色混濁=少,黑色= 100%不透明):

var t = THREE.ImageUtils.loadTexture("clouds.jpg"); 
var a = THREE.ImageUtils.loadTexture("clouds_alpha.jpg"); 
var cloudsMaterial = new THREE.MeshLambertMaterial({ 
         map  : t, 
         alphaMap : map, 
         blending : 1, 
         transparent: true,              
})