我正在与AVCapturePhotoOutput
图像,然后使用他们的JPEG表示作为上的SceneKit SCNPlane
纹理也就是相同的纵横比的图像:旋转我SceneKit材料
let image = UIImage(data: dataImage!)
let rectangle = SCNPlane(width:9, height:12)
let rectmaterial = SCNMaterial()
rectmaterial.diffuse.contents = image
rectmaterial.isDoubleSided = true
rectangle.materials = [rectmaterial]
let rectnode = SCNNode(geometry: rectangle)
let pos = sceneSpacePosition(inFrontOf: self.pictCamera, atDistance: 16.5) // 16.5 is arbitrary, but makes the rectangle the same size as the camera
rectnode.position = pos
rectnode.orientation = self.pictCamera.orientation
pictView.scene?.rootNode.addChildNode(rectnode)
sceneSpacePosition
是有点的代码即将CoreMotion映射到SceneKit方向的can be found here on SO。它用于放置矩形,它确实出现在正确的位置,尺寸正确。非常酷。
问题是图像旋转90度到矩形。所以我做了很明显的事情:
rectmaterial.diffuse.contentsTransform = SCNMatrix4MakeRotation(Float.pi/2, 0, 0, 1)
这是行不通的属性;结果图像无法识别。看起来,图像的一小部分已被拉伸到一个巨大的尺寸。我认为这可能是轴心,但我尝试了所有三个结果相同。
任何想法?
我不熟悉SceneKit但会不会是图像(纹理)是不是在它的中心,但它的一个角落和旋转,除非你的形象是完美的正方形,它可以用拉伸/平铺一次旋转渲染,这可能会产生奇怪的结果? –