SKVideoNode(嵌入在 SKScene 中)作为场景套件节点的纹理不起作用

2023-12-28

我正在尝试使用 Scenekit 将视频作为纹理映射到 VR 项目的原始圆柱体:嵌入 SKScene 中的 SKVideoNode 作为 SceneKit SCNTube 对象的纹理,但我无法将视频显示为静止图像图像会。下面的 PLAYground 代码应该生成映射到圆柱体的移动视频,但映射不起作用:

编辑:在列表末尾添加单行以修复。下面的代码应该可以工作

import UIKit
import SceneKit      // for 3D mapping
import SpriteKit     // for SKVideoNode
import QuartzCore    // for basic animation
import XCPlayground  // for live preview
import AVFoundation  // for video playback engine

// create a scene view with an empty scene
var sceneView = SCNView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))
var scene = SCNScene()
sceneView.scene = scene


// start a live preview of that view
XCPShowView("The Scene View", view: sceneView)

// default lighting
sceneView.autoenablesDefaultLighting = true

// a geometry object
var tube = SCNTube(innerRadius: 1.99, outerRadius: 2, height: 3)
var tubeNode = SCNNode(geometry: tube)
scene.rootNode.addChildNode(tubeNode)

// video scene


let urlStr = NSBundle.mainBundle().pathForResource("sample", ofType: "mp4")
let url = NSURL(fileURLWithPath: urlStr!)

let asset = AVURLAsset(URL: url, options: nil)
let playerItem = AVPlayerItem(asset: asset)
let player = AVPlayer(playerItem: playerItem)
let videoNode = SKVideoNode(AVPlayer: player)
let spritescene = SKScene(size: CGSize(width: 1211, height: 431))



videoNode.size.width=spritescene.size.width
videoNode.size.height=spritescene.size.height
spritescene.addChild(videoNode)


// configure the geometry object

var myImage = UIImage.init(named: "BandImage.jpeg")

tube.firstMaterial?.diffuse.contents  = spritescene


// set a rotation axis (no angle) to be able to
// use a nicer keypath below and avoid needing
// to wrap it in an NSValue
tubeNode.rotation = SCNVector4(x: 0.0, y: 1.0, z: 0.0, w: 0.0)

// animate the rotation of the torus
var spin = CABasicAnimation(keyPath: "rotation.w") // only animate the angle
spin.toValue = 2.0*M_PI
spin.duration = 3
spin.repeatCount = HUGE // for infinity
tubeNode.addAnimation(spin, forKey: "spin around")

// starts the video, solving the issue
    sceneView.playing = true

我已经在 github 上发布了我的代码(以及一些示例全景内容),供任何想要工作示例代码或有兴趣在开源全景视频播放器上进行合作的人使用:

https://github.com/jglasse/OSVR https://github.com/jglasse/OSVR

事实证明,模拟器(和游乐场)似乎不支持此功能。将上面的代码移动到一个项目并在设备上运行,我终于让它工作了。

