线框线宽

时间:2017-08-07 11:26:16

标签: three.js

如何添加线宽比1的线框? 与使用LineBasicMaterials一样,linewidth属性不起作用,我无法使其与MeshLines一起使用。

谢谢

PS

     loader.load('assets/' + baseName + '.obj', function (object) {
            object.traverse(function (child) {
                if (child instanceof THREE.Mesh) {
                    child.material.map = texture;
                    let geo = new THREE.EdgesGeometry( child.geometry ); // or WireframeGeometry
                    let mat = new THREE.LineMaterial( {
                        color: 0x000000,
                        linewidth: 10, // in pixels
                        vertexColors: THREE.VertexColors,
                    } );
                    let wireframe = new THREE.LineSegments( geo, mat );
                    child.add( wireframe );
                    child.material.emissive.r = 0.98;
                    child.material.emissive.g = 0.98;
                    child.material.emissive.b = 0.98;
                }
            });

1 个答案:

答案 0 :(得分:0)

当前的WebGL2基于OpenGL ES 3.0。在台式机上,它运行在OpenGL 4或ANGLE上,而两者都限制为1个线框。

您可以使用THREE.MeshLine引用:https://github.com/spite/THREE.MeshLine

var line = new MeshLine();
line.setGeometry( geometry ); //Create your own required geometry 

line.setGeometry( geometry, function( p ) { return 2; } ); // makes width 2 * lineWidth

请参考原始文档以获取更多见识。

PS:到目前为止,还没有简单的方法(内部工作在逻辑上更简单)来使WebGL的线条更粗。