小编Sid*_*kar的帖子

在SceneKit中添加和转换动画

我查看了WWDC中的Banana游戏,它是用Objective-C编写的,它试图将代码转换为swift以导入动画并在它们之间进行转换,但是我遇到了从DAE文件中快速运行动画的问题.

我有来自3DSMAx和openCollada格式的AutoDesk格式的导出器DAE文件.autodeskformat animtation是针对每个骨骼所以我无法按名称调用动画,因此我只需导入场景并执行以下操作,以便在文件加载后立即启动动画.

scene = SCNScene(named: "monster.scnassets/monsterScene.DAE") 
scene2 = SCNScene(named:"monster.scnassets/monster.DAE")

var heroNode = SCNNode()
heroNode = scene.rootNode.childNodeWithName("heroNode", recursively: false)!

var nodeArray = scene2.rootNode.childNodes

for childNode in nodeArray {
    heroNode.addChildNode(childNode as SCNNode)
}
Run Code Online (Sandbox Code Playgroud)

尽管动画在场景开始时播放,但我知道如何存储动画.

如果我使用openCollada导出collada文件.我可以使用以下命令来运行get并运行动画,因为在AutoDesk collada格式的情况下,整个对象只有一个动画而不是每个骨骼.通过这种方式,我也可以使用CAAnimation存储动画.

var anim = scene2.rootNode.animationForKey("monster-1")
childNode.addAnimation(anim, forKey: "monster-1")  
Run Code Online (Sandbox Code Playgroud)

但是然后角色以某个角度运行并且来回运行而不是在同一个地方跑.

使用openCollada也可以更好地照明.我只想使用openCollada而不是autodesk collada export.现在我使用openCollada格式导出场景,使用autodesk导出字符.

如何在SceneKit中快速存储动画并在它们之间进行过渡?谢谢.:d

animation scenekit swift

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

获取dae节点的大小

假设我有一个collada文件,其中有一个框,我将dae文件导入到场景中.现在在场景中导入后我知道dae对象是一个盒子.在将场景添加到场景后,如何获取场景包中的框的尺寸

如果我将节点作为SCNBox导入,则会收到错误消息,指出SNCBox不是SCNNode的子类型.

    floorNode = scene.rootNode.childNodeWithName("floor", recursively: false) as SCNBox
    floorNode?.physicsBody = SCNPhysicsBody.staticBody()
    floorNode?.physicsBody?.categoryBitMask = 2

    let floorGeo: SCNBox  = floorNode.geometry! as SCNBox
Run Code Online (Sandbox Code Playgroud)

如果SCNNode是导入节点的唯一方法,我如何获得维度?

scenekit

8
推荐指数
2
解决办法
5973
查看次数

无法在 Visual Studio 2019 和 2022 中使用 std::counting_semaphore

因此,我尝试在 Visual Studio 2019 和 2022 中使用counting_semaphore,但我得到的只是“std 没有成员counting_semaphore”。

在各个组件中添加 clang 11 后,我在 Visual Studio 2019 中进行了尝试,但仍然遇到相同的错误。然后我就想,好吧,它不支持 C++20。所以我想也许这就是它不起作用的原因。

然后我看到Vs2022 Preview支持C++20。所以我安装了它,包括在内,但我仍然无法执行“std::counting_semaphore<5> slot(5);” 正如它所说,std 没有一个名为计数信号量的成员。

我还在 2022 年预览安装程序的各个组件中安装了 clang12,但仍然无法正常工作。

我不确定我做错了什么。

我在网上看到例子:

https://www.modernnescpp.com/index.php/semaphores-in-c-20 https://en.cppreference.com/w/cpp/thread/counting_semaphore

告诉如何使用它,但是当我将代码放入 vs 中时,它不起作用。

我可以在#include 上“查看代码”,它显示了counting_semaphore 的实现,但我无法使用它!

请有人澄清我做错了什么!

在此输入图像描述

在此输入图像描述

在此输入图像描述

c++ semaphore visual-studio binary-semaphore

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