ワイヤフレームを持つmeshphongmaterialをarrayBufferGeometryに表示しようとすると、vetexColorsがTHREE.vertexColorsに設定されます。照明は1つのランダムな顔にしか作用しません。私がMeshBasicmaterialに切り替えると、私は望ましい動作を得る。ワイヤーフレームフォン材料がよさそうだし、ライトアップされてfalseに設定すると:Three.js MeshPhongMaterialワイヤフレーム照明
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;
私は材料の後に頂点法線を再計算する必要がありますか?照明がソリッドな面では機能し、ワイヤーフレームでは機能しない理由はありますか?
あなたはどのような光を使用していますか?私はあなたが使用したのと同じパラメータを持つ 'THREE.PointLight'と' THREE.MeshPhongMaterial'を使って試しました。 – TheJim01