专栏首页每日一篇技术文章SceneKit - 提供两种最常用的将序列帧动画渲染到模型上的方式

SceneKit - 提供两种最常用的将序列帧动画渲染到模型上的方式

本节学习目标

提供两种将序列帧动画渲染到模型上的方式

准备一组动画图片跟着教程一起做

image.png

第一种方式 - 使用行为动画(SCNAction)

    // 第一步 - 创建动画组
    var images :[UIImage] = []
    for i in 1...10 {
       let name = "\(i).tiff"
       images.append(UIImage(named:name)!)
    }
    
    // 第二步  给模型节点添加行为动画
    var count = 0
    let action = SCNAction.customAction(duration: 0.1) { (node, progress) in
       print(progress)
        if progress >= 0.1 {
           count += 1
           node.geometry?.firstMaterial?.diffuse.contents = images[count%9]
        }
    }
   // 让行为持续 长一点 就能实现连贯的动画
    planeNode.runAction( SCNAction.repeat(action, count: 1000))

tip:为什么 要设置 progress >= 0.1 而不是 = ,0.1代表我们行为持续的时间,看下面的日志

0.00141505610443735
0.0180852222157303
0.0347495143823253
0.0513938077001841
0.0681048463002569
0.084751595329517
0.100000001490116 // 是一个> 0.1 的值有误差范围

第二种方式 - 将uiimageview 渲染到模型上

    // 第一步 创建持有动画的imageView
    let imageView = UIImageView()
    imageView.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
    var images :[UIImage] = []
    for i in 1...10 {
     let name = "\(i).tiff"
     images.append(UIImage(named:name)!)
    }
    imageView.animationImages = images
    imageView.animationDuration = 1
    imageView.animationRepeatCount = -1
    imageView.startAnimating()
    // 第二步 渲染imageView 到模型上去
    planeNode.geometry?.firstMaterial?.diffuse.contents = imageView

这个时候,你运行程序是没有动画效果的,因为模型是静止的,scenekit 不会对静止的模型实时渲染,这个时候要让模型渲染imageview 有两种办法,第一种就是让模型小幅度运动,但让用户察觉不到,另外一种方式如下

  scnView.isPlaying = true

这个时候运行程序 序列帧动画已经开始执行了 效果如下

gif6.gif

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 到底有多强?苹果的增强现实框架:ARKit

    本篇文章重在 workShop 上苹果工程师的解惑和我对 ARKit 的理解, 最后会简单介绍一下相关技术。

    郭艺帆
  • ARKit:增强现实技术在美团到餐业务的实践

    增强现实(Augmented Reality)是一种在视觉上呈现虚拟物体与现实场景结合的技术。Apple 公司在 2017 年 6 月正式推出了 ARKit,i...

    美团技术团队
  • ARKit 进阶:物理世界

    ARKit的渲染能力是由其他框架实现的,除了苹果的SceneKit, Unity3D、UE, 或者其他自定义的OpenGL、Metal渲染引擎都可以与ARKit...

    郭艺帆
  • iOS - SceneKit显示与交互3D建模(一)

    LinXunFeng
  • 《 iPhone X ARKit Face Tracking 》

    iPhone X前置深度摄像头带来了 Animoji 和 face ID,同时也将 3D Face Tracking 的接口开放给了开发者。本文主要分享一下 i...

    腾讯Bugly
  • 《iPhone X ARKit Face Tracking》

    有幸去 Cupertino 苹果总部参加了 iPhone X 的封闭开发,本文主要分享一下iPhone X上使用 ARKit 进行人脸追踪及 3D 建模的相关内...

    腾讯Bugly
  • iOS ARKit教程:用裸露的手指在空中画画

    最近,Apple公布了名为ARKit的新增强现实(AR)库。对于许多人来说,它看起来只是另一个优秀的AR库,而不是一个值得关注的技术破坏者。但是,如果你看一下过...

    iOSDevLog
  • Metal_入门01_为什么要学习它

    Metal 系列教程 Metal_入门01_为什么要学习它 Metal_入门02_带你走流程

    酷走天涯
  • ARKit 初探

    今年7月Apple推出了AR工具ARKit,着实闪着了大家的眼睛。从目前的评测可以知道 ARKit已经非常成熟,完全可以进行商用了。

    音视频_李超

扫码关注云+社区

领取腾讯云代金券