SceneKit,SCNMaterial的翻转方向

Dav*_*mes 7 uiimage material ios ciimage scenekit

对SceneKit来说非常新,所以只需在这里寻求帮助:

我有一个SCNSphere,它的中心有一个摄像头

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

由于相机位于中央,因此图像看起来垂直翻转,当内部文本完全混乱时.

那么如何翻转素材或图像(虽然后来它将是视频中的帧),欢迎任何其他建议.

这个解决方案顺便说一下,我失败了,normalImage作为一种材料应用(但是从球体内部看时图像被翻转),但是分配flippedImage结果没有任何材料(白色屏幕)

    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
Run Code Online (Sandbox Code Playgroud)

Toy*_*yos 13

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

material.diffuse.contentsTransform = SCNMatrix4MakeScale(1,-1,1)
material.diffuse.wrapT = SCNWrapModeRepeat // or translate contentsTransform by (0,1,0)
Run Code Online (Sandbox Code Playgroud)


Ort*_*ntz 12

要水平翻转图像:

material.diffuse.contentsTransform = SCNMatrix4Translate(SCNMatrix4MakeScale(-1, 1, 1), 1, 0, 0)
Run Code Online (Sandbox Code Playgroud)

垂直翻转:

material.diffuse.contentsTransform = SCNMatrix4Translate(SCNMatrix4MakeScale(1, -1, 1), 0, 1, 0)
Run Code Online (Sandbox Code Playgroud)


Dav*_*mes 5

这对我有用,通过缩放它所附加的节点来翻转几何体的法线:

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