标签: reality-composer

RealityKit - 为 ModelEntity 的不透明度设置动画?

model通过在a 的属性上设置材质的颜色ModelEntity,我可以更改对象的不透明度/alpha。但如何将其动画化呢?我的目标是使对象具有完全不透明度的动画,然后让它们淡入设定的不透明度,例如 50%。

有了SCNAction.fadeOpacityin ,这变得特别容易SCNNodeSceneKit

let fade = SCNAction.fadeOpacity(by: 0.5, duration: 0.5)
node.runAction(fade)
Run Code Online (Sandbox Code Playgroud)

AnEntity符合HasTransform,但这仅允许您对比例、位置和方向进行动画处理。与淡入或淡出之类的材质动画无关。如果您创建用于动画隐藏或显示的行为,则效果在 RealityComposer 中,但似乎没有类似的功能来HasTransform提供动画不透明度的功能。

我一直在文档中寻找一些东西,我的下一个想法本质上是创建一个自定义动画来替换这种行为,但它似乎应该可用,但我只是没有找到它。

augmented-reality swift arkit realitykit reality-composer

8
推荐指数
1
解决办法
2437
查看次数

如何防止实体重叠?

我正在尝试使用 RealityKit 创建 AR 体验,但我发现默认情况下,实体在通过用户交互移动时会相互移动并重叠。

我想防止对象重叠并相互进入,这样当用户移动它们时,它们只是撞击/反弹而不会重叠。

我从 RealityComposer 文件中加载实体并将它们添加到场景中(在 catch 块中以及此简化版本中未显示的其他块中):

let entity = try Experience.loadBallSort()
anchorEntity.addChild(entity) 
// anchorEntity is an AnchorEntity that is already attached to the scene
Run Code Online (Sandbox Code Playgroud)

我使用像这样的默认手势来启用用户交互,这就是导致对象重叠的方式,因为它们一旦触摸就不会停止:

arView.installGestures([.rotation, .translation], for: entity)
Run Code Online (Sandbox Code Playgroud)

在 Reality Composer 中,我启用了具有静态运动类型的物理功能,以及每个对象的默认物理材质/碰撞形状。我也尝试过generateCollisionShapes这样使用,但它不会改变碰撞的行为:

entity.generateCollisionShapes(recursive: true)
Run Code Online (Sandbox Code Playgroud)

如何防止 RealityKit 中的实体重叠?

augmented-reality swift arkit realitykit reality-composer

6
推荐指数
1
解决办法
1002
查看次数

ARKit 应用程序无法重播 Reality Composer 中录制的 ARSession

我按照此处的说明使用 Reality Composer 应用程序记录 ARKit mov 会话,但是当我加载 Xcode 并使用 ARKit 应用程序运行时,该应用程序显示黑屏并显示错误:\n该应用程序在没有 .mov 文件的情况下运行正常

\n
2021-07-17 20:57:40.773522-0700 ARKitInteraction[10346:6322385] \xe2\x9a\xa0\xef\xb8\x8f\xe2\x9a\xa0\xef\xb8\x8f\xe2\x9a\xa0\xef\xb8\x8f WARNING [MOVStreamReader]: Cannot grab metadata. Unknwon metadata stream \'CVAUserEvent\'. \xe2\x9a\xa0\xef\xb8\x8f\xe2\x9a\xa0\xef\xb8\x8f\xe2\x9a\xa0\xef\xb8\x8f\n2021-07-17 20:57:40.773645-0700 ARKitInteraction[10346:6322385] MOVReaderInterface - ERROR - Error Domain=com.apple.videoeng.streamreaderwarning Code=0 "Cannot grab metadata. Unknwon metadata stream \'CVAUserEvent\'." UserInfo={NSLocalizedDescription=Cannot grab metadata. Unknwon metadata stream \'CVAUserEvent\'.}\n2021-07-17 20:57:41.614815-0700 ARKitInteraction[10346:6322385] \xe2\x9a\xa0\xef\xb8\x8f\xe2\x9a\xa0\xef\xb8\x8f\xe2\x9a\xa0\xef\xb8\x8f WARNING [MOVStreamReader]: Cannot grab metadata. Unknwon metadata stream \'mdta/com.apple.arkit.arimagedata\'. \xe2\x9a\xa0\xef\xb8\x8f\xe2\x9a\xa0\xef\xb8\x8f\xe2\x9a\xa0\xef\xb8\x8f\n2021-07-17 20:57:41.615833-0700 ARKitInteraction[10346:6322420] \xe2\x9a\xa0\xef\xb8\x8f\xe2\x9a\xa0\xef\xb8\x8f\xe2\x9a\xa0\xef\xb8\x8f WARNING [MOVStreamReader]: Cannot grab metadata. Unknwon metadata stream \'mdta/com.apple.arkit.arimagedata\'. \xe2\x9a\xa0\xef\xb8\x8f\xe2\x9a\xa0\xef\xb8\x8f\xe2\x9a\xa0\xef\xb8\x8f\n2021-07-17 20:57:41.615940-0700 ARKitInteraction[10346:6322420] …
Run Code Online (Sandbox Code Playgroud)

replay arkit realitykit reality-composer

6
推荐指数
1
解决办法
521
查看次数

RealityKit – 以编程方式设置 Reality Composer 实体的文本

