【问题标题】:SCNRenderer snapshot doesn't always apply antialiasingSCNRenderer 快照并不总是应用抗锯齿
【发布时间】:2020-06-23 10:35:48
【问题描述】:

这就是问题所在。左边是我在 scnView 中看到的。右边是我从 SCNRenderer 的snapshot 那里得到的那个场景。我在 Catalina。

我有一个场景和一种在 UI 中制作该场景快照的方法。这是我的做法

snapshotRenderer.scene = scnView.scene    
snapshotRenderer.snapshot(atTime: mySceneTime, with: mySize, antialiasingMode: SCNAntialiasingMode.multisampling4X)

我尝试了什么

我的理论是snapshot 方法在整个渲染周期结束之前抓取渲染的内容,并且所有抗锯齿样本都已完成(如果有的话)。该理论基于这样一个事实,即我确实在我的scnView 中看到了相同的粗糙边缘一秒钟,直到应用抗锯齿。

所以,没有运气,我尝试用

触发循环
snapshotRenderer.scene!.isPaused = false
snapshotRenderer.isPlaying = false

self.snapshotRenderer.update(atTime: mySceneTime)

还有SCNTransaction.begin().commit()。但没有任何效果。

在上述尝试之后,我还尝试使用DispatchQueue.main.asyncAfter 等待 3 秒,然后调用快照。那也没有用。

【问题讨论】:

  • 视图是否将isJitteringEnabled 设置为true?屏幕截图似乎启用了抗锯齿功能,但也许这只是因为图像在上传时被缩小了。
  • 看起来就是这样!谢谢。如果您创建它,我会批准它作为答案

标签: macos cocoa 3d scenekit


【解决方案1】:

视图是否将isJitteringEnabled 设置为true?屏幕截图似乎启用了抗锯齿,但也许这只是因为图像在上传时被缩小了。

【讨论】:

    猜你喜欢
    • 2014-02-18
    • 1970-01-01
    • 2016-06-28
    • 2011-07-05
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多