绘制SCNBox的边缘时没有对角线?

Mik*_*t25 0 scenekit swift scnnode arkit

我正在使用Apple的ARKit制作AR应用程序,并且想要绘制盒子的线框轮廓。代码中描述的和图片中所示的斜线在盒子的每个面上绘制了斜边。它也隐藏了盒子另一侧的角。场景工具包中是否有办法让我摆脱对角线并使之成为透明的框,从而显示所有边缘和顶点?

let box:SCNNode = SCNNode(geometry: SCNBox(width: CGFloat(0.1), height: CGFloat(0.1), length: CGFloat(0.1), chamferRadius: CGFloat(0)))
box.geometry?.firstMaterial?.fillMode = .lines
box.geometry?.firstMaterial?.diffuse.contents = UIColor.green
Run Code Online (Sandbox Code Playgroud)

当前的SCNBox

Cla*_*lay 5

我不确定如何摆脱对角线。

但是将材料设置为双面将在盒子的另一侧画线。

 box.geometry?.firstMaterial?.isDoubleSided = true
Run Code Online (Sandbox Code Playgroud)

编辑:

这是实现您想要的另一种方法(摆脱那些对角线!)

在此处输入图片说明

let sm = "float u = _surface.diffuseTexcoord.x; \n" +
    "float v = _surface.diffuseTexcoord.y; \n" +
    "int u100 = int(u * 100); \n" +
    "int v100 = int(v * 100); \n" +
    "if (u100 % 99 == 0 || v100 % 99 == 0) { \n" +
    "  // do nothing \n" +
    "} else { \n" +
    "    discard_fragment(); \n" +
    "} \n"

let box = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)

box.firstMaterial?.emission.contents = UIColor.green

box.firstMaterial?.shaderModifiers = [SCNShaderModifierEntryPoint.surface: sm] 

box.firstMaterial?.isDoubleSided = true
Run Code Online (Sandbox Code Playgroud)