2017-12-27 25 views
0

나는 애플의 ARKit을 사용하여 AR 애플리케이션을 만들고 있는데, 나는 박스의 와이어 프레임 윤곽선을 만들고 싶다. 코드에 설명되어 있고 그림에 표시된 것은 상자의 각면에 빗변을 그립니다. 상자의 반대쪽에 모서리도 숨 깁니다. Scene Kit에 대각선을 없애고 상자를 투명하게 만들어 모든 가장자리와 꼭지점을 표시하는 방법이 있습니까?대각선없는 SCNBox의 가장자리 그리기?

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 

Current SCNBox

답변

3

나는 대각선 라인을 제거하는 방법을 모르겠어요.

그러나 재료를 양면으로 설정하면 상자의 반대쪽에 선이 그려집니다.

box.geometry?.firstMaterial?.isDoubleSided = true 

편집 : 여기

enter image description here

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 
+0

깔끔하게 답변하십시오! 단지 이것을하는 더 깨끗한 방법이 있었으면 좋겠다. 스위프트는 내가 생각하기에는 쉽지 않습니다. – Miket25

+0

감사합니다. 그것이 조금 더 솔직한 해결책이 제공되지 않았다는 것에 부끄러움에 동의한다. – Ash

1

당신은 SCNBoxSCNGeometry 객체를 생성 할 때 (! 그 대각선 제거) 원하는 것을 달성하기위한 또 다른 방법입니다 생성 된 지오메트리는 12 개의 삼각형으로 구성되며 fillMode을으로 설정하면, SceneKit은 각 삼각형의 가장자리를 그립니다. 즉, SCNBox을 호출 한 후 직접 지오메트리를 수정하거나 사용자 정의 지오메트리를 작성하지 않으면 SceneKit에서 정확히 그려야 할 라인을 말하면서 그 대각선을 제거 할 수 있다고 생각하지 않습니다.