ios – 将CALayer设置为SCNMaterial的漫反射内容

ios – 将CALayer设置为SCNMaterial的漫反射内容,第1张

概述过去几天,我一直在互联网上搜索无效.不幸的是,关于这个具体问题的苹果文档是模糊的,没有示例代码可用(至少这是我发现的).什么似乎是你可能会问的问题? 我试图设置一个uiview的图层作为用于渲染iPhone模型屏幕(Yep,trippy:P)的材质的内容. iPhone屏幕的UV映射设置为0到1,因此在将纹理/图层映射到纹素之后不会出现任何问题. 所以,而不是让这个层在iPhone上显示出来,与左 过去几天,我一直在互联网上搜索无效.不幸的是,关于这个具体问题的苹果文档是模糊的,没有示例代码可用(至少这是我发现的).什么似乎是你可能会问的问题?

我试图设置一个uivIEw的图层作为用于渲染iPhone模型屏幕(Yep,trippy:P)的材质的内容. iPhone屏幕的UV映射设置为0到1,因此在将纹理/图层映射到纹素之后不会出现任何问题.

所以,而不是让这个层在iPhone上显示出来,与左图像相同,相反,我把这个渲染到iPhone上像右图

正确渲染错误的渲染

还要注意的是,当我设置一个断点并调试实际的iPhone节点并在Xcode中查看它时,会显示一个完全不同的渲染,并且当我继续执行时,该层被半固定:

现在…如何解决这个问题?我试过玩漫漫的内容变换矩阵,但没有任何修改.我也尝试将UIVIEw的大小调整为256×256(因为UV似乎是256×256,如搅拌机中所示 – 3D建模包),但是并没有修复任何东西.

这是图层的代码:

UIVIEw *screen = [[UIVIEw alloc] initWithFrame:self.vIEw.bounds];screen.backgroundcolor = [UIcolor redcolor];UIVIEw *temp = [[UIVIEw alloc] initWithFrame:CGRectMake(0,screen.bounds.size.wIDth,60)];temp.backgroundcolor = [UIcolor colorWithRed:0 green:(112.f/255.f) blue:(235.f/255.f) Alpha:1];UILabel *label = [[UILabel alloc] initWithFrame:CGRectInset(temp.bounds,40,0)];label.frame = CGRectOffset(label.frame,0);label.textcolor = [UIcolor colorWithRed:0 green:(48.f/255.f) blue:(84.f/255.f) Alpha:1];label.text = @"Select Track";label.@R_419_6837@ = [UI@R_419_6837@ @R_419_6837@Withname:@"HelveticaNeue-light" size:30];label.minimumScaleFactor = 0.001;label.adjusts@R_419_6837@SizetoFitWIDth = YES;label.lineBreakMode = NSlineBreakByClipPing;[temp addSubvIEw:label];UIVIEw *separator = [[UIVIEw alloc] initWithFrame:CGRectMake(0,temp.bounds.size.height - 2,temp.bounds.size.wIDth,2)];separator.backgroundcolor = [UIcolor colorWithRed:0 green:(48.f/255.f) blue:(84.f/255.f) Alpha:1];[temp addSubvIEw:separator];[screen addSubvIEw:temp];screen.layer.contentsGravity = kCAGravityCenter;

编辑
甚至更严厉的是,如果我使用以下方式捕获视图的UIImage:

- (UIImage *) imageWithVIEw:(UIVIEw *)vIEw{    UIGraphicsBeginImageContextWithOptions(vIEw.bounds.size,vIEw.opaque,0.0);    [vIEw.layer renderInContext:UIGraphicsGetCurrentContext()];    UIImage * img = UIGraphicsGetimageFromCurrentimageContext();    UIGraphicsEndImageContext();    return img;}

并使用它作为弥漫的内容…一切工作完全正常吗?这是真的很奇怪和令人沮丧,因为图像的大小是完全一样的uivIEw的…

编辑2

我最终只是使用视图的图像作为纹理,这使得事情比我需要的更加静态.我不会将此设为答案,因为即使在很长一段时间内,我仍然会等待正确解决这个问题.所以,如果你有一个答案,这个主题已经打开了很长时间,请碰到它,如果可以的话.这部分的文件太差了.

解决方法 SceneKit docs非常强烈地建议,虽然有些情况下您可以使用动画CALayers作为材料内容,但不包括UIVIEw图层:

SceneKit cannot use a layer that is already being displayed elsewhere (for example,the backing layer of a UIVIEw object).

这表明如果您想为您的材料制作动画内容,则您可以使用完全基于自己或者SpriteKit使用的核心动画.

总结

以上是内存溢出为你收集整理的ios – 将CALayer设置为SCNMaterial的漫反射内容全部内容,希望文章能够帮你解决ios – 将CALayer设置为SCNMaterial的漫反射内容所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1096316.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存