首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ThreeCSG布尔操作的意外网格结果

ThreeCSG布尔操作的意外网格结果
EN

Stack Overflow用户
提问于 2014-08-20 19:54:53
回答 1查看 792关注 0票数 2

我正在创建一个场景&使用了一个布尔函数来在我的墙上挖洞。然而,灯光显示,由此产生的形状已经弄糟了脸。我希望表面看起来像一个坚实的一块,而不是碎裂和显示的灯光向后。有人知道我的几何学会出什么问题吗?

booleans对象的代码如下:

代码语言:javascript
复制
//boolean subtract two shapes, convert meshes to bsps, subtract, then convert back to mesh 

var booleanSubtract = function (Mesh1, Mesh2, material) {

    //Mesh1 conversion
    var mesh1BSP = new ThreeBSP( Mesh1 );

    //Mesh2 conversion
    var mesh2BSP = new ThreeBSP( Mesh2 );

    var subtract_bsp = mesh1BSP.subtract( mesh2BSP );
    var result = subtract_bsp.toMesh( material );
    result.geometry.computeVertexNormals();
    return result;
};

现场有两盏灯:

代码语言:javascript
复制
        var light = new THREE.DirectionalLight( 0xffffff, 0.75 );
        light.position.set( 0, 0, 1 );
        scene.add( light );

        //create a point light
        var pointLight = new THREE.PointLight(0xFFFFFF);

        // set its position
        pointLight.position.x = 10;
        pointLight.position.y = 50;
        pointLight.position.z = 130;

        // add to the scene
        scene.add(pointLight);

编辑:使用WestLangley的建议,我能够部分修复墙壁渲染。通过使用material.wireframe=true;我可以看到,在布尔操作之后,我的墙面没有被合并。有办法把他们合并吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-27 23:24:45

你的问题是两个问题造成的。

首先,您应该使用FlatShading

第二,正如在this stackoverflow post中所解释的,MeshLambert材料只计算每个顶点的光照,并在每个脸上插入颜色。MeshPhongMaterial计算每个纹理的颜色。

您需要使用MeshPhongMaterial来避免您正在看到的照明工件。

three.js r.68号

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25413335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档