swift – 从一个结构转换为另一个结构

我将一些Objective-C代码转换为 Swift代码,我有以下问题:

目标C代码是

SCNNode *textNode  = [SCNNode nodeWithGeometry:text];
textNode.transform = CATransform3DInvert(self.chartNode.worldTransform);

这是我尝试的转换代码:

let textNode = SCNNode(geometry: text)
 textNode.transform = CATransform3DInvert(self.chartNode.worldTransform)

但是,我收到一个错误:’SCNMatrix4不能转换为CATransform3D’

我认识到CATransform3DInvert采用CATransform3D类型的参数,而包含的参数类型为SCNMatrix4.

我尝试了以下的尝试:

textNode.transform = CATransform3DInvert(CATransform3D(self.chartNode.worldTransform))

但这不行.

然后我发现CATransform3D和SCNMatrix4都是结构体,我不确定如何从一个结构转换为另一个结构(或者即使可以在Swift中的结构之间转换)

也许还有一个更简单的方法?

任何帮助将不胜感激 – 谢谢.

好,

Airspeed Velocity提供的链接有一个很好的解释,很容易转换为Swift(实际上是相同的).

CATransform3D等是基于Mac OS X,不适用于iOS – 而是使用iOS SCNMatrix4等.
在链接的帖子 – 头文件中,您可以找到使用的类型为SceneKitTypes.h – 如果要在github上查找副本:https://github.com/andymatuschak/Khan-Academy-Offer-Acceptance-Toy/blob/master/§/SceneKitTypes.h

我使用SCNMatrix4Invert作为上面提到的rintaro,它的工作原理.

那么Swift代码现在是:

let textNode = SCNNode(geometry: text)
textNode.transform = SCNMatrix4Invert(self.chartNode.worldTransform)

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...