首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SceneKit,SCNMaterial的反转方向

SceneKit,SCNMaterial的反转方向
EN

Stack Overflow用户
提问于 2015-10-22 15:27:44
回答 4查看 5.3K关注 0票数 8

对于SceneKit非常陌生,所以只需要在这里寻求帮助:

我有一个SCNSphere,它的中心有一个照相机

我创建一个SCNMaterial,doubleSided,并将其分配给球体

因为相机在中心,图像看起来垂直翻转,当里面有文字时,会把事情搞得一团糟。

因此,我如何翻转材料,或图像(虽然以后将是帧从一个视频),任何其他建议都是受欢迎的。

这个解决方案,顺便说一句,在我身上失败了,normalImage是作为一个材料应用的(但是当从球体内部观看时,图像会被翻转),但是分配flippedImage不会导致任何材料(白色屏幕)。

代码语言:javascript
复制
    let normalImage = UIImage(named: "text2.png")
    let ciimage = CIImage(CGImage: normalImage!.CGImage!)
    let flippeCIImage = ciimage.imageByApplyingTransform(CGAffineTransformMakeScale(-1, 1))
    let flippedImage = UIImage(CIImage: flippeCIImage, scale: 1.0, orientation: .Left)

    sceneMaterial.diffuse.contents = flippedImage
    sceneMaterial.specular.contents = UIColor.whiteColor()
    sceneMaterial.doubleSided = true
    sceneMaterial.shininess = 0.5
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-10-23 08:15:56

您可以使用SCNMaterialProperty的contentsTransform属性来翻转映射,而不是缩放节点(这可能会破坏您的照明):

代码语言:javascript
复制
material.diffuse.contentsTransform = SCNMatrix4MakeScale(1,-1,1)
material.diffuse.wrapT = SCNWrapModeRepeat // or translate contentsTransform by (0,1,0)
票数 17
EN

Stack Overflow用户

发布于 2017-05-09 14:35:40

要水平翻转图像:

代码语言:javascript
复制
material.diffuse.contentsTransform = SCNMatrix4Translate(SCNMatrix4MakeScale(-1, 1, 1), 1, 0, 0)

垂直翻转:

代码语言:javascript
复制
material.diffuse.contentsTransform = SCNMatrix4Translate(SCNMatrix4MakeScale(1, -1, 1), 0, 1, 0)
票数 16
EN

Stack Overflow用户

发布于 2015-10-22 16:22:33

这对我有用,通过缩放它所连接的节点来翻转几何图形的法线:

sphereNode.scale = SCNVector3Make(-1,1,1)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33284781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档