2017-12-28 13 views
1

私はどのように私はそれがより鮮明にすることができ非常にアンシャープ結果(See in the image)を取得していますけれども、私は、UIBezierPathsを描き、SCNPlane上でそれらを表示しようとしていますか?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のサイズを大きくしようとしたが、それは唯一のものは小さく。

ありがとうございました!

アンドラス
+0

層のフレームを変更することは、オブジェクトをマッピングするために、より大きなテクスチャにつながるので、良いアイデアです。ベジエパスを同じサイズで表示するには、同じ量だけベジェパスをスケーリングする必要があります。 – mnuages

答えて

0

これは狂気私を運転しているので、うまくいけば、この答えは、この全体につまずく他の誰かを助けます。私はCALayerSCNMaterialテクスチャにマップしてARKitシーンで使用し、すべてがぼやけていた/ピクセル化されていました。何もしなかったCALayerUIScreen.main.scaleへのcontentsScaleプロパティを設定、またshouldRasterizerasterizationScaleで遊んで。

溶液は、他の材料は、テクスチャに適合するように層を変形尺度である、画面のスケールを乗じ、所望のフレームにレイヤのフレームを設定することです。つまり、レイヤーのサイズは、その3倍のサイズにする必要があります。

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

0

はUIBezierPath "平坦度" プロパティ(0.1、0.01、0.001など)を変更しよう。

+0

ありがとうございますが、残念ながら動作しませんでした。私が想像しているレンダリングに問題があります。 –

関連する問題