【问题标题】:Problems rendering edge lines as SVG - three.js将边缘线渲染为 SVG 的问题 - three.js
【发布时间】:2018-05-08 22:28:27
【问题描述】:

我正在尝试在 three.js 中渲染的 3D 对象上绘制边缘线,但是使用 SVGRenderer 时这些线条无法正确渲染。

应用边缘线:

  var geo = new THREE.EdgesGeometry( mesh.geometry );
  var mat = new THREE.LineBasicMaterial( { color: 0x000000, linewidth: 4 } );
  var wireframe = new THREE.LineSegments( geo, mat );
  mesh.add( wireframe );

(取自answer的边缘代码)

这可以与 WebGLRenderer 一起按预期工作:

https://jsfiddle.net/8p7jja9L/23/

但是使用 SVGRenderer 时线条会被遮挡:

https://jsfiddle.net/8p7jja9L/24/


(注意:由于issue,这两个版本都不能在 Chrome 中正确呈现。使用 Firefox 可以查看 WebGL 版本的准确表示。)

【问题讨论】:

    标签: svg 3d three.js


    【解决方案1】:

    您看到的是SVGRenderer 的限制。没有像 WebGLRenderer 那样进行深度测试。

    你能做的最好的就是设置

    wireframe.renderOrder = 1;
    

    这将强制线框在网格之后渲染。但是会渲染整个线框,呈现出透明网格的外观。

    three.js r.88

    【讨论】:

    • 谢谢 - 但是,我什至无法让这个解决方案发挥作用。 renderOrder 不会改变 - 见jsfiddle.net/8p7jja9L/30
    • 对不起,错字。固定。
    • 太棒了,效果很好(在你解释的程度上)。谢谢
    猜你喜欢
    • 2017-02-21
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 2011-11-09
    • 2020-05-28
    • 1970-01-01
    相关资源
    最近更新 更多