在我的 iOS 应用程序中,我想使用新的 Reality Composer 引入 AR 的一部分。

在我的项目中,我使用以下代码加载场景:

let arView = ARView.init(frame: frame)

// Configure the AR session for horizontal plane tracking.

let arConfiguration = ARWorldTrackingConfiguration()
arConfiguration.planeDetection = .horizontal
arView.session.run(arConfiguration)
arView.session.delegate = self

self.view.addSubview(arView)

Experience.loadSceneAsync{ [weak self] scene, error in

print("Error \(String(describing: error))")

guard let scene = scene else { return }

arView.scene.addAnchor(scene)

// THIS IS THE entity that i want to edit programmatically
scene.Label
Run Code Online (Sandbox Code Playgroud)

“scene.label”在我的场景中的文本对象,我想设置文本编程。

我怎样才能做到这一点?这是可能的?

提前致谢

augmented-reality swift arkit realitykit reality-composer

5
推荐指数
1
解决办法
2225
查看次数

判断用户的浏览器是否支持 USDZ 或 Reality Composer 文件格式

我使用 iOS 版 Apple\xe2\x80\x99s Reality Composer 应用程序创建了一些“现实”格式的文件。我很难弄清楚如何在网络上实现它。在查看了一些包含 USDZ 文件的网页后,我最终将其放入我的网站中(链接略有更改):

\n\n
<a href="media/images/ar.reality" rel="ar">\n  <img src="media/images/image.png" />\n</a>\n
Run Code Online (Sandbox Code Playgroud)\n\n

这在 iOS/iPadOS Safari 中工作得很好,但在其他浏览器(如 macOS Safari、Firefox 等)中效果不佳。当您在这些浏览器中单击链接时,它会想要下载现实文件。我想用 JS 编写一个脚本,仅当浏览器支持 USDZ 或现实文件时才会添加锚标记。有没有好的方法可以做到这一点?

\n\n

编辑:

\n\n

即时就是一个很好的例子。它们在 iOS/iPadOS Safari 上有指向 USDZ 文件的锚标记,但在 macOS Safari 或其他第三方浏览器上没有\xe2\x80\x99t。

\n

javascript augmented-reality arkit arquicklook reality-composer

5
推荐指数
1
解决办法
2343
查看次数

在 ARSCNView 中禁用实时摄像头源?

有没有办法禁用实时摄像头并将自定义视频作为 ARSession 中的输入传递?我想通过代码实现录制和回放ARSession

ios scenekit arkit realitykit reality-composer

5
推荐指数
1
解决办法
271
查看次数

RealityKit – 以编程方式向 ModelEntity 添加材质

RealityKit 的文档包括 structs: OcclusionMaterial, SimpleMaterial, 和UnlitMaterial用于将材料添加到ModelEntity.

或者,您可以加载一个带有材料的模型。

我想以ModelEntity编程方式向 a 添加自定义材料/纹理。如何在不将材质添加到 Reality Composer 或其他一些 3D 软件中的模型的情况下即时实现这一点?

augmented-reality swift arkit realitykit reality-composer

4
推荐指数
1
解决办法
3178
查看次数

RealityKit – 如何设置 ModelEntity 的透明度?

在 SceneKit 中,有很多选项,例如

  • 通过使用 UIColor 的 alpha 通道 SCNMaterial.(diffuse|emission|ambient|...).contents
  • 使用SCNMaterial.transparency(从 0.0 到 1.0 的 CGFloat)
  • 使用SCNMaterial.transparent(另一个 SCNMaterialProperty)
  • 使用SCNNode.opacity(从 0.0(完全透明)到 1.0(完全不透明)的 CGFloat)

我想知道是否有办法在 RealityKit 中为 ModelEntity 设置透明度/不透明度/alpha?

augmented-reality swift realitykit reality-composer

3
推荐指数
1
解决办法
1705
查看次数

是否有将 RealityKit 实现到 Swift 游乐场的好方法?

我希望能够将在 Reality Composer 中创建的文件添加到 Swift Playground 中以进行测试。我也认为用作剧本的补充会很有趣。如何将 rcproject 添加到 Playground 中,例如 Apple 提供的场景“Box”的 Experience.rcproject?

augmented-reality swift arkit realitykit reality-composer

3
推荐指数
1
解决办法
498
查看次数

RealityKit 在运行时更改 USDZ 漫反射材质

我正在 Swift 中使用 RealityKit 加载 USDZ 模型。模型加载良好,具有纹理。

但是,我无法更改材质的漫反射属性,材质总是以AnyMaterial.

我可以用 a 完全覆盖材质,SimpleMaterial或者我可以在运行应用程序之前更改 USDZ 漫反射颜色,但在运行时似乎无法做到这一点,有什么想法吗?

我只想能够改变一个属性

/*
Find an entity within the parent, and find the material, test to try and change it's material
**/
private func updateColor(entity: Entity) {

    guard
        let found = entity.findEntity(named: "MyItem"),
        var modelComponent = found.components[ModelComponent] as? ModelComponent,
        let existingMaterial = modelComponent.materials.first else {
        return
    }

    // This is `AnyMaterial` - no diffuse property
    // What can I use here to change the diffuse? …
Run Code Online (Sandbox Code Playgroud)

augmented-reality swift arkit realitykit reality-composer

3
推荐指数
1
解决办法
842
查看次数