所以这个故事的寓意是——如果您使用 SKVideoNodes 作为 Scenekit 的纹理,请使用实际设备进行测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SKVideoNode(嵌入在 SKScene 中)作为场景套件节点的纹理不起作用 的相关文章

  • 如何在 Xcode 4 中在 .h 和 .m 之间切换

    刚刚安装的 Xcode 4 到目前为止一切顺利 除了 Apple 更改了所有键盘快捷键 有人知道如何在 h 和 m 之间切换吗 苹果改变了各种快捷键 但要在标头和实现之间切换 新的快捷键是 You can change it back to
  • Swift 闭包作为 AnyObject

    我尝试使用这个方法 class addMethod 在 Obj c 中使用如下 class addMethod self class selector eventHandler imp implementationWithBlock han
  • 迁移到 ARC 时如何解决“选择器'performSelector:withObject:afterDelay:'没有已知的实例方法”?

    ARC 迁移工具在开始迁移之前拒绝接受此代码 self delegate performSelector selector overlayDismissed withObject self afterDelay 0 委托被迫使用协议来实现此
  • 尝试复制文件时出错

    我正在尝试使用 NSFileManager 将临时文件复制到另一个位置 但是它失败并抱怨其中一个文件不存在 Copy temp file NSError error BOOL exists fileManager fileExistsAtP
  • iOS - NSNotificationCenter 多个UIKeyboard通知

    我有两个视图控制器 我们称它们为 A 和 B 1 在 A 中 我显示一个包含文本字段的 popOver 2 B中有一个UITextView用于简单的文本编辑 我必须管理 A 和 B 中的键盘才能滚动键盘隐藏的内容 我知道如何重新定位内容 我
  • 由于语言错误,Itunes Connect 无法提交

    Thats all it shows https i stack imgur com 0aZm8 png 我不确定它没有告诉我出了什么问题 it shows its linked to the language https i stack
  • 暂停视频录制[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试创建一个应用程序 用户可以在其中从相机录制视频 该应用程序的功能之一必须是文件录制中的暂停 例如 用户通过按 开始 按钮开始
  • 如何请求用户开启定位服务

    我需要我的应用程序来访问用户的当前位置 它在应用程序开始时检查用户是否已设置 如果没有 我需要应用程序显示提示以使其使用位置服务 就像警报视图一样 点击按钮 它应该会带您进入 iPhone 上的位置服务屏幕 您可以通过以下代码检查 loca
  • 使用 Google place API 从 lat long 获取附近的地点

    我正在使用 google place API 即 https maps googleapis com maps api place search json location 33 7167 73 0667 radius 500 type f
  • 无法使用 Xamarin 和 WCF 访问 Web 服务

    我想使用 Xamarin 和 WCF 来使用公共 Web 服务 对于这个演示 我将使用Xamarin iOS 这是我试图使用的 公共 网络服务 http www webservicex net globalweather asmx WSDL
  • 如何使用 Swift 获取 YouTube 频道的所有播放列表?

    我的问题不是关于从一般频道检索视频 我只想获取该频道创建的所有 播放列表 并检索每个播放列表的缩略图 标题和视频数量 这是一个 YouTube 频道示例 正如您所看到的 有很多已创建的播放列表 截至目前 我只能获取某个频道最新上传的视频 在
  • Objective C UIImagePNGRepresentation内存问题(使用ARC)

    我有一个基于 ARC 的应用程序 它从 Web 服务加载大约 2 000 个相当大 1 4MB 的 Base64 编码图像 它将 Base64 解码后的字符串转换为 png图像文件并将其保存到磁盘 这一切都是在一个循环中完成的 我不应该有任
  • 我可以知道 requireGestureRecognizerToFail 到底会做什么吗?

    谁能告诉我下面的代码行到底会做什么 我已经提到过Apples https developer apple com library ios documentation uikit reference UIGestureRecognizer C
  • 应用程序传输安全已禁用,但仍然出现 SSL 握手错误

    我在通过 HTTPS SSL 连接到 API 时遇到问题 我已经使用下面的字典完全禁用了应用程序传输安全性 ATS 尽管 SSL 证书通过了 NSCURL 的所有测试
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • Xcode 9 中的“addingPercentEncoding”是否损坏?

    在 Swift 3 x 和 Xcode 9 beta 2 中 使用addingPercentEncoding https developer apple com documentation swift string 1690785 addi
  • 如何更改已上传的 Firebase 存储图像文件名?

    我需要更改已上传到 firebase 存储中的文件名 因为 在 firebase 存储中上传图像后 我将 url 保存在 firebase 数据库中的特定子 文件夹 下 但是 当我将图像移动到另一个子 文件夹 时 我需要根据新名称更改存储中
  • 自定义 MKAnnotationView - 如何捕获触摸而不忽略标注?

    我有一个自定义 MKAnnotationView 子类 它完全按照我想要的方式显示视图 在那个视图中 我有一个按钮 我想捕获按钮上的事件来执行操作 这很好用 但是 我不希望标注被忽略或消失 基本上 触摸标注中的按钮将开始播放声音 但我想保留
  • 应用程序未通过协同设计验证?

    我在提交 iPhone 申请时遇到问题 我看到了一些类似的问题 但没有找到答案 当我存档项目并单击 验证 时 收到错误消息 应用程序未通过协同设计验证 签名无效 或者未使用 Apple 提交证书进行签名 我假设我在协同设计部分做错了什么 我
  • 为什么这个 SKPhysicsJointPin 不能将这 2 个精灵保持在一起?

    我显然不太了解 SKPhysicsJoint 但是除了 Apple 文档之外 网上的信息还很少 下面的代码有什么问题 我认为应该保持头部和颈部永久连接 我的意图是它们就像两张带有大头针的纸 这样它们可以旋转一点 但不仅仅是完全分开 当我运行

随机推荐

  • 重复的 Apple APNS 推送通知?

    我们在应用程序上使用 APNS 一段时间以来没有发生太多事件 突然我们的用户报告多次收到相同的推送通知 我已经确认 乏味地 我们的服务器只向 Apple 发送一次通知有效负载 但通知会在横幅和通知中心生成 2 个 有时是 3 个 相同的警报
  • react-native-image-picker - 重建后的持久存储

    我已经在屏幕上敲击了一段时间了 尽管我在 git 或 stackoverflow 上找到了所有信息 但还是无法让它工作 我想要实现的目标 所选图像的持久性 来自库或相机 当我重建我的应用程序时 这意味着当我运行时也持久化react nati
  • IOS静态库产品一直是红色的

    我已经为此苦苦挣扎了几天 当我在 XCode 4 中的 IOS 下创建一个新的静态库项目时 我遇到了一个问题 无论是否添加文件作为标头或进行编译 我都能够成功构建 但 a 文件始终为红色 这种情况在调试和发布中都会发生 我读过类似的问题 但
  • Vue js 组合两个组件中的元素

    我正在尝试构建电子商务类型应用程序的结帐页面 在结账时 我有一个来自数据库的订单项目列表 每个订单项目都有价格 数量 您可以选择并组合这些 此外 我必须在其他地方呈现一个包含 插件 的列表到您的购物篮中 这也是 OrderItems 相同的
  • 如何在 Java 中实现抽象静态方法?

    关于无法包含静态抽象 Java 方法存在许多问题 还有很多关于此问题的解决方法 设计缺陷 设计强度 但我找不到任何针对我将很快说明的具体问题的信息 在我看来 创建 Java 的人以及相当多使用 Java 的人并不像我和其他许多人那样将静态方
  • Django DateTimeField() 和 timezone.now()

    好的 当我运行功能测试时出现奇怪的时区问题 Django 1 4 Python 2 7 MySQL 上的 DateTimeField 中的毫秒是否被截断 这是我唯一的理论 模型文件 from django db import models
  • 如何在android中使用opencv从另一帧中减去一帧

    我正在处理视频的帧 我想从其他帧中减去一帧以找出差异 但我不知道如何继续 我尝试将位图帧转换为垫子 然后减去它们 但它不起作用 我正在使用 opencv 2 4 3 作为 mat 函数 谁能告诉我该怎么做 如果可能的话用代码片段进行解释 我
  • 检查 PL/SQL 块中的表中是否存在行的正确方法

    昨天我在写一些任务 突然发现我真的不知道正确且被接受的方式当我使用 PL SQL 时检查表中是否存在行 例如 让我们使用表 PERSON ID Name 显然我can t do 除非有一些秘密方法 比如 BEGIN IF EXISTS SE
  • 将 pnputil 输出解析为特定类的已发布名称

    在 PowerShell 中 输入 pnputil exe e 后 我会得到如下驱动程序信息列表 我需要从列表中获取班级监视器的发布名称并将 oem8 inf 存储到 monitor name 我可以使用哪个命令来搜索class monit
  • gganimate 绘图未显示并保存一堆 .png

    我正在尝试复制一个简单的例子gganimate from here https gganimate com articles gganimate html 问题很简单ggplot部分工作正常 但是当我添加时transition states
  • Apple 未收到带有外国口音字符的推送通知

    我正在发送推送通知 当消息包含外来字符 在我的例子中是土耳其语 时 如 该消息不会到达设备 这是我的代码 message TH S is push passphrase mypass ctx stream context create st
  • C# 中的 RC4 128 位加密

    我需要执行 128 位 RC4 加密 我使用 NET 和 C 是否有内置函数可以执行此操作 如果没有 我发现这个函数可以做到这一点 public void RC4 ref Byte bytes Byte key Byte s new Byt
  • 如何递归配置 svn status 来隐藏被忽略的文件?

    我的目录结构如下所示 project app1 app2 settings py 从内部project目录 我跑了svn propedit svn ignore 这只忽略项目目录中的文件 不包括其子目录 我可以从每个文件夹中再次运行 svn
  • 为什么不是 `Encoding.UTF8.GetBytes(Encoding.UTF8.GetString(x))==x`

    在 NET 中 为什么不是这样 Encoding UTF8 GetBytes Encoding UTF8 GetString x 返回任意字节数组的原始字节数组x It is 提及 https stackoverflow com a 394
  • 使用 out 和 ref 参数时的装箱和拆箱

    当方法接受 ValueType 的 out ref 参数时 是否会发生装箱 拆箱 For ref关键字已经提到过MSDN http msdn microsoft com en us library 14akc2c7 aspx that 不要
  • jQuery 中拖动后阻止点击事件

    我有一个可拖动的 div with a click事件并且没有任何拖动事件 但在我拖动之后 div 点击事件适用于 div 如何防止拖动后的点击事件 function div bind click function this toggleC
  • 在 ARIMA 时间序列建模中提取 Adfuller 测试(平稳性测试)列表中的 p 值 python pandas

    df Col1 Col2 Col3 12 10 3 3 5 2 100 12 10 等等 为时间序列中的 ARIMA 建模编写 adfuller 测试的代码 将计算数据框 df 的所有列的 p 值 import statsmodels ts
  • Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK 不起作用 Android

    嗯 所以 这就是我的问题 当用户按下后底部时 我需要删除所有打开的活动的堆栈 Override public void onBackPressed Intent i new Intent context CrisolMainApp clas
  • 将广播从一个 apk/包发送到另一个 apk/包

    我需要将广播从一个应用程序发送到另一个应用程序 任何帮助 我的应用程序包是 1 com demo database 和 2 com demo list Intent themesIntent new Intent ThemesManager
  • SKVideoNode(嵌入在 SKScene 中)作为场景套件节点的纹理不起作用

    我正在尝试使用 Scenekit 将视频作为纹理映射到 VR 项目的原始圆柱体 嵌入 SKScene 中的 SKVideoNode 作为 SceneKit SCNTube 对象的纹理 但我无法将视频显示为静止图像图像会 下面的 PLAYgr