gpt4 book ai didi

ios - 旋转我的 SceneKit Material

转载 作者:行者123 更新时间:2023-12-01 19:44:26 34 4
gpt4 key购买 nike

我使用 AVCapturePhotoOutput 拍摄图像,然后使用它们的 JPEG 表示作为 SceneKit SCNPlane 上的纹理,该纹理与图像的宽高比相同:

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 是一段代码 can be found here on SO将 CoreMotion 映射到 SceneKit 方向。它用于放置矩形,它确实以正确的大小出现在正确的位置。一切都非常酷。

问题在于图像相对于矩形旋转了 90 度。所以我做了显而易见的事情:

rectmaterial.diffuse.contentsTransform = SCNMatrix4MakeRotation(Float.pi / 2, 0, 0, 1)

这不起作用属性;生成的图像无法识别。看起来图像的一小部分被拉伸(stretch)到了巨大的尺寸。我认为这可能是轴的问题,但我尝试了所有三个,结果相同。

有什么想法吗?

最佳答案

按照 Alain T 的建议,您正在左上角旋转。如果您向下移动图像,您可能会得到您期望的旋转。

试试这个:

let translation = SCNMatrix4MakeTranslation(0, -1, 0)
let rotation = SCNMatrix4MakeRotation(Float.pi / 2, 0, 0, 1)
let transform = SCNMatrix4Mult(translation, rotation)
rectmaterial.diffuse.contentsTransform = transform

关于ios - 旋转我的 SceneKit Material ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42705516/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com