[英]SKCropNode masking edge anti-aliasing
我創建了一個圓形蒙版,並使用精靈工具包SKCropNode類為蒙版內的精靈設置動畫。 但是掩模的邊緣看起來像素化。
有沒有辦法使用抗鋸齒來平滑邊緣?
如果要屏蔽任何具有抗鋸齒效果的SKNode / SKSpriteNode,則可以使用SKEffectNode而不是SKCropNode。 它也適用於動畫節點。 這是一個例子:
// Set up your node
SKNode *nodeToMask = [SKNode node];
// ...
// Set up the mask node
SKEffectNode *maskNode = [SKEffectNode node];
// Create a filter
CIImage *maskImage = [[CIImage alloc] initWithCGImage:[UIImage imageNamed:@"your_mask_image"].CGImage];
CIFilter *maskFilter = [CIFilter filterWithName:@"CISourceInCompositing"
keysAndValues:@"inputBackgroundImage", maskImage, nil];
// Set the filter
maskNode.filter = maskFilter;
// Add childs
[maskNode addChild:nodeToMask];
[scene addChild:maskNode];
來自官方文檔:
如果掩模中的像素具有小於0.05的α值,則圖像像素被遮蔽。
因此,SKCropNode不支持每像素alpha值。 它要么繪制像素,要么不繪制像素。 如果alpha(由抗鋸齒使用)對您很重要,您應該考慮替代路線。 例如:
截至目前(2018年6月),我可以確認SKCropNode將進行每像素alpha混合。 如果裁剪節點具有SKSpriteNode作為蒙版,並且蒙版節點使用具有消除鋸齒蒙版圖像的紋理,裁剪節點將執行正確的混合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.