[英]Three.js MeshPhongMaterial Wireframe lighting
當我嘗試將具有線框的meshphongmaterial查看到arrayBufferGeometry上,其中vetexColors設置為THREE.vertexColors;。 照明僅適用於1張隨機面孔。 當我切換到MeshBasicmaterial時,我得到了想要的行為。 線框設置為假時,丁字褲材質看起來很好並且被點亮:
geometry.addAttribute('position', new THREE.BufferAttribute(vertices, 3));
geometry.addAttribute('color', new THREE.BufferAttribute(colors, 3));
geometry.computeFaceNormals();
geometry.computeVertexNormals();
console.log(geometry);
var material = new THREE.MeshBasicMaterial({
side: THREE.DoubleSide,
wireframe: true,
transparent: false,
vertexColors: THREE.VertexColors, // CHANGED
shininess: 100,
// color: 0xff0000,
shading: THREE.SmoothShading
});
console.log(material);
var terrainMesh = new THREE.Mesh(geometry, material);
terrainMesh.name = 'GRD';
terrainMesh.receiveShadow = true;
terrainMesh.castShadow = true;
console.log(terrainMesh);
return terrainMesh;
材質之后,我是否需要重新計算頂點法線? 照明是否可以用於實體面而不是線框,是否有原因?
這是一個照明問題。
我有各種各樣的燈光,AmbientLight,DirectionalLight代表太陽,還有一個SpotLight跟隨相機目標周圍以突出顯示用戶正在查看的內容。
這些都不是正確地照明線框。 然后,我遵循了MeshPhongMaterial示例,並看到它們使用了點光源。 我認為點光源和點光源之間的唯一區別是方向和目標。 這是不正確的,因為點光源最終起作用了。
另一個問題是,從點光源到線框的照明必須在材質的正面(不管MeshPhongMaterial是否具有側面屬性),而不能從背面。 我的幾何圖形面朝下,因為加載的文件格式與標准相反。 點光源必須放置在幾何形狀下方以照亮材質。 最后,我添加了反向太陽光,使用PointLight從下面照亮了幾何形狀。
我仍然不理解為什么線框僅由PointLight照明,以及為什么它不從背面照明THREE.DoubleSide。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.