我试图理解 Incisor 中的掩蔽,但在简单的概念验证中遇到了问题。我有两个白盒 GraphicObjects,想要一个遮盖另一个。
这是我所做的: 创建了两个白盒图形对象。 相对于底部框移动了顶部框 (-40, -40)。 将 makeMasker() 函数应用于顶部框以使其成为遮罩。 但是,当我运行代码时,我只看到顶部的白框。我预计底部框的左下角会被顶部框遮住,但这并没有发生。
相关代码如下:
class ProjectMain {
init() {
this.whiteBox = new GraphicObject( nc.graphicAssets.WhiteBox, nc.mainScene, "WhiteBox" );
this.masker = new GraphicObject( nc.graphicAssets.WhiteBox, nc.mainScene, "Masker" );
this.masker.position.x = -40;
this.masker.position.y = -40;
this.masker.makeMasker( nc.masks.MainMask );
}
}
任何人都可以指出我在屏蔽过程中可能遗漏或做错了什么吗?
谢谢你的提问!你很接近。
为了让遮罩器正确遮盖白盒,您需要使白盒本身“遮盖”。为此,请添加以下代码行:
this.whiteBox.makeMasked(nc.masks.MainMask);
这将显示白色框的左下角。
默认情况下,遮罩仅显示被遮罩的内容——本质上是被遮罩覆盖的部分。但是,如果您希望蒙版隐藏其覆盖的区域,从而显示对象的剩余可见区域(在本例中为白色框),您可以反转蒙版。
为此,请将可选的
invertMask
参数作为 true
传递给 makeMasked()
函数:
this.whiteBox.makeMasked(nc.masks.MainMask, true); // true = invert mask, show what is NOT covered
第一个版本(
makeMasked(nc.masks.MainMask)
)将仅显示被遮罩覆盖的白框部分。
第二个版本 (makeMasked(nc.masks.MainMask, true)
) 反转蒙版,使蒙版外部的区域可见,蒙版内部的区域隐藏。
如果您需要进一步说明,请告诉我!