2017-03-09 52 views
1

在A型框中啓用添加劑混合的最簡單方法是什麼?我看到THREE.MeshStandardMaterial有一個blending屬性,看起來像我所需要的,但它不會被A-Frame material組件暴露。如何啓用A幀中的添加劑混合?

我是否必須編寫自定義組件來獲取實體的材質並自己設置此屬性?似乎這個共同的要求應該已經被照顧到了?

回答

3

我繼續創造了這個我自己的混合模式組成:

AFRAME.registerComponent('blendmode', { 
    schema: { 
    mode: {default: 'AdditiveBlending'} //Available Modes are: var blendings = [ "NoBlending", "NormalBlending", "AdditiveBlending", "SubtractiveBlending", "MultiplyBlending" ]; 
    }, 

    dependencies: ['material'], 

    update: function() { 
    // entity data 
    var el = this.el; 
    var data = this.data; 

     if (el.components.hasOwnProperty("material")) { 
      var mat = el.components.material.material; 
      mat.blending = THREE[data.mode]; 
     } 
    } 
}); 
+1

很好的解決方案!像這樣的短元件通常是我所做的,但也許值得PR支持'blending'選項。還要注意,如果實體不*已經有一個'material'組件,那麼這個'dependencies'條目將會添加它(如我認爲的A-Frame 0.5.0)。 –

+1

圍繞它的一種方法是'el.getObject3D('mesh')。material',或者偵聽'object3dset'事件以知道網格何時從模型中加載。 –