簡體   English   中英

Three.js MeshPhong材質線框照明

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM