作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试实现自定义 CIFilter 以与我的 ARSCNView 中的 SCNNode 一起使用。不幸的是,它只是在节点应该在屏幕上的位置创建了一个灰色矩形。我也尝试过使用内置的 CIFilters 来仔细检查我的代码,但无济于事。
在其他一些 SO 帖子上,我读到 CIFilter 仅在选择 OpenGL 作为 SCNView 的渲染 API 时才起作用,因为 CoreImage 不能很好地与 Metal 配合使用,据我所知,不可能让 ARSCNView 与OpenGL。上述帖子是 2016 年的,所以我想知道是否有任何变化。
我想要实现的是在屏幕上勾勒/突出显示对象,以反馈用户有关对象选择的信息。我通过添加着色器修改器实现了一些可用的功能,但它对着色的控制有限。我真的不想把所有的阴影都压在自己身上。
下面是我的 CIKernel 用于概述,它在 Quartz Composer 上工作得很好。
非常感谢任何帮助和信息。
kernel vec4 outline(sampler src) {
vec2 texturePos = destCoord();
float alpha = 4.0f * sample(src, texturePos).a;
float thickness = 5.0f;
alpha -= sample(src, texturePos + vec2(thickness, 0.0f)).a;
alpha -= sample(src, texturePos + vec2(-thickness, 0.0f)).a;
alpha -= sample(src, texturePos + vec2(0.0f, thickness)).a;
alpha -= sample(src, texturePos + vec2(0.0f, -thickness)).a;
if (alpha > 0.9f) {
vec4 resultCol = vec4(1.0f, 1.0f, 1.0f, alpha);
return resultCol;
}else{
vec4 resultCol = sample(src, texturePos);
return resultCol;
}
}
最佳答案
我也遇到过类似的问题。原因是因为我们做了如下设置。 CIFilter 可以通过删除此设置来实现。我没有分析细节,但如果有帮助的话!
sceneView.antialiasingMode = .multisampling4X
sceneView.contentScaleFactor = 1.3
关于ios - 如何在 ARKit 中使用 SCNNode 过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45661011/
我是一名优秀的程序员,十分优秀!