1
我想知道如何將兩種材質放在同一個物體上... 我有一個用於顏色的着色器材質,但是我也想有一個基礎蘭伯特陰影。Three.js - 將兩種材質放在同一個物體上
下面是代碼:
var material1 = new THREE.ShaderMaterial({
vertexShader: document.getElementById('vertexShader').textContent,
fragmentShader: document.getElementById('fragmentShader').textContent
});
var material2 = new THREE.MeshLambertMaterial({
color: 0xffffff,
});
var materials = [material1, material2];
var group = new THREE.Object3D();
var plane = new THREE.Mesh(geometry, materials);
你能幫助我嗎?
你能不能簡單地設置蘭伯特着色器的顏色?要將多個材質設置爲單個網格,您可以使用MeshFaceMaterial,但不會覆蓋它們,就像聽起來像您想要的那樣。這聽起來像是你只是想將lambert陰影添加到你自己的自定義着色器中,這應該不會太難。 – 2pha
@ 2pha這正是我想要的。我找到了一個關於lambert陰影的GLSL教程,但它使用了着色器代碼中創建的燈光。我不知道如何使用「全球照明」。無論如何,這裏是:https://www.opengl.org/sdk/docs/tutorials/ClockworkCoders/lighting.php – paulolol
一個好的開始方法是看看three.js中的材質是如何放在一起的。你可以在[ShaderLib.js](https://github.com/mrdoob/three.js/blob/master/src/renderers/shaders/ShaderLib.js)中看到它。 實際着色器塊[HERE](https://github.com/mrdoob/three.js/tree/master/src/renderers/shaders/ShaderChunk)。 [我自己的着色器材質實驗](http://blog.2pha.com/experimenting-threejs-shaders-and-shadermaterial)可以幫助你。 – 2pha