小编Tak*_*ura的帖子

如何从ARKit录制视频?

现在我正在测试ARKit/SceneKit实现.屏幕的基本渲染有点工作,所以我想尝试将我在屏幕上看到的内容录制成视频.

只是为了录制Scene Kit我找到了这个要点:

//
//  ViewController.swift
//  SceneKitToVideo
//
//  Created by Lacy Rhoades on 11/29/16.
//  Copyright © 2016 Lacy Rhoades. All rights reserved.
//

import SceneKit
import GPUImage
import Photos

class ViewController: UIViewController {

    // Renders a scene (and shows it on the screen)
    var scnView: SCNView!

    // Another renderer
    var secondaryRenderer: SCNRenderer?

    // Abducts image data via an OpenGL texture
    var textureInput: GPUImageTextureInput?

    // Recieves image data from textureInput, shows it on screen
    var gpuImageView: …
Run Code Online (Sandbox Code Playgroud)

opengl-es ios scenekit arkit

11
推荐指数
1
解决办法
6617
查看次数

ARSCNView 和 SCNRenderer 的工作方式不同

我想做一个在屏幕上显示AR并同时记录它的应用程序。最简单的想法是从iOS11的新屏幕录制功能中录制它,但是您无法控制录制行为,所以这不适合我。使用 ReplayKit 是一个好主意,我实际上尝试过,但我无法让它为未知错误工作。我也在以不同的方式研究这个问题,所以让我在这里排除这个话题。

作为我的选择之一,我采用的方法是使用 ARSCNView 进行查看,并在顶部使用单独的 SCNRenderer 专门用于记录。

这种方法看起来不错,因为它在屏幕上显示模型并记录到文件中。
但是渲染结果很奇怪,使用 SCNRenderer 的渲染结果不同,有点像隐藏平面去除不起作用。(见下图,角上的图是SCNRenderer的渲染结果,和记录到文件里的完全一样。)这里不能显示,但是动画也出错了。

应用程序屏幕的屏幕截图

当然,我打算以相同的方式为两者设置所有内容,但是还有其他设置参数或需要考虑的事项吗?还是给模型的方式不对?

场景/渲染器设置的代码如下所示。两个渲染器之间的同步是在 ARKit 的委托方法中完成的,这里没有展示。

// sceneView is instance variable, which is an ARSCNView
sceneView.delegate = self        

//
// Create a empty scenes and wrapper nodes
//
sceneView.scene = SCNScene(named: "art.scnassets/scene.dae")!
secondaryScene = SCNScene(named: "art.scnassets/scene.dae")!        
charNode = SCNNode();
sceneView.scene.rootNode.addChildNode(charNode)        
charNode2 = SCNNode();
secondaryScene.rootNode.addChildNode(charNode2);

//
// Load the model 
//
let url = Bundle.main.url(forResource: "art.scnassets/idle",withExtension: "dae");
let scene = try! SCNScene(url: url!, options: nil); 

for child in idleScene.rootNode.childNodes {
    charNode.addChildNode(child) …
Run Code Online (Sandbox Code Playgroud)

augmented-reality ios scenekit arkit

5
推荐指数
0
解决办法
761
查看次数

Swift 4 Codable:无法排除属性

我正在开发一个简单的音乐音序器应用程序。这种应用程序倾向于具有必须保存/加载的复杂数据结构,因此Codable在Swift4中引入协议对我来说是个好消息。

我的问题是:我必须有一个非编码属性。它不必进行编码,因为它是一个临时变量,仅在应用程序处于活动状态时才保持活动状态。因此,我只是尝试通过实现来排除CodingKey,但编译器仍然给我错误“类型'Song'不符合协议'Decodable'”。

具体来说,我想在下面的代码中排除“ musicSequence”。

class Song : Codable { //Type 'Song' does not conform to protocol 'Decodable'
    var songName : String = "";    
    var tempo : Double = 120;

    // Musical structure
    var tracks : [Track] = [] // "Track" is my custom class, which conforms Codable as well    
    // Tones
    var tones = [Int : ToneSettings] (); // ToneSettings is also my custom Codable class

    var musicSequence : MusicSequence? = nil; // I get the …
Run Code Online (Sandbox Code Playgroud)

ios swift4 codable

2
推荐指数
1
解决办法
798
查看次数

标签 统计

ios ×3

arkit ×2

scenekit ×2

augmented-reality ×1

codable ×1

opengl-es ×1

swift4 ×1