Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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 仅限three.js线框形状,隐藏边为虚线_Javascript_Three.js_Webgl - Fatal编程技术网

Javascript 仅限three.js线框形状,隐藏边为虚线

Javascript 仅限three.js线框形状,隐藏边为虚线,javascript,three.js,webgl,Javascript,Three.js,Webgl,我正在尝试在three.js中创建特定类型的3D对象。 例如,我想要线框模式下的立方体(因此只显示边)。 但我希望后面的边缘被划破。 说明: 我不知道这是否适用于three.js,或者我是否应该直接使用webgl。 我应该在线框中使用THREE.Mesh,还是在LineDashedMaterial中使用THREE.Line,或者两者都在一起使用?我成功地做到了。 您需要创建三个对象 第一个对象:实体3d对象(我指的是面而不是边) 第二个对象:除虚线外的所有边 第三个对象:除法线以外的所有边(非虚

我正在尝试在three.js中创建特定类型的3D对象。 例如,我想要线框模式下的立方体(因此只显示边)。 但我希望后面的边缘被划破。 说明:

我不知道这是否适用于three.js,或者我是否应该直接使用webgl。 我应该在线框中使用
THREE.Mesh
,还是在
LineDashedMaterial
中使用
THREE.Line
,或者两者都在一起使用?

我成功地做到了。 您需要创建三个对象

第一个对象:实体3d对象(我指的是面而不是边)

第二个对象:除虚线外的所有边

第三个对象:除法线以外的所有边(非虚线)

对于第一个对象,将材质设置为
颜色:false,侧面:三。双面,深度测试:true

第二个对象材质:
颜色:(任意),深度测试:false

第三个对象材质:
颜色:(随你喜欢),深度测试:true


我还使用
polygonOffset:true,polygonOffsetFactor:1,polygonOffsetUnits:1设置所有材质,以消除z-fighting。

这是一个非常酷的想法。我已在以下地址实施了上述答案:


以防有人想看到它发挥作用。

这似乎不再起作用了。如果我理解正确,“可见”边应该是唯一显示的边(实线),如果显示立方体的材质,则将覆盖的边应该显示为虚线。对吗?在您的示例中,我看到一个实心立方体,包含虚线和实线;但是,我只能看到前面的面,因为这些面是实心的。three.js有什么变化吗?或者这是否符合预期?考虑到OPs的问题,我认为这个例子已经不起作用了。。。古怪的从截图上看,我认为这些功能曾经发挥过作用。可能是3.js中的某个内容引起了争论?