2017-12-28 13 views
1

UBezierPaths를 그려서 SCNPlane에 표시하려고합니다. 매우 흐릿한 결과가 발생합니다. (See in the image) 어떻게 더 선명하게 할 수 있습니까?SceneKit CALayer 언샵 드로잉

let displayLayer = CAShapeLayer() 
    displayLayer.frame = CGRect(x: 0, y: 0, width: 200, height: 200) 
    displayLayer.path = path.cgPath 
    displayLayer.fillColor = UIColor.clear.cgColor 
    displayLayer.strokeColor = stroke.cgColor 
    displayLayer.lineWidth = lineWidth 
    let plane = SCNPlane(width:size.width, height: size.height) 
    let material = SCNMaterial() 
    material.diffuse.contents = displayLayer 
    plane.materials = [material] 
    let node = SCNNode(geometry: plane) 

displayLayer.frame의 크기를 늘리려고 시도했지만 크기가 작아졌습니다.

답장을 보내 주셔서 감사합니다. Andras

+0

좋은 생각이다. 베 지어 경로를 같은 크기로 표시하려면 베 지어 경로의 크기를 동일하게 조정해야합니다. – mnuages

답변

0

이것은 나를 미치게 만들었습니다. 그래서이 대답은이 문제에 걸린 다른 누군가를 돕기를 바랍니다. CALayer을 ARKit 장면에서 사용하기 위해 SCNMaterial 텍스처로 매핑 중이며 모든 것이 흐리거나 픽셀 화되었습니다. 의 contentsScale 속성을 UIScreen.main.scale으로 설정하면 아무 것도 수행하지 않았고 shouldRasterizerasterizationScale으로 재생하지 않았습니다.

해결책은 레이어의 프레임을 원하는 프레임으로 설정하고 화면의 배율을 곱한 것입니다. 그렇지 않으면 재질이 텍스처에 맞게 레이어를 스케일 변형합니다. 즉, 레이어의 크기는 원하는 크기의 3 배가되어야합니다. 이 객체를 매핑하는 데 더 큰 텍스처의 원인이됩니다 레이어의 프레임을 변경

let layer = CALayer() layer.frame = CGRect(x: 0, y: 0, width: 500 * UIScreen.main.scale, height: 750 * UIScreen.main.scale)

0

UIBezierPath "flatness"속성 (0.1, 0.01, 0.001 등)을 변경하십시오.

+0

고마워요.하지만 슬프게도 작동하지 않아요. 내가 추측하는 렌더링에 문제가 있습니다. –