Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 堆叠多个几何图形并使用EdgeHelper时缺少边_Javascript_Three.js - Fatal编程技术网

Javascript 堆叠多个几何图形并使用EdgeHelper时缺少边

Javascript 堆叠多个几何图形并使用EdgeHelper时缺少边,javascript,three.js,Javascript,Three.js,我不熟悉three.js,所以我不确定我是否犯了错误,或者我的方法是错误的 查看我的演示使用左右箭头导航: 问题是内部边缘没有显示: 其想法是通过使用带有高亮显示边框的实体形状来实现块状外观 我发现最好的方法是使用基本材质的BoxGeometry,并使用EdgeHelper添加轮廓。 传递的参数形状只是一个坐标列表。 我也不确定是否要像这样将生成的网格添加到一起。我这样做是为了以后可以轻松地将其从场景中移除,到目前为止,这还不是一个问题。 代码如下: function draw_shape(

我不熟悉three.js,所以我不确定我是否犯了错误,或者我的方法是错误的

查看我的演示使用左右箭头导航:

问题是内部边缘没有显示:

其想法是通过使用带有高亮显示边框的实体形状来实现块状外观

我发现最好的方法是使用基本材质的BoxGeometry,并使用EdgeHelper添加轮廓。 传递的参数形状只是一个坐标列表。 我也不确定是否要像这样将生成的网格添加到一起。我这样做是为了以后可以轻松地将其从场景中移除,到目前为止,这还不是一个问题。 代码如下:

function draw_shape(shape, offset, colour) {
        var mesh = new THREE.Mesh();
        for (var i = 0; i < shape.length; i++) {
            var geometry = new THREE.BoxGeometry(BLOCKSIZE, BLOCKSIZE, BLOCKSIZE);
            var material = new THREE.MeshBasicMaterial({ color: colour });
            var tmp = new THREE.Mesh(geometry, material);
            tmp.position.x = shape[i][0] * BLOCKSIZE - offset[0];
            tmp.position.y = shape[i][1] * BLOCKSIZE - offset[1];
            tmp.position.z = shape[i][2] * BLOCKSIZE - offset[2];
            mesh.add(tmp)
            var outline = new THREE.EdgesHelper(tmp, 0x000000);
            outline.material.linewidth = 2;
            mesh.add(outline);
        }
        return mesh;
}

提前感谢您的回复

好的。我是这样假装的:

var geometry = new THREE.BoxGeometry(BLOCKSIZE - 1 , BLOCKSIZE - 1, BLOCKSIZE - 1);
这意味着我把盒子缩小了1,这给nex盒子带来了一个小间隙。这很有效,我很早就试过了,但看起来很糟糕,因为差距太明显了

然后,我突然想再试一次,同时大大增加BLOCKSIZE,使差距相对较小。同时,我以同样的因素将相机移得更远。例如,我将块大小从30增加到90,并将相机从大约200移动到600

结果令人满意