swift - 将 GIF 应用于 SCNPlane
问题描述
现在我的 Swift 代码创建了SCNPlane
一个名为we.jpg
. 我想做的是we.jpg
用ball.gif
. material.diffuse.contents
是 UIImage 附加到 SCNPlane 的位置。
let planeGeometry = SCNPlane(width: 0.2, height: 0.35)
let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "we.jpg")
planeGeometry.materials = [material]
解决方案
您可以轻松地将 SCNPlane 的.jpg
纹理替换为.gif
纹理。但请记住,在 SceneKit 中不支持动画 GIF 纹理。
这是一个代码:
import ARKit
import SceneKit
class ViewController: UIViewController {
@IBOutlet var sceneView: ARSCNView! // in case you're using AR app
//@IBOutlet var sceneView: SCNView! // in case you're using VR app
let planeNode = SCNNode()
override func viewDidLoad() {
super.viewDidLoad()
let scene = SCNScene()
sceneView.scene = scene
sceneView.allowsCameraControl = true
planeNode.geometry = SCNPlane(width: 0.2, height: 0.35)
planeNode.position = SCNVector3(0, 0,-0.5)
sceneView.scene?.rootNode.addChildNode(planeNode)
DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) { // 3 sec delay
let image = UIImage(named: "texture.jpg")
self.planeNode.geometry?.firstMaterial?.diffuse.contents = image
}
// Other stuff...
}
//...and you can replace a texture with a button's click:
@IBAction func replaceTexture(_ sender: UIButton) {
let image = UIImage(named: "texture.gif")
planeNode.geometry?.firstMaterial?.diffuse.contents = image
}
}
推荐阅读
- amazon-web-services - 用于 aws 安全组的 Terraform 中的变量值
- javascript - 在 LightningChartJS 中重置 Axis CustomTicks
- javafx - 画布:将鼠标悬停在文本输出上
- dart - Dart 中的 const 构造函数初始化失败
- python - 将熊猫数据框转换为具有所有组合的字典
- python - 用于 INSERT INTO SELECT 模式的 Python 正则表达式/正则表达式
- c# - Mongodb查询以获取特定于c#的嵌套文档的值
- google-apps-script - 谷歌脚本在编辑时将值从一列复制并粘贴到另一列
- javascript - TypeScript如何访问promise方法中的字段
- dictionary - 如何使用反射反转